【问题标题】:Bash script for running two commands at specific intervals用于以特定间隔运行两个命令的 Bash 脚本
【发布时间】:2014-04-06 10:30:04
【问题描述】:

我在 linux 终端上玩 xbacklight 程序。

我想要做的是,每 20 分钟将我的显示器设置为 0% 亮度 20 秒。

简单地说,类似:

in every 20 mins:
     xbacklight -set 0%
     continue this way for 20 seconds

     then:
         xbacklight -set 100%

如何正确设置这些超时?

提前致谢。

【问题讨论】:

  • 省电技巧? :)
  • @devnull 听起来更像是试图强制休息以减轻眼睛疲劳。
  • @BroSlow 是的,兄弟……你说得对 :)

标签: linux bash shell terminal


【解决方案1】:

使用 cron 执行:

*/20 * * * * xbacklight -set 0\% && sleep 20 && xbacklight -set 100\%

注意需要转义百分号——否则它们对 cron 意味着一些特殊的东西。

【讨论】:

    【解决方案2】:

    对于永久使用,cron 是最佳解决方案。对于临时使用,有替代品。

    例如,您也可以使用watch 来完成这项工作:

    watch -n1200 "xbacklight -set 0% && sleep 20 && xbacklight -set 100%"
    

    仅使用 bash:

    while [ 1 ]; do xbacklight -set 0% && sleep 20 && xbacklight -set 100%; sleep 1200; done
    

    【讨论】:

    • 要使watch 命令起作用,请将整个命令括在(单)引号中(-n1200 之后的其余部分) - 否则,第一个&& 之后的所有内容将只执行一次,马上。
    • 谢谢。 +1。请允许我切线:while true; 让我印象深刻,因为它更容易输入,而且意图更清晰(true 符合 POSIX); while [ 1 ];有优势吗?
    • 这是我的写作习惯之一。这不一定是一个好习惯。
    • 谢谢 - 我真的很好奇,不确定我是否遗漏了什么。
    猜你喜欢
    • 2011-09-28
    • 2022-01-01
    • 2015-10-31
    • 2018-08-19
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2016-08-24
    • 2015-01-09
    相关资源
    最近更新 更多