首页 > 解决方案 > 是否可以设置一个 crontab 以使用不同的参数运行以供下次运行?

问题描述

我目前每 4 小时在 crontab 中运行一个脚本。通常它使用以下设置运行:

python3 -u script.py -s -q --load=ims | tee -a script.log

是否可以说“嘿 crontab,下次运行时使用--redopython 脚本上的标志,然后照常继续”。

所以它会运行该条目python3 -u script.py -s -q --load=ims --redo | tee -a script.log,然后继续正常运行

标签: linuxcron

解决方案


crontab 目前似乎不支持此功能。

或者,您可以使用该at命令在特定时间运行命令。例如:

at> python3 -u script.py -s -q --load=ims --redo | tee -a script.log 
at> ^D

这将在特定的 12:00 使用该参数运行


另一种选择是创建一个 Bash 文件,该文件将在下一次 crontab 运行之前修改 crontab 条目,然后在 crontab 启动脚本后修复它:

crontab -l | grep -v 'python3 -u script.py -s -q --load=ims' | crontab -
(crontab -l ; echo "(crontab -l ; echo "* */4 * * * python3 -u script.py -s -q --load=ims --redo | tee -a script.log") | crontab -") | crontab -
sleep 5m
crontab -l | grep -v 'python3 -u script.py -s -q --load=ims --redo' | crontab -
(crontab -l ; echo "(crontab -l ; echo "* */4 * * * python3 -u script.py -s -q --load=ims | tee -a script.log") | crontab -") | crontab -

这将找到并删除旧条目,添加一个带有标志的新条目,然后休眠 5 分钟。

然后它将找到新条目并将其删除,然后将其替换为旧条目


推荐阅读