
一、引言Linux下使用systemctl start/restart 命令啟動服務結果失敗這個時候可以通過journalctl 工具來查看systemd服務的日志journalctl -u 服務名顯示該服務最近的20條日志journalctl -u 服務名 -n 20把 XXX.service 最近一個小時產(chǎn)生的 systemd 日志以 ISO 時間格式導出來不打開分頁保存成 /tmp/localserver-last-hour.logjournalctl -u XXX.service --since 1 hour ago -o short-iso --no-pager /tmp/localserver-last-hour.log二、例子例子1可以看到該服務啟動失敗是因為無法成功打開依賴的動態(tài)庫。所以這時可以查看對應的動態(tài)庫是否存在來解決。例子2從該日志無法直觀地看到服務啟動失敗的原因。所以我們查看該服務的配置文件可以看到啟動該服務時應執(zhí)行的命令是“/usr/local/lingTongHui/mdnsd/mdnsd”[Unit] Descriptionmdnsd [Service] Typesimple WorkingDirectory/usr/local/lingTongHui/mdnsd/ ExecStart/usr/local/lingTongHui/mdnsd/mdnsd ExecStop/usr/bin/kill -9 $MAINPID RestartSec5 Restartalways [Install] WantedBymulti-user.target查看該服務對應的可執(zhí)行文件的幫助可以看到該可執(zhí)行文件默認不加-debug參數(shù)就是以守護進程的方式啟動的。所以這就導致了通過systemctl啟動該服務失敗所以修改配置文件為[Unit] ... ExecStart/usr/local/lingTongHui/mdnsd/mdnsd -debug ...重新通過systemctl start/restart 命令啟動該服務可以發(fā)現(xiàn)成功了。三、參考《如何查看systemctl啟動服務的日志》《深入了解journalctl -u》