2017-04-19 62 views
1

我工作的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

你必須要小心...例如,如果命令本身需要什麼2分鐘以上來執行?在這種情況下關閉系統可能不需要。

獲得這種行爲的唯一方法是從殼應用(而不是作爲一個獨立的實體/守護進程),你知道的狀態中 - 如:GETTING_COMMAND,或EXECUTING_COMMAND ...

bash您可以使用TMOUT variable

TMOUT

如果設置爲大於零,TMOUT被當作內建命令read的默認超時值(參看Bash內建命令)。如果在輸入來自終端時輸入未在TMOUT秒後到達,則選擇命令(請參閱條件構造)將終止。 在交互式shell中,該值被解釋爲在發出主要提示後等待輸入行的秒數。如果完整的輸入行沒有到達,Bash在等待那麼多秒後終止。

請注意,這也會影響該腳本對readselect的任何調用。

像這樣的事情會做你以後:

export TMOUT=120 
bash 
shutdown -h now 

如果您正在開發自己的shell,那麼你當然可以使用類似select(2)同時考慮用戶的輸入。

相關問題