我工作的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)
同时考虑用户的输入。