2017-09-17 82 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