Cron启动脚本仅在一天中的某些时间

gil*_*585 10 boot cron time lirc

所以我有一系列脚本,用于控制我的接收器和电视电源在某些事件,如启动,屏幕保护和远程控制.其中一个是在登录期间执行的,但事情可能是我不希望它在机器计划启动时运行脚本.我有逻辑在执行启动应用程序期间如果blanked = 0则忽略事件,因此它不会在启动或关闭期间发送ir.我怎样才能通过使用cron来实现这一目标?我选择cron是因为这些事件发生在启动应用程序之前.Cron真棒,但据我所知,我只能在开机时或按计划运行,而不是两者兼而有之.我需要编写时间变量的脚本,但我不确定如何.

syson.sh(在登录期间调用为启动应用程序和屏幕状态更改)

#!/bin/sh
cd /home/gilson585/
blanked=`cat blanked`
if [ $blanked -eq 0 ] ; then
    blanked=1;echo $blanked > blanked
else
    irsend SEND_ONCE VR4085DF KEY_POWER;irsend SEND_ONCE Kenwood_RC-R0813 power;blanked=0;echo $blanked > blanked
    sleep 1
    irsend SEND_ONCE Kenwood_RC-R0813 cd/dvd
fi
Run Code Online (Sandbox Code Playgroud)

sysoff.sh(在关机期间调用,作为lirc init.d脚本和屏幕状态更改的一部分)

#!/bin/sh
cd /home/gilson585/
blanked=`cat blanked`
if [ $blanked -eq 0 ] ; then
    irsend SEND_ONCE Kenwood_RC-R0813 power;irsend SEND_ONCE VR4085DF KEY_POWER;blanked=1;echo $blanked > blanked
fi
Run Code Online (Sandbox Code Playgroud)

xscreensaver.sh(屏幕保护程序看门狗,在登录时调用)

#!/bin/bash
cd /home/gilson585/
xscreensaver-command -watch|
while read STATUS; do
  case "$STATUS" in
    BLANK*)
      /home/gilson585/sysoff.sh;blanked=1;echo $blanked > blanked
      ;;
    UNBLANK*)
      /home/gilson585/syson.sh;blanked=0;echo $blanked > blanked
      ;;
  esac
done
Run Code Online (Sandbox Code Playgroud)

Joe*_*nte -1

啊。至少,您现在可以使用两个脚本。时间设置是周/小时/分钟/秒/等的列表。您可以使用以下参数进行设置

42 * * * * /bin/execute/awesomescript.sh
Run Code Online (Sandbox Code Playgroud)

这将在每小时的第 42 分钟执行一些操作。此页面有一个我基本上会反胃的解释:http://kvz.io/blog/2007/07/29/schedule-tasks-on-linux-using-crontab/

还有像这样的脚本

42 9,12,15 * * * /bin/stuff/awesomestuff.sh
Run Code Online (Sandbox Code Playgroud)

这将在 9:42、12:42 和 15:42 执行 Awesomestuff.sh