我有一個launchd啓動服務器的腳本,然後告訴它在launchd殺死它時(應該在關閉時)正常退出。我的問題是什麼是適當的,慣用的方式來告訴腳本閒置,直到它獲得信號?我應該只使用while-true-sleep-1循環,還是有更好的方法來做到這一點?Bash - 我應該如何閒置,直到我收到信號?
#!/bin/bash
cd "`dirname "$0"`"
trap "./serverctl stop" TERM
./serverctl start
# wait to receive TERM signal.
'while:while;做睡1;對我來說似乎沒問題。 – choroba
你能得到'serverctl'產生的進程的PID嗎?用'jobs -p'或'pgrep -P'? –
實際的服務器進程正在「屏幕」會話中運行。等待這可能不是一個壞主意,因此意外退出將導致此腳本結束並警告啓動該進程已關閉。另一方面,它已經過了十五個月,並且它現在工作得很好。 :-P –