如何设置 cron 在特定时间仅运行一次文件?[关闭]
- 2024-11-07 08:55:00
- admin 原创
- 31
问题描述:
如何设置cron
为在特定时间只运行一次文件?其中一种替代方法是at
,但标准托管计划上并非所有用户都可以访问它。因此,我想知道是否有办法使用 来实现cron
?
解决方案 1:
您确实想要使用at
。它正是为此目的而制作的。
echo /usr/bin/the_command options | at now + 1 day
然而,如果您没有at
,或者您的托管公司不提供访问权限,您可以让 cron 作业包含代码,以确保它只运行一次。
设置一个具有非常具体时间的 cron 条目:
0 0 2 12 * /home/adm/bin/the_command options
接下来 /home/adm/bin/the_command 需要确保它只运行一次。
#! /bin/bash
COMMAND=/home/adm/bin/the_command
DONEYET="${COMMAND}.alreadyrun"
export PATH=/usr/bin:$PATH
if [[ -f $DONEYET ]]; then
exit 1
fi
touch "$DONEYET"
# Put the command you want to run exactly once here:
echo 'You will only get this once!' | mail -s 'Greetings!' me@example.com
解决方案 2:
尝试在 2011 年 3 月 30 日午夜执行以下命令:
0 0 30 3 ? 2011 /command
警告:如评论中所述, cron 的标准/默认实现不支持年份列。请参阅下面的 TomOnTime 答案,了解在 cron 的标准实现中在未来特定时间运行脚本的正确方法。
解决方案 3:
您确实想要使用at
。它正是为此目的而制作的。
echo /usr/bin/the_command options | at now + 1 day
然而,如果您没有at
,或者您的托管公司不提供访问权限,您可以创建一个自我删除的 cron 条目。
遗憾的是,这将删除您的所有 cron 条目。但是,如果您只有一个,则没问题。
0 0 2 12 * crontab -r ; /home/adm/bin/the_command options
该命令crontab -r
将删除您的 crontab 条目。幸运的是,命令行的其余部分仍将执行。
警告:这很危险!它会删除所有 cron 条目。如果您有很多,这将删除所有条目,而不仅仅是删除包含“crontab -r”行的条目!
解决方案 4:
您可以放入一个 crontab 文件,/etc/cron.d
其中会运行一个脚本,该脚本会运行您的命令,然后删除 crontab 文件/etc/cron.d
。当然,这意味着您的脚本需要以 root 身份运行。
解决方案 5:
您的评论表明您正在尝试从编程语言中调用它。如果是这样,您的程序是否可以派生一个调用 sleep 然后执行工作的子进程?
让你的程序计算距离所需运行时间的秒数,然后让它调用shell_exec("sleep ${secondsToWait) ; myCommandToRun");
解决方案 6:
对于那些无法访问/安装at
环境的人,可以使用自定义脚本:
#!/bin/bash
if [ $# -lt 2 ]; then
echo ""
echo "Syntax Error!"
echo "Usage: $0 <shell script> <datetime>"
echo "<datetime> format: %Y%m%d%H%M"
echo "Example: $0 /home/user/scripts/server_backup.sh 202008142350"
echo ""
exit 1
fi
while true; do
t=$(date +%Y%m%d%H%M);
if [ $t -eq $2 ]; then
/bin/bash $1
echo DONE $(date);
break;
fi;
sleep 1;
done
我们将脚本命名为run1time.sh
示例如下:
nohup bash run1time.sh /path/to/your/script.sh 202008150300 &
解决方案 7:
at
是正确的方法。
如果您的机器上没有该at
命令并且您也没有安装权限,您可以输入如下内容cron
(可能使用以下crontab
命令):
* * * 5 * /path/to/comand_to_execute; /usr/bin/crontab -l | /usr/bin/grep -iv command_to_execute | /usr/bin/crontab -
它将执行一次您的命令,cron
然后将其删除。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件