标签: cron

使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

我有一个计划脚本,它每小时对我们的 Subversion 存储库进行 svnsync 备份。我从根 crontab 中的一个条目运行它没有问题,但决定我想从 /etc/cron.hourly 运行它以获得额外的可见性(并且因为我们的一位工程师不小心删除了 crontab,因为他认为“crontab -r" 的意思是"阅读 crontab ;-))

cron.hourly 脚本中的 svnsync 命令全部失败,并显示一条消息,指出需要接受 SVN 存储库的 SSL 证书(这是用户第一次访问 SVN 存储库时以交互方式获得的消息,但是一旦证书我接受消息不会再次出现)。

所以在我看来,从 cron.hourly 运行脚本时,脚本是在不同的用户环境下执行的,而不是通过 root crontab 运行时。谁能解释一下区别?

更新:我应该提到我的发行版,我在 CentOS 5.1 上使用 anacron。

更新 2:感谢到目前为止的建议;我认为这更像是一个 Subversion 问题。我总是尝试将我的环境封装到我的脚本中,但这里的问题是我不确定它在(或缺乏)环境中是什么使 SVN 在我运行我的脚本时要求接受 SSL 证书cron.hourly。我猜这与 run-parts 脚本的执行方式有关。

linux svn centos cron

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

使用 top 命令的 cron 脚本和 TERM 定义的问题

我在执行 cron 进程以检查服务器中当前的 CPU 使用情况时遇到问题。

我的脚本开始于:

top -c -n 1 -u www-data > /tmp/kill-cpu
Run Code Online (Sandbox Code Playgroud)

我可以在控制台中毫无问题地执行,但在 cron 中我得到

顶部:tty 获取失败

如果我使用 -b 选项到顶部

top -b -n 1
Run Code Online (Sandbox Code Playgroud)

我得到

'dumb':未知终端类型。

我使用 xterm 作为 TERM

感谢您的帮助 :)
Lito。

解决方案:我能够通过以下方式解决问题:

ln -s /lib/terminfo/d/dumb /usr/share/terminfo/d/dumb
Run Code Online (Sandbox Code Playgroud)

top term cron xterm

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

如果正文不为空,则从命令行发送邮件

我想编写一个简单的脚本,在日志更改时提醒我。为此,我使用 grep 来查找我感兴趣的行。现在它是这样工作的:

grep line /var/log/file | mail -s Log email@domain.tld
Run Code Online (Sandbox Code Playgroud)

问题是即使没有找到匹配的行,这也会发送邮件。mailutils 的邮件实用程序似乎没有开关告诉它丢弃正文为空的邮件。

有没有一种快速简便的方法呢?

email bash command-line-interface cron

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

每 10 分钟运行一次 cron 作业,从 4:40 到 0:15

我需要每 10 分钟运行一次 cron 作业,仅在 4:40 和 0:15 之间。我已经设法将 cron 作业安排在从 4 点到 0 点运行,但无法弄清楚如何进一步安排它。这就是我得出的结论:*/10 4-23,0 * * * script

cron

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

如何安排每两周一次的 cronjob?

crontab(5) 定义了以下字段:

       field         allowed values
       -----         --------------
       minute        0-59
       hour          0-23
       day of month  1-31
       month         1-12 (or names, see below)
       day of week   0-7 (0 or 7 is Sun, or use names)
Run Code Online (Sandbox Code Playgroud)

并解释说:

 Step values can be used in conjunction with ranges.  Following a range
 with ``/<number>'' specifies skips of the number's value through the
 range.  For example, ``0-23/2'' can be used in the hours field to specify
 command execution every other hour (the alternative in the V7 standard …
Run Code Online (Sandbox Code Playgroud)

cron

12
推荐指数
3
解决办法
4万
查看次数

我如何让 cron 在另一个星期天每隔一个星期天运行一次?

我有一个在 0 0 * * 0/2 运行的 cron 作业——即每隔一个星期天。例如,它现在刚刚运行。但是,我希望它在其他星期天运行——下个星期日,而不是这个星期天。另一种说法:我认为它在一年中的偶数星期日运行,但我希望它在奇数星期日运行。

我在“man 5 crontab”中没有看到任何可以帮助我解决这个问题的东西,所以我想我需要回到在 0 0 * * 0 运行 cronjob 然后在我运行的命令中做一些事情来检查它是哪个星期天是。任何人都可以帮我一些合适的命令行技巧吗?

ETA:已经意识到我的 0/2 根本没有按照我最初的想法(每个第二个星期天)做。它每周日运行,只要一周中的那一天可以被 2 整除,当然可以。哦。无论如何,基本要求仍然存在:在奇数星期日运行命令。

cron date

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

cron 使用什么邮件程序发送邮件?

我正在尝试调试 cron 没有在我没有配置的 Centos 6 机器上发送邮件的问题。如何确定 cron 使用哪个邮件程序发送邮件?crontab 手册页有这么一段话:

除了 LOGNAME、HOME 和 SHELL,cron(8) 将查看 MAILTO,如果它有任何理由由于在“这个”crontab 中运行命令而发送邮件。如果 MAILTO 已定义(且非空),则邮件将发送给如此命名的用户。如果 MAILTO 已定义但为空 (MAILTO=""),则不会发送邮件。否则邮件将发送给 crontab 的所有者。 如果您在安装 cron 时决定使用 /bin/mail 而不是 /usr/lib/sendmail 作为邮件程序,则此选项很有用 -- /bin/mail 不执行别名,并且 UUCP 通常不读取其邮件。

带星号的部分是让我想知道的部分:“好吧,是 sendmail 还是 mail?”

sendmail centos cron centos6

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

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万
查看次数

每天使用不同的参数运行 cronjob

我是一名程序员,对 cron 了解不多,但我想知道这是否可能。

假设我有一个数组[option1, option2, option3]和一个在 NodeJS 中运行的脚本,名为script.js. 我想每天凌晨 1 点运行这个脚本。这个cron命令是:

0 1 * * * node ~/script.js
Run Code Online (Sandbox Code Playgroud)

现在是棘手的部分,我想每天轮换选项,例如,我想在星期一运行node ~/script.js option1,第二天node ~/script.js option2等等。另外,我希望能够在需要时添加/删除选项,但旋转应该保持不变。

这有可能吗?我知道我也可以在节点内执行此操作,但我宁愿从脚本外部执行此操作,并保持脚本原样。

cron

12
推荐指数
3
解决办法
3202
查看次数

为什么我的 CentOS logrotate 会随机运行?

我放入了一个logrotate配置文件,/etc/logrotate.d/并希望日志在一致的时间轮换;但是,它们不会……日志轮换时间似乎是随机的 +/- 一小时。

为什么日志轮换开始时间是随机的,我该如何更改?


信息:我的 logrotate 配置文件看起来像这样......

/opt/backups/network/*.conf {
        copytruncate
        rotate 30
        daily
        create 644 root root
        dateext
        maxage 30
        missingok
        notifempty
        compress
        delaycompress
        postrotate
            ## Create symbolic links in daily/
            PATH=`/usr/bin/dirname $1`;
            FILE=`/bin/basename $1`;
            /bin/ln -s $1 $PATH/daily/$FILE
        endscript
}
Run Code Online (Sandbox Code Playgroud)

linux centos logrotate cron

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

标签 统计

cron ×10

centos ×3

linux ×3

bash ×1

centos6 ×1

command-line-interface ×1

date ×1

email ×1

logrotate ×1

scheduler ×1

sendmail ×1

svn ×1

term ×1

top ×1

xterm ×1