如何在 Supervisor 配置文件中设置执行命令的工作目录?
作者:互联网
示例配置
假设我们有一个程序 test
需要在特定的目录 /path/to/working/directory
下运行,并且可执行文件路径为 /path/to/your/executable
。你可以编辑或创建相应的配置文件,如 /etc/supervisor/conf.d/test.conf
,并添加以下内容:
[program:test]
command=/path/to/your/executable --some-option
directory=/path/to/working/directory
autostart=true
autorestart=true
startsecs=10
stderr_logfile=/var/log/test.err.log
stdout_logfile=/var/log/test.out.log
user=your_username
environment=KEY1="value1",KEY2="value2"
Ini
配置参数说明
command
:要运行的命令及其参数。directory
:命令执行时的工作目录。autostart
:当 Supervisor 启动时,是否自动启动该进程。autorestart
:如果进程意外退出,是否自动重启。startsecs
:定义 Supervisor 在启动进程后等待多少秒认为该进程启动成功。防止因启动太快而误判为启动失败。stderr_logfile
:标准错误输出的日志文件路径。stdout_logfile
:标准输出的日志文件路径。user
:运行进程的用户。environment
:设置进程执行时的环境变量。
应用配置更改
在完成配置文件的创建或修改后,重新加载并更新 Supervisor 的配置:
sudo supervisorctl reread
sudo supervisorctl update
Bash
然后尝试启动程序:
sudo supervisorctl start test
Bash
检查运行状态
你可以通过以下命令检查进程的运行状态:
sudo supervisorctl status
Bash
如果进程未能启动,请检查日志文件以获取详细的错误信息:
sudo tail -f /var/log/test.err.log
sudo tail -f /var/log/test.out.log
Bash
日志文件通常会提供更多信息,帮助你诊断启动失败的原因。
例子
假设你有一个 Python 脚本需要运行,并且该脚本文件位于 /home/user/projects/my_project/main.py
,工作目录为 /home/user/projects/my_project/
,你可以创建如下配置:
[program:my_python_script]
command=/usr/bin/python3 main.py
directory=/home/user/projects/my_project
autostart=true
autorestart=true
startsecs=10
stderr_logfile=/var/log/my_python_script.err.log
stdout_logfile=/var/log/my_python_script.out.log
user=user_name
environment=PYTHON_ENV="production",DEBUG="true"
Ini
确保你已经创建了日志文件和具有相应的权限:
sudo touch /var/log/my_python_script.err.log /var/log/my_python_script.out.log
sudo chown user_name:user_group /var/log/my_python_script.err.log /var/log/my_python_script.out.log
Bash
重新加载、更新配置并启动:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start my_python_script
标签: 来源: