2016-07-07 81 views
1

我試圖讓一個服務器的NodeJS上啓動時運行,所以我創建了以下systemd單元文件:Systemd服務無法啓動時

[Unit] 
Description=TI SensorTag Communicator 
After=network.target 

[Service] 
ExecStart=/usr/bin/node /home/pi/sensortag-comm/sensortag.js 
User=root 

[Install] 
WantedBy=multi-user.target 

我不知道我在做什麼錯在這裏。在nodejs腳本啓動之前,它似乎失敗了,因爲沒有記錄發生。我的腳本依賴於MySQL 5.5(我認爲這是我遇到問題的地方)。任何洞察力,甚至不同的解決方案,將不勝感激。

另外,一旦我登錄系統,它就會正常運行。

更新

已啓用該服務,並通過journalctl記錄。我將在7/11/16更新結果。

不知道爲什麼它第一次沒有工作,但在檢查journalctl時,MySQL沒有啓動的問題是100%。我再次將其更改爲After=MySQL.service,它完美運作!

回答

2

如果在journalctl的輸出中根本沒有提及服務,可能表示服務不是已啓用在引導時啓動。

讓您在下次開機測試前運行systemctl enable my-unit-name。另外,由於你依賴於MySQL正在運行,所以你應該聲明如下:After=mysql.service。確切的服務名稱可能取決於您的Linux發行版,您沒有說明。

添加User=root不會添加任何內容,因爲無論如何,系統單位默認情況下都會以root身份運行。

當你說「它失敗了」時,你沒有指定它在啓動時是失敗還是在systemctl start my-unit-name下運行測試。

嘗試啓動服務後,如果運行journalctl -u my-unit.name.service,應該記錄日誌。

您可能還會考慮將StandardOutput=journal添加到您的設備文件中,以確保您捕獲正在運行的服務的輸出。

+0

對不起,我不清楚,服務已啓用,它試圖啓動啓動。我直到星期一才能訪問機器,然後用'journalctl -u sensortag.service'的結果更新問題。需要注意的是,mysql 5.5使用systemv而不是systemd(該機器是一個樹莓派,我不傾向於設置backports),所以嘗試使用'After = mysql.service'似乎無法解決此問題,但也許這個問題在別處。再次感謝迄今爲止的幫助。 – phelpsiv