2017-09-17 84 views
-1

我试图通过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执行,但手动运行该脚本根不?

我的系统:覆盆子裨模型3B,Raspbian的GNU/Linux 8(杰西)

+0

Stack Overflow是用于编程和发展问题的站点。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://stackoverflow.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[Unix&Linux堆栈交换](http://unix.stackexchange.com/)会是一个更好的地方。 – jww

回答

-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