我#!/bin/bash在cron.week目录中有一个文件.
有没有办法测试它是否有效?等不到1周
我在Debian 6上用root
*/20 * * * *
确保它每20分钟运行一次,我希望每隔20分钟运行一次任务,从小时开始5点开始,这可能与Cron有关吗?可不可能是:
5/20 * * * * ?
我试图在一个调用shell脚本的docker容器中运行一个cronjob.
昨天我一直在网上搜索和堆栈溢出,但我真的找不到一个有效的解决方案.
我怎样才能做到这一点?
编辑:
我创建了一个(注释的)github存储库,其中包含一个工作的docker cron容器,它以给定的时间间隔调用shell脚本.
我有一个python脚本,它将检查队列并对每个项目执行操作:
# checkqueue.py
while True:
check_queue()
do_something()
Run Code Online (Sandbox Code Playgroud)
如何编写一个bash脚本来检查它是否正在运行,如果没有,则启动它.大概下面的伪代码(或者它应该做类似的事情ps | grep?):
# keepalivescript.sh
if processidfile exists:
if processid is running:
exit, all ok
run checkqueue.py
write processid to processidfile
Run Code Online (Sandbox Code Playgroud)
我将从crontab中调用它:
# crontab
*/5 * * * * /path/to/keepalivescript.sh
Run Code Online (Sandbox Code Playgroud) 我希望crontab每30分钟添加一个条目来执行一个脚本,在一小时和一小时后30分钟或者接近的时间.我有以下内容,但它似乎没有在0上运行.
*/30 * * * *
Run Code Online (Sandbox Code Playgroud)
我需要使用什么字符串?
cron正在OSX上运行.
我试图从cron运行Django管理命令.我正在使用virtualenv来保持我的项目沙箱.
我在这里和其他地方看过一些示例,它们显示了virtualenv中的运行管理命令:
0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg
Run Code Online (Sandbox Code Playgroud)
但是,即使syslog在任务应该启动时显示一个条目,该任务也从未实际运行(脚本的日志文件为空).如果我从shell手动运行该行,它将按预期工作.
我目前可以通过cron运行命令的唯一方法是打破命令并将它们放入一个愚蠢的bash包装器脚本中:
#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg
Run Code Online (Sandbox Code Playgroud)
编辑:
ars提出了一个有效的命令组合:
0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg
Run Code Online (Sandbox Code Playgroud)
至少在我的情况下,调用virtualenv的激活脚本什么也没做.这个有用,等等.
我想知道如何确切地看到cron作业在每次执行时都在做什么.日志文件位于何处?或者我可以将输出发送到我的电子邮件吗?我已经设置了电子邮件地址,以便在cron作业运行时发送日志,但我还没有收到任何信息.
在crontab中,"星期几"字段是运行0 - 6还是1 -7?
我看到有关这方面的相互矛盾的信息.维基百科国家0-6和我见过的其他网站1-7.
还有什么意思或使用0或7错误?即cron仍然会运行?
我试图让我的代码按照固定的时间表执行,基于Spring cron表达式.我希望每天1:01:am执行代码.我尝试了下面的表达式,但这对我来说并没有起作用.这里的语法有什么问题?
@Scheduled(cron = "0 1 1 ? * *")
public void resetCache() {
// ...
}
Run Code Online (Sandbox Code Playgroud)