【发布时间】:2017-10-04 10:20:42
【问题描述】:
我正在开发一些需要在 Raspbian (Jessie) 上启动时执行的服务脚本,我决定使用 systemd。我刚开始阅读一些关于如何使用它的快速教程,但是我在环境方面遇到了问题。
执行的进程需要(在它们的代码中)我在 shell 脚本中设置的一些环境变量,但它们没有被加载,尽管使用了 EnvironmentFile=/path/to/my/file... 我有一个服务执行 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:如果您需要更多信息,请告诉我
【问题讨论】:
-
以防万一签出immortal
-
实际上,DarkKnight 的回答帮助我了解了我错过了什么。无论如何感谢您的建议,我会看看它的功能是否有用!
标签: bash shell environment-variables raspbian systemd