我正在开发一些服务脚本,需要在Raspbian(Jessie)上启动时执行,并且我决定使用systemd。我刚开始阅读一些关于如何使用它的快速教程,但是我遇到了环境方面的问题。如何为systemd服务的进程加载环境变量?
所执行的过程需要(在他们的代码),我在一个shell脚本设置一些环境变量,但他们不加载,尽管使用的EnvironmentFile = /路径/要/我的/文件...我有一个服务执行一个Python3脚本和另一个Node.js应用程序。
自昨天以来,我一直在寻找替代解决方案,但似乎没有任何工作......也许我只是不明白systemd是如何工作的? 必须能够这样做,那么我问你...
这里是我的单元文件:
对于python脚本:
[Unit]
Description=My awesome python script
After=multi-user.target
[Service]
ExecStart=/usr/local/bin/python3.6 /home/pi/Desktop/myawesomescript.py
Restart=Always
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=mypython
User=pi
EnvironmentFile=/home/pi/.bash_vars
[Install]
WantedBy=multi-user.target
节点应用:
[Unit]
Description=My awesome Node.js socket.io app
Requires=After=mypython.service # Requires the python script to be running
[Service]
ExecStart=/usr/bin/node /home/pi/Desktop/myawesomenodeapp/src/index.js
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=mynodeapp
User=pi
EnvironmentFile=/home/pi/.bash_vars
[Install]
WantedBy=multi-user.target
感谢您抽出宝贵的时间和歉意为我的英语不好!
PS:请让我知道如果你需要更多的信息
万一检查出[不死](https://immortal.run/post/run.yml/) – nbari
事实上,DarkKnight的回答让我明白我错过了。 无论如何谢谢你的建议,我会看看,看看它的功能可能是有用的! – ozonePowered