2016-10-10 94 views
2

我目前正在嘗試啓動Luigid,當我的Ubuntu服務器打開時,我已經嘗試了幾種技術,包括rc.local,cronjob(@reboot),暴發戶,systemd和他們都沒有出現正在工作。腳本沒有啓動時運行,systemd ubuntu

我應該指出,如果我手動執行,命令運行良好,我只需要它在啓動時運行。在這一點上我真的沒有我得到它所以這裏工作哪種方式任何擔心都是一些我試過的東西 -

的Cron:

使用

sudo crontab -e 

並進入

@reboot luigid --background --logdir /home/myuser/luigilog 

Systemd:

我在/ usr/bin中稱爲luigid具有以下內容,它被標記爲可執行的腳本,我已經嘗試過了有和沒有「退出0」害怕一個適當的退出代碼可能需要 -

#!/bin/sh 
exec luigid --background --logdir /home/myuser/luigilog 

和在/ etc/systemd /系統中的服務文件/被叫luigid.service -

[Unit] 
Description=Luigid Service 

[Service] 
Type=forking 
ExecStart=/usr/bin/luigid 

[Install] 
WantedBy=multi-user.target 

我試圖分叉(以及在這兩個服務,且在lugid命令,單穩和簡單指定PIDFILE沒有運氣的類型。

我已啓用使用該服務 -

systemctl enable luigid.service 

看來它試圖啓動該服務,因爲檢查使用

systemctl status luigid.service

狀態顯示

luigid.service - Luigid Service 
    Loaded: loaded (/etc/systemd/system/luigid.service; enabled; vendor preset: enabled) 
    Active: failed (Result: timeout) since Mon 2016-10-10 15:18:00 UTC; 18min ago 

Oct 10 15:16:29 Analytics systemd[1]: Starting Luigid Service... 
Oct 10 15:18:00 Analytics systemd[1]: luigid.service: Start operation timed out. Terminating. 
Oct 10 15:18:00 Analytics systemd[1]: Failed to start Luigid Service. 
Oct 10 15:18:00 Analytics systemd[1]: luigid.service: Unit entered failed state. 
Oct 10 15:18:00 Analytics systemd[1]: luigid.service: Failed with result 'timeout'. 

有一定是我很想念的東西,它真的是c這很難得到一個啓動時運行的命令!

回答

3

查看啓動選項:如果服務稍後崩潰,「rc.local」和「cron @reboot」都不會幫助您,所以它們並不理想。既然看起來你有一個基於systemd的系統,那麼Upstart並不是真正的選擇。 systemd是一個很好的選擇,因爲它不僅會啓動您的進程,還會在它崩潰時重新啓動它。

我不知道Type=的正確選項是用於此服務的,但它確實很重要。請檢查文檔Type=中的man systemd.service以確定哪一個對您的服務而言是正確的。

您的包裝腳本不應該是必需的。你應該能夠有一個ExecStart=一行:

ExecStart=/usr/bin/luigid --background --logdir /home/myuser/luigilog 

我也想嘗試刪除--background選項和設置Type=simple如果你還沒有嘗試過的組合。

如果你不能得到它的工作,儘量讓你的守護進程提供有關它爲什麼不啓動更詳細的日誌記錄,或訴諸添加/usr/bin/straceExecStart=行的開頭,以獲得詳細的日誌記錄的系統調用該二進制文件在啓動時進行。最後幾個電話中的一個可能指向它掛起的位置。

+2

輝煌 - 感謝您的幫助。 最終的解決方案是使用Type = Simple,刪除--background標誌,並指定要運行的服務的用戶。 –