【发布时间】:2020-07-01 17:18:30
【问题描述】:
我编写了一个程序(称为威士忌),现在我想在启动机器时启动它(我正在使用它创建自主船的 Raspberry Pi)。于是我创建了文件/lib/systemd/system/whisky.service:
[Unit]
Description=Whisky Boat Program
After=network.target
StartLimitIntervalSec=0
[Service]
ExecStart=/home/pi/whisky/run
KillMode=process
IgnoreSIGPIPE=true
Restart=always
RestartSec=3
User=root
Type=simple
[Install]
WantedBy=multi-user.target
我使用systemd-analyze verify whisky.service 验证了该文件的 systemd 格式是否正确。
当我现在运行sudo systemctl start whisky 时,我没有得到任何输出(表明没有错误)。
sudo systemctl status whisky 给了我以下输出:
* whisky.service - Whisky Boat Program
Loaded: loaded (/lib/systemd/system/whisky.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Fri 2020-03-20 15:03:35 CET; 792ms ago
Process: 8621 ExecStart=/home/pi/whisky/run (code=exited, status=203/EXEC)
Main PID: 8621 (code=exited, status=203/EXEC)
Mar 20 15:03:35 raspberrypi systemd[1]: whisky.service: Unit entered failed state.
Mar 20 15:03:35 raspberrypi systemd[1]: whisky.service: Failed with result 'exit-code'.
文件/home/pi/whisky/run 实际上是一个bash 脚本,它反过来启动程序。为了检查 systemd 是否启动了那个 bash 脚本,我在其中添加了第一行:mkdir /home/pi/RUNNING_FROM_SYSTEMD。虽然没有创建目录RUNNING_FROM_SYSTEMD,所以似乎systemd甚至没有尝试运行文件/home/pi/whisky/run。
有人知道我在这里做错了什么吗?
【问题讨论】:
-
journalctl -xr的输出是什么?
标签: linux bash service systemd systemctl