【问题标题】:Systemd service leaves out command in scriptSystemd 服务在脚本中遗漏了命令
【发布时间】:2018-02-26 05:36:14
【问题描述】:

我正在尝试通过 systemd 启动名为 pigpiod.service 的服务。它使用三个命令调用脚本。第二个被遗漏了。这是为什么呢?

/etc/systemd/system/pigpiod.service:

[Unit]
Description=Starts pigpiod
Before=touchscreen.service

[Service]
ExecStart=/home/sysop/pigpiod.sh

[Install]
WantedBy=multi-user.target

/home/sysop/pigpiod.sh:

#!/bin/sh

touch /home/sysop/before_pigpiod
/usr/bin/pigpiod
touch /home/sysop/after_pigpiod
  • 重启机器时,在/home/sysop/ 中创建了两个文件,但pigpiod 没有启动。
  • 通过sudo systemctl start pigpiod 手动启动服务时,也会发生同样的情况。
  • 手动运行sudo /home/sysop/pigpiod.shpigpiod实际上正在启动!

这是sudo systemctl status pigpiod -l 启动后的输出:

● pigpiod.service - Starts pigpiod
   Loaded: loaded (/etc/systemd/system/pigpiod.service; enabled)
   Active: inactive (dead) since Sat 2017-09-16 20:02:03 UTC; 2min 29s ago
  Process: 440 ExecStart=/home/sysop/pigpiod.sh (code=exited, status=0/SUCCESS)
 Main PID: 440 (code=exited, status=0/SUCCESS)

Sep 16 20:02:02 kivypie systemd[1]: Starting Starts pigpiod...
Sep 16 20:02:02 kivypie systemd[1]: Started Starts pigpiod.

为什么systemd会跳过/usr/bin/pigpiod的执行,而以root身份手动运行脚本却没有?

我的系统:Raspberry Pi Model 3B,Raspbian GNU/Linux 8 (jessie)

【问题讨论】:

标签: linux raspberry-pi boot systemd systemctl


【解决方案1】:

pigpiod 没有-g 选项的分支。所以使用Type = forking或使用pigpiod -g

[Unit]
Description=Starts pigpiod
Before=touchscreen.service

[Service]
ExecStart=/home/sysop/pigpiod.sh
Type=forking

[Install]
WantedBy=multi-user.target

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 2017-03-22
    相关资源
    最近更新 更多