今天是 2014 年 10 月 3 日星期五凌晨 3:58
我想安排一个像这样的 cronjob 在以下日期运行它:
所以每两周一次,在星期六,在 8 点。
我试图让我的 crontab 为一个 rails 应用程序运行一些 rake 任务,但它似乎总是以 127 的状态退出,在我的系统日志中它看起来像这样:
Jun 7 05:10:01 ip-10-170-122-226 CRON[15664]: (deploy) CMD (cd /home/deploy/apps/dashboard/current && bundle exec rake some:task
Jun 7 05:10:01 ip-10-170-122-226 CRON[15662]: (CRON) error (grandchild #15664 failed with exit status 127)
Run Code Online (Sandbox Code Playgroud)
似乎 127 就像“未找到命令的错误”或类似的东西,所以我使用了 bin 的完整路径,即使像 bundle 一样/usr/local/bin/bundle,任务在 cron 之外运行良好,只是在 shell 中运行它。
我的 crontab 只是:
*/10 * * * * cd /home/deploy/apps/dashboard/current && bundle exec rake some:task
Run Code Online (Sandbox Code Playgroud)
也许我的 crontab 需要#!/usr/bin或顶部的东西?
更新
为了测试它,它似乎运行得很好:
*/1 * * * * /usr/bin/touch /home/deploy/cron-test.txt
Run Code Online (Sandbox Code Playgroud)
所以这让我认为它就像一个 …
我有两个不同的 (i386 v AMD) Debian 机器并且有同样的问题。logrotate 不会自动旋转我的日志。当我手动强制它时它工作正常
/usr/sbin/logrotate -f /etc/logrotate.conf
但这对我来说不好。
设置没有修改(至少我没有修改它们),AMD 盒子是全新安装的,但不能完成它的工作。
如果您注意到类似的问题,请帮助我。
更新(一些服务器输出):
logrotate -d http://pastebin.com/e6AshtGq
ls -l /var/log http://pastebin.com/Y2A4Li59
cat /etc/logrotate.conf http://pastebin.com/1h7Uwctr
ls -l /etc/logrotate.d http://pastebin.com/NvUAeszM
在 crontab 中,我看到了几个答案,其中用户要求一种每 5 分钟运行一次的方法:
*/5 * * * * command
Run Code Online (Sandbox Code Playgroud)
或者每 5 分钟有一个偏移量:
10-59/5 * * * * command
Run Code Online (Sandbox Code Playgroud)
我见过一些创造性的解决方案,其中人们每 90 分钟制作 2 行 crontab:
0 0-21/3 * * * whatever
30 1-22/3 * * * whatever
Run Code Online (Sandbox Code Playgroud)
感谢以下答案之一(感谢@khaled),这是 3 小时 30 分钟的另一种创造性解决方案:
0 0-23/7 * * * whatever
30 3-23/7 * * * whatever
Run Code Online (Sandbox Code Playgroud)
是否有针对每 x 分钟问题的通用解决方案?例如,我目前需要每 3h30m。
解决重复标签:链接的问题显然不同 - 关于如何设置和调试 cron 作业有一般建议。我指的是我们正在达到 cron 语法限制的特定问题。我正在寻找一种通用算法来解决“每超过 60 分钟”的问题,该问题在链接的问题中没有解决。
这是我的 crontab 文件的内容:
0 0,6,12,18 * * * cd /var/www/app/current && backup perform --trigger db_backup --config_file config/backup.rb --data-path db --log-path log --tmp-path tmp >> /var/www/app/current/log/cron.log 2>&1
0 3 * * * cd /var/www/app/current && RAILS_ENV=production bundle exec rake runs:populate --silent >> /var/www/app/current/log/cron.log 2>&1
59 23 * * * cd /var/www/app/current && RAILS_ENV=production bundle exec rake runs:log --silent >> /var/www/app/current/log/cron.log 2>&1
Run Code Online (Sandbox Code Playgroud)
如果我以 crontab 的所有者身份手动运行其中任何一个,它们工作正常,但该cron.log文件仅包含:
/bin/sh: bundle: not found
/bin/sh: backup: not found
/bin/sh: bundle: not found
Run Code Online (Sandbox Code Playgroud)
我尝试将每一个都包装在以下(默认情况下,我用来管理我的 cron 文件的 …
我有一个部署脚本,我试图在其中添加一个 cron 作业。这是我在stackoverflow上找到的代码。我正在运行 debian 8。
# ADD CRON
crontab -l > mycron
echo "10 * * * * cd /var/www/test/ && ./test" >> mycron
crontab mycron
rm mycron
Run Code Online (Sandbox Code Playgroud)
当我运行这些命令时,我得到了答复: no crontab for root
我在这里做错了什么,我怎样才能得到它以便我可以使用 bash 脚本添加这个 cron 作业?谢谢你。
我有一个 crontab 文件,据说在加载项目虚拟环境后执行 Django 命令:
*/1 * * * * source /home/virtualenvs/mydjangoproject-venv/bin/activate && python /home/www/production/mydjangoproject/manage.py mydjangocommand
Run Code Online (Sandbox Code Playgroud)
...但它绝对没有任何作用。cron 日志输出没有特别的问题:
Mar 13 19:51:01 110 CRON[23807]: (root) CMD (source /home/virtualenvs/mydjangoproject-venv/bin/activate && python /home/www/production/mydjangoproject/manage.py mydjangocommand)
Run Code Online (Sandbox Code Playgroud)
不用说,当复制粘贴到 shell 中时,命令本身可以完美运行。
我知道它与我的 crontab 的环境变量有关,但我对这件事非常缺乏教育,而且我不知道该怎么做,尤其是当它在 python 虚拟环境下运行时。它应该使用我的用户环境变量吗?来自 virtualenv 的那些?如何实施?谢谢!
注意:如果有帮助,我的 crontab 环境变量有以下输出(当通过 crontab 将“env”导出到文件时):
HOME=/root
LOGNAME=root
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
LC_ALL=en_US.UTF-8
PWD=/root
Run Code Online (Sandbox Code Playgroud)
以及项目虚拟环境下的以下环境变量:
TERM=xterm-256color
SHELL=/bin/bash
SSH_CLIENT=x.x.x.x 53007 22
OLDPWD=/root/production/mydjangoproject
SSH_TTY=/dev/pts/0
LC_ALL=en_US.UTF-8
USER=root
VIRTUAL_ENV=/home/virtualenvs/mydjangoproject-venv
MAIL=/var/mail/root
PATH=/home/virtualenvs/mydjangoproject-
venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/root
LANG=en_US.UTF-8
PS1=(mydjangoproject-venv)${debian_chroot:+($debian_chroot)}\u@$(hostname -f):\w\$
SHLVL=1
HOME=/root
LS_OPTIONS=--color=auto --group-directories-first
LOGNAME=root
SSH_CONNECTION=x.x.x.x 53007 x.x.x.x 22 …Run Code Online (Sandbox Code Playgroud) 我想运行 .py 脚本:
python /home/project/manage.py slope_update
Run Code Online (Sandbox Code Playgroud)
如果我从 shell 运行它就可以了,但是在 cron 中不起作用:
*/10 * * * * root python /home/project/manage.py slope_update
Run Code Online (Sandbox Code Playgroud)
什么错?
我从 root 编辑我的 /etc/crontab 文件
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$ …Run Code Online (Sandbox Code Playgroud) 我有 4 台服务器,我希望每台服务器都在周日执行重新启动。
我怎样才能用 Crontab 做到这一点?谢谢!多坦。