如何在特定时间范围内激活cron命令一次?

如何在特定时间范围内激活cron命令一次?,cron,crontab,archlinux,cron-task,raspberry-pi3,Cron,Crontab,Archlinux,Cron Task,Raspberry Pi3,关于我的系统的基本信息:我有一个音乐系统,人们可以安排歌曲在特定时间开始和结束 操作系统:ArchLinux 它目前设置了两个cron。一个设定为1.50(开始时间为“播放等”命令),另一个设定为3.20(结束时间为“结束等”命令) 我的设置工作完美,我可以结束删除时间表等,但我现在注意到一个问题!如果我设置了上述时间并关闭系统(我的系统是一个raspberry pi),然后在2.00时重新打开,我错过了1.50的最后期限,音乐不会开始(显然),我想尝试这样做,无论我在1.50-3.20的范围内

关于我的系统的基本信息:我有一个音乐系统,人们可以安排歌曲在特定时间开始和结束

操作系统:ArchLinux

它目前设置了两个cron。一个设定为1.50(开始时间为“播放等”命令),另一个设定为3.20(结束时间为“结束等”命令)

我的设置工作完美,我可以结束删除时间表等,但我现在注意到一个问题!如果我设置了上述时间并关闭系统(我的系统是一个raspberry pi),然后在2.00时重新打开,我错过了1.50的最后期限,音乐不会开始(显然),我想尝试这样做,无论我在1.50-3.20的范围内打开它,它都会启动播放命令。但它只会运行一次命令

我环顾四周,得到的命令如下:

0 1.50-3.20/2 * * * your_command.sh
但这是每2小时运行一次。我想在这两次之间只运行一次?
谢谢

您可以添加一个额外的cron作业,在每次重新启动时启动脚本。例如,您可以在crontab中添加如下行:

@reboot /home/pi/startplayback.sh
您的startplayback.sh脚本应该检查当前时间是否在所需时间段内,如果在所需时间段内,则运行所需命令。例如,下面的代码将打印播放!如果脚本在1:50和3:20之间运行。您可以替换“播放”echo运行任何内容

#!/bin/bash

current=$(date '+%H%M')
(( current=(10#$current) ))
((current > 150 && current < 320 )) && echo 'PLAY!'
#/bin/bash
当前=$(日期'+%H%M')
((当前=(10#$当前)))
((当前>150&¤t<320))&&echo“播放!”

注意:别忘了让脚本可执行
sudo chmod+x startplayback.sh

您可以添加额外的cron作业,在每次重新启动时启动脚本。例如,您可以在crontab中添加如下行:

@reboot /home/pi/startplayback.sh
您的startplayback.sh脚本应该检查当前时间是否在所需时间段内,如果在所需时间段内,则运行所需命令。例如,下面的代码将打印播放!如果脚本在1:50和3:20之间运行。您可以替换“播放”echo运行任何内容

#!/bin/bash

current=$(date '+%H%M')
(( current=(10#$current) ))
((current > 150 && current < 320 )) && echo 'PLAY!'
#/bin/bash
当前=$(日期'+%H%M')
((当前=(10#$当前)))
((当前>150&¤t<320))&&echo“播放!”
另外,别忘了让脚本可执行
sudo chmod+x startplayback.sh

您可能想查看它的功能和实用程序

SYNOPSIS
     at [-q queue] [-f file] [-mldbv] time
     at [-q queue] [-f file] [-mldbv] -t [[CC]YY]MMDDhhmm[.SS]
     at -c job [job ...]
     at -l [job ...]
     at -l -q queue
     at -r job [job ...]

     atq [-q queue] [-v]

     atrm job [job ...]

     batch [-q queue] [-f file] [-mv] [time]
用于安排在将来某个时间运行一次性作业。它维护这些作业的队列,因此您可以使用它来安排各种不同时间规格的工作

在我看来,Cron是一个调度程序,用于反复重复的作业

给你举个简单的例子:

echo 'ls -lathF' | at now + 1 minute
正如预期的那样,您将看到一个作业将在一分钟内运行。尝试atq查看作业列表

作业完成后,默认情况下,输出将通过邮件发送给您的用户。

您可能需要查看及其实用程序

SYNOPSIS
     at [-q queue] [-f file] [-mldbv] time
     at [-q queue] [-f file] [-mldbv] -t [[CC]YY]MMDDhhmm[.SS]
     at -c job [job ...]
     at -l [job ...]
     at -l -q queue
     at -r job [job ...]

     atq [-q queue] [-v]

     atrm job [job ...]

     batch [-q queue] [-f file] [-mv] [time]
用于安排在将来某个时间运行一次性作业。它维护这些作业的队列,因此您可以使用它来安排各种不同时间规格的工作

在我看来,Cron是一个调度程序,用于反复重复的作业

给你举个简单的例子:

echo 'ls -lathF' | at now + 1 minute
正如预期的那样,您将看到一个作业将在一分钟内运行。尝试atq查看作业列表


作业完成后,默认情况下,输出将通过邮件发送给用户。

我通过创建一个PHP文件并在重新启动时加载页面,然后执行其工作并重定向回某某来解决问题。

我通过创建一个PHP文件并在重新启动时加载页面,然后执行其工作并重定向回某某来解决问题