Debian / Ubuntu Linux 全面採用 systemd,在使用上都跟之前操作整合的很好,所以也沒什麼問題。
不過,最近想要 restart 某個 service 時,發現一直卡在 stop,kill 掉後,卡在無法 start,要怎麼查看和解決呢?
Linux systemd 取消卡住的工作
systemctl 無法重新啟動服務,而且這個現象會全面卡住,造成所有的 service 都無法重新啟動。
此時可以使用 systemctl list-jobs 來看有哪些 jobs 在 waiting 或者哪些正好卡在那裡。
若還是卡住,可以用 systemctl show 來看詳細的情形,若有某些特定參數,可以使用 systemctl show service-name -p xxx 來看
若是這個 service 啟動需要時間,想要不卡住其他的服務,可以試試看 --no-block 的參數
看到卡在那邊的 id,要如何砍掉呢?
- 砍 list-jobs 裡面的 id,可以使用 systemctl cancel $pid 來達成。
systemctl 操作範例
- sudo systemctl list-jobs # 列出有哪些工作卡住
- sudo systemctl show nagios-nrpe-server.service # 查看原因
- sudo systemctl show SERVICE_NAME.service -p TimeoutStopUSec # 若是 TimeoutStopUSec 的問題
- sudo systemctl cancel 9244692 # 砍掉卡住的工作項目
- sudo systemctl restart nagios-nrpe-server.service --no-block
- 若上述都解決不掉,可能就只能重新開機解決了~