(environment) python run.py
我想在开始时运行这个脚本. (我正在使用ubuntu)这是我的服务:
[Unit]Description=My Script ServiceAfter=multi-user.target[Service]Type=idleExecStart=/home/user/anaconda3/bin/python /home/user/space/run.py[Install]WantedBy=multi-user.target
顺便说一下,我无法运行这个脚本,但我可以运行任何不在环境中的脚本.如何在启动时运行python脚本(virtualenv)?
sudo systemctl status user_sent● user_sent.service - Mail ServiceLoaded: loaded (/lib/systemd/system/user_sent.service; enabled; vendor preset: enabled)Active: failed (Result: exit-code) since xxxxx 16:30:20 MSK; 3s agoProcess: 3713 ExecStart=/usr/bin/python run.py (code=exited, status=200/CHDIR)Main PID: 3713 (code=exited, status=200/CHDIR)您的单位文件是正确的.如果你想在venv下运行任何python文件,你只需要像在/ home / user / anaconda3 / bin / python中那样引用venv目录中的python二进制文件
[Unit]Description=My Script ServiceAfter=multi-user.target[Service]Type=idleExecStart=/home/user/anaconda3/bin/python /home/user/space/run.py[Install]WantedBy=multi-user.target
突出的是你的单位失败的原因:代码=退出,状态= 200 / CHDIR.这很可能表示您的脚本中存在问题.
如果要调试它,您将执行以下操作:
>运行您添加到ExecStart的命令=与root下的命令完全相同,以查看问题是否由您的脚本引起.
>如果运行没有错误,请使用journalctl -u< unit_name>查看日记.这应该可以为您提供有关您单位问题的更多信息.
后圣经
以下两个[服务]选项都有效:
ExecStart=/home/user/anaconda3/bin/python /home/user/space/run.py
要么
WorkingDirectory=/home/user/spaceExecStart=/home/user/anaconda3/bin/python run.py
唯一的区别是脚本中的相对调用从不同的目录运行.因此,如果您的脚本包含一行打开(“my_file”,“w”),则在第一个示例中,它将创建文件/ my_file,第二个文件/ home / user / space / my_file.