gpt4 book ai didi

linux - 是否可以检测用户输入命令多长时间

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:07:36 26 4
gpt4 key购买 nike

我在 Linux shell 上工作,我正在尝试编写一个脚本,它就像一个触发器,如下所示:

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 分钟怎么办?在这种情况下可能不需要关闭系统。

获得这种行为的唯一方法是从 shell 应用程序内部(而不是作为一个单独的实体/守护进程),在那里你知道状态 -例如:GETTING_COMMAND,或EXECUTING_COMMAND...

bash 中,您可以使用 TMOUT variable :

TMOUT

If set to a value greater than zero, TMOUT is treated as the default timeout for the read builtin (see Bash Builtins). The select command (see Conditional Constructs) terminates if input does not arrive after TMOUT seconds when input is coming from a terminal. In an interactive shell, the value is interpreted as the number of seconds to wait for a line of input after issuing the primary prompt. Bash terminates after waiting for that number of seconds if a complete line of input does not arrive.

请注意,这也会影响脚本对 readselect 的任何调用。

像这样的东西会做你所追求的:

export TMOUT=120
bash
shutdown -h now

如果您正在开发自己的 shell,那么您当然可以在获取用户输入时使用类似 select(2) 的东西。

关于linux - 是否可以检测用户输入命令多长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43487323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com