一般在终端通过命令行用conda命令激活虚拟环境时用如下命令:
conda activate env_name
但是如果我们在shell脚本中用这个命令激活某个环境时,会提示conda:not found,或者CondaError: Run ‘conda init‘ before ‘conda activate‘
我们在shell中要使用类似下面的命令:
source /YOUR_CONDA_PATH/bin/activate your_env
首先我们用whereis命令找一下activate的路径.
> root@server01:/data/apps# whereis activate
activate: /root/miniforge3/bin/activate
然后我们在shell中用如下命令激活某个conda环境。注意
.sh 文件第一行必须有 shebang(例如 #!/bin/bash),否则 pm2 可能不知道用哪个解释器运行。
#!/bin/bash #用bash
source /path/to/anaconda3/bin/activate your_environment_name
echo 'conda envs is loading ......'
python yourApp.py
然后用下面命令执行脚本即可.
bash yourShell.sh #用bash
另外,需要注意的是,在shell脚本里面激活conda环境,在命令行是看不到进入conda环境的,因为shell脚本结束之后,conda环境就结束了.不要以为shell终端没有进入conda环境就以为进入conda环境出错或异常了。
如果用pm2 守护:
1. 最简单的方法:直接运行 .sh 文件
pm2 start ./start.sh
但是要注意:
-
.sh文件第一行必须有 shebang(例如#!/bin/bash),否则 pm2 可能不知道用哪个解释器运行。 -
你需要先给脚本可执行权限:
chmod +x start.shX
2. 指定解释器来运行 .sh 文件
如果你的 .sh 没有可执行权限,或者想明确指定 bash 来执行:
pm2 start start.sh --interpreter bash
3. 给进程起名字(方便管理)
pm2 start start.sh --name my-script
这样你可以用:
pm2 restart my-script
pm2 stop my-script
pm2 logs my-script
4. 用 ecosystem.config.js 管理(推荐方式)
在项目目录下新建一个配置文件:
module.exports = {
apps: [
{
name: "my-script",
script: "./start.sh",
interpreter: "bash"
}
]
};
然后执行:
pm2 start ecosystem.config.js
5. 保存并开机自启(如果需要)
pm2 save
pm2 startup