【问题标题】:Is it possible to detect how long hasn't user type command是否可以检测到用户多久没有输入命令
【发布时间】:2017-09-15 04:29:15
【问题描述】:

我正在使用 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

【问题讨论】:

    标签: linux shell daemon


    【解决方案1】:

    您需要小心...例如,如果命令本身的执行时间超过 2 分钟怎么办?在这种情况下,可能不需要关闭系统。

    获得这种行为的唯一方法是在 shell 应用程序中(而不是作为单独的实体/守护程序),您可以在其中了解状态 - 例如: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) 之类的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多