我希望我的定制Django命令每分钟执行一次.然而,似乎python /path/to/project/myapp/manage.py mycommand在目录python manage.py mycommand工作完美时似乎不起作用.
我怎样才能做到这一点?我使用/etc/crontab:
****** root python /path/to/project/myapp/manage.py mycommand
Run Code Online (Sandbox Code Playgroud) 我有一个php脚本,它从webservice运行并插入到DB.
crontab -e
......other cron tasks above....... ... .. .. # Run test script.php at 1610 10 16 * * * /usr/bin/wget -q -O /home/username/my_cronjobs/logs/cron_adhoc http://localhost/project/script.php
显然,在16:10,这个脚本运行两次!16:10:01和16:25:02
是不是错了,必须使用wget?或者我是否错误地设置了cron作业的时间表?
当我从浏览器运行http://localhost/project/script.php时,它只运行一次..
关于这个问题的任何想法?
我已经测试过,没有其他用户运行相同的工作......我怀疑wget的工作方式.
正如我的脚本需要至少20分钟不回送一个应答来完成(它是从webservicces拉了很多数据并保存到DB)..怀疑有一个超时或默认造成这个问题的wget重试的.
我想通过Cron Jobs运行PHP脚本.所以,我阅读了一些教程,并提到命令之间存在一些差异.所以,这些命令是这些:
php myscript.phpphp -q myscript.phpphp -c myscript.phpphp -f myscript.php问题是:
是什么这些-q,-c,-f符号是什么意思?
当我尝试安装我的Cron作业时,我收到以下错误:
"crontab.txt":8:crontab文件中的EOF错误,无法安装
这个问题可能听起来令人难以置信的愚蠢,但如果我不问我永远不会知道......
我所做的所有任务总是使用"crontab".我在某处听到过"cronjob"这个词.它是另一种工具还是"crontab"中的某个名称?
我在crontab中有以下条目:
0 5 * * * /bin/bash -l -c 'export RAILS_ENV=my_env; cd /my_folder; ./script/my_script.rb 2>&1 > ./log/my_log.log'
Run Code Online (Sandbox Code Playgroud)
这样做的结果是,我收到的输出./script/my_script.rb在./log/my_log.log.这种行为是期望的.奇怪的是,我也在本地邮件中收到输出.我想知道如何通过邮件捕获我的脚本的输出.由于我将输出重定向到日志文件,我希望我的cron作业没有输出,因此当cron作业运行时我不会收到任何邮件.任何人都可以了解邮件如何获得输出./script/my_script.rb?
我按照这里的说明操作:
http://celery.readthedocs.org/en/latest/userguide/periodic-tasks.html#crontab-schedules
我应该能够做到以下几点: from celery.schedules import crontab
在我的settings.py身上:
from kombu import serialization
serialization.registry._decoders.pop("application/x-python-serialize")
import djcelery
djcelery.setup_loader()
from celery.schedules import crontab
...
CELERYBEAT_SCHEDULE = {
'first_task': {
'task': 'apps.icecream.tasks.sync_flavors',
'schedule': crontab(minute='*/30', hour='1, 3, 6, 8-20, 22')
},
'second_task': {
'task': 'apps.robots.tasks.run_robots',
'schedule': crontab(minute='*/6')
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到一个错误:"没有名为schedules的模块"
如果我切换到另一种调度方式,使用timedelta,那么一切都很好,我可以运行我的周期性任务:
CELERYBEAT_SCHEDULE = {
'first_task': {
'task': 'apps.icecream.tasks.sync_flavors',
'schedule': timedelta(minutes=30)
},
'second_task': {
'task': 'apps.robots.tasks.run_robots',
'schedule': timedelta(minutes=6)
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能使用crontab方法?
我需要开发一个能够在不支持crontab的服务器上工作的任务系统.
我问是否有任何现有代码可以采用cron字符串(例如'0 0,12 1*/2*'并返回下一次计划运行的时间戳.
如果找不到这样的代码那么我该怎么做呢?
我有一个期望脚本,我需要在管理节点上每隔3分钟运行一次,以便使用命令收集连接到DCX Brocade SAN Switch的每个端口的tx/rx值#portperfshow#
每次我尝试使用crontab每3分钟执行一次脚本时,脚本不起作用!
我的期望脚本开头,#!/usr/bin/expect -f 我在cron下使用以下语法调用脚本:
3 * * * * /usr/bin/expect -f /root/portsperfDCX1/collect-all.exp sanswitchhostname
Run Code Online (Sandbox Code Playgroud)
但是,当我执行脚本(不在cron下)时,它按预期工作:
root# ./collect-all.exp sanswitchhostname
Run Code Online (Sandbox Code Playgroud)
工作得很好.
请有人帮忙!谢谢.
脚本collect-all.exp是:
#!/usr/bin/expect -f
#Time and Date
set day [timestamp -format %d%m%y]
set time [timestamp -format %H%M]
#logging
set LogDir1 "/FPerf/PortsLogs"
et timeout 5
set ipaddr [lrange $argv 0 0]
set passw "XXXXXXX"
if { $ipaddr == "" } {
puts "Usage: <script.exp> <ip address>\n"
exit 1
}
spawn ssh admin@$ipaddr
expect …Run Code Online (Sandbox Code Playgroud) 在我的网络应用程序中,我使用了两个定期事件,"清理"数据库中的一个表,每15分钟左右执行一次.
我的问题是,这会导致未来的性能问题吗?因为我已经读过某个地方 - 我不记得确切地说 - MySQL事件应该安排在一个月左右运行一次.事实是,同样的事件使表格大小相当缩小(因为它们删除了超过15分钟的记录),这可能会补偿执行频率,对吗?
另外,如果以相同的频率调用它们,有一个大的MySQL事件或许多小事件会更好吗?