2017-04-19 76 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)同时考虑用户的输入。

相关问题