相关疑难解决方法(0)

Cronjob 每两周运行一次,从本周六开始

今天是 2014 年 10 月 3 日星期五凌晨 3:58

我想安排一个像这样的 cronjob 在以下日期运行它:

  1. 2014 年 10 月 4 日星期六 8:00
  2. 2014 年 10 月 18 日星期六 8:00
  3. 2014 年 11 月 1 日星期六上午 8:00 ... ...

所以每两周一次,在星期六,在 8 点。

linux cron scheduler

12
推荐指数
2
解决办法
5万
查看次数

Cron 失败,退出状态为 127

我试图让我的 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)

所以这让我认为它就像一个 …

ubuntu cron

9
推荐指数
1
解决办法
3万
查看次数

logrotate 不会自动旋转我的日志

我有两个不同的 (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

debian logrotate debian-squeeze

9
推荐指数
2
解决办法
3万
查看次数

在 Crontab 中指定每 n 分钟的通用方法,其中 n > 60

在 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 分钟”的问题,该问题在链接的问题中没有解决。

linux cron

9
推荐指数
3
解决办法
3665
查看次数

8
推荐指数
2
解决办法
7万
查看次数

找不到我的 cron 任务报告命令

这是我的 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 文件的 …

ubuntu shell bash cron

8
推荐指数
1
解决办法
5844
查看次数

使用 bash 脚本添加 cronjob - root 没有 crontab

我有一个部署脚本,我试图在其中添加一个 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 作业?谢谢你。

linux debian shell bash cron

7
推荐指数
1
解决办法
2万
查看次数

通过虚拟环境运行 Django Python 命令的 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)

python environment-variables django cron

7
推荐指数
1
解决办法
3494
查看次数

在 cron 中运行带参数的脚本

我想运行 .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)

scripting cron

6
推荐指数
1
解决办法
4万
查看次数

如何在每月的第一个、第二个、第三个和第四个星期日使用 crontab 执行命令

我有 4 台服务器,我希望每台服务器都在周日执行重新启动。

  • 服务器 1 - 每月的第一个星期日(第一周)
  • 服务器 2 - 每月的第二个星期日(第二周)
  • 服务器 3 - 每月的第三个星期日(第三周)
  • 服务器 4 - 本月的第四个星期日(第 4 周)

我怎样才能用 Crontab 做到这一点?谢谢!多坦。

linux centos cron

6
推荐指数
1
解决办法
2276
查看次数