我工作的Linux命令,我試圖寫一個腳本,它就像一個觸發如下:
是否有可能檢測到有多久沒有用戶鍵入命令
if user hasn't typed any command for 2 min
execute some executable file
fi
如果我可以有這樣一個腳本,我可以把它作爲一個守護進程。例如,我可以讓我的系統做到這一點:
if user stops typing command for 2 min
shutdown -h now
fi
我工作的Linux命令,我試圖寫一個腳本,它就像一個觸發如下:
是否有可能檢測到有多久沒有用戶鍵入命令
if user hasn't typed any command for 2 min
execute some executable file
fi
如果我可以有這樣一個腳本,我可以把它作爲一個守護進程。例如,我可以讓我的系統做到這一點:
if user stops typing command for 2 min
shutdown -h now
fi
你必須要小心...例如,如果命令本身需要什麼2分鐘以上來執行?在這種情況下關閉系統可能不需要。
獲得這種行爲的唯一方法是從殼應用(而不是作爲一個獨立的實體/守護進程),你知道的狀態中 - 如:GETTING_COMMAND
,或EXECUTING_COMMAND
...
在bash
您可以使用TMOUT
variable:
TMOUT
如果設置爲大於零,TMOUT被當作內建命令read的默認超時值(參看Bash內建命令)。如果在輸入來自終端時輸入未在TMOUT秒後到達,則選擇命令(請參閱條件構造)將終止。 在交互式shell中,該值被解釋爲在發出主要提示後等待輸入行的秒數。如果完整的輸入行沒有到達,Bash在等待那麼多秒後終止。
請注意,這也會影響該腳本對read
或select
的任何調用。
像這樣的事情會做你以後:
export TMOUT=120
bash
shutdown -h now
如果您正在開發自己的shell,那麼你當然可以使用類似select(2)
同時考慮用戶的輸入。