Linux systemd 取消卡住的工作

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 操作範例

  1. sudo systemctl list-jobs # 列出有哪些工作卡住
  2. sudo systemctl show nagios-nrpe-server.service # 查看原因
  3. sudo systemctl show SERVICE_NAME.service -p TimeoutStopUSec # 若是 TimeoutStopUSec 的問題
  4. sudo systemctl cancel 9244692 # 砍掉卡住的工作項目
  5. sudo systemctl restart nagios-nrpe-server.service --no-block
  6. 若上述都解決不掉,可能就只能重新開機解決了~

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈Linux systemd 取消卡住的工作〉中有 1 則留言

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料