主管 - 程序的目录选项不起作用
Supervisor - program's directory option not working
我想由主管执行 python 脚本。
我在supervisord.conf中设置了目录选项
我在这样的命令选项中使用了相对路径。
[supervisord]
http_port=/var/tmp/supervisor.sock ; (default is to run a UNIX domain socket server)
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (logging level;default info; others: debug,warn)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process descriptors;default 200)
directory=/root ; (default is not to cd during start)
[supervisorctl]
serverurl=unix:///var/tmp/supervisor.sock ; use a unix:// URL for a unix socket
[program:test]
directory=/root/test
command=python ./test.py
autostart=true
在python脚本中,我使用了这样的相对路径。
textfile = open('./textfile')
我可以通过 /root/test
目录中的 python ./test.py
成功执行此 python 脚本。
但是当我启动 supervisor 时,我得到了这个错误。
python: can't open file './test.py': [Errno 2] No such file or directory
接下来,我在supervisor.conf的命令选项中使用了绝对路径,就像这样。
[program:test]
directory=/root/test
command=python /root/test/test.py
我遇到了这个错误。
Traceback (most recent call last):
File "/root/test/test.py", line 6, in <module>
textfile = open('./textfile')
IOError: [Errno 2] No such file or directory: './textfile'
有没有办法设置脚本执行的目录?
除了在 test.py
中使用 textfile
的绝对路径外,您还可以通过在调用 textfile = open('./textfile')
:
import os
abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)
见python: Change the scripts working directory to the script's own directory
我想由主管执行 python 脚本。
我在supervisord.conf中设置了目录选项 我在这样的命令选项中使用了相对路径。
[supervisord]
http_port=/var/tmp/supervisor.sock ; (default is to run a UNIX domain socket server)
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (logging level;default info; others: debug,warn)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process descriptors;default 200)
directory=/root ; (default is not to cd during start)
[supervisorctl]
serverurl=unix:///var/tmp/supervisor.sock ; use a unix:// URL for a unix socket
[program:test]
directory=/root/test
command=python ./test.py
autostart=true
在python脚本中,我使用了这样的相对路径。
textfile = open('./textfile')
我可以通过 /root/test
目录中的 python ./test.py
成功执行此 python 脚本。
但是当我启动 supervisor 时,我得到了这个错误。
python: can't open file './test.py': [Errno 2] No such file or directory
接下来,我在supervisor.conf的命令选项中使用了绝对路径,就像这样。
[program:test]
directory=/root/test
command=python /root/test/test.py
我遇到了这个错误。
Traceback (most recent call last):
File "/root/test/test.py", line 6, in <module>
textfile = open('./textfile')
IOError: [Errno 2] No such file or directory: './textfile'
有没有办法设置脚本执行的目录?
除了在 test.py
中使用 textfile
的绝对路径外,您还可以通过在调用 textfile = open('./textfile')
:
import os
abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)
见python: Change the scripts working directory to the script's own directory