标签: cron

如何创建每三周运行一次任务的 cron 作业?

我有一项任务需要按照我的项目时间表(3 周)执行。

我可以设置cron每周或(例如)在每个月的第三周执行此操作 - 但找不到每三周执行此操作的方法。

我可以破解脚本来创建临时文件(或类似文件),这样它就可以算出它是第三次运行了 - 但这个解决方案很糟糕。

可以以干净的方式完成吗?

unix cron

10
推荐指数
2
解决办法
5397
查看次数

如何在 OSX 10.6.2 上运行 cron?

注意:这个问题不是关于如何编辑 cron 选项卡,而是如何使 cron 工作


  1. 我编辑了我的 cron 使用 env EDITOR=joe crontab -e
  2. 1 * * * * echo 'test' > /Users/radek/Backup/rationalvmware/test.txt尽管 cron 设置正确,但我输入了它,但它什么也没做。通过 Cronnix 检查并查看 /var/cron/tabs 中的 cron。使用 Cronnix 编辑 crontab 给了我相同的结果。

如果我echo 'test' > /Users/radek/Backup/rationalvmware/test.txt手动运行它会按预期创建一个文件,所以我假设我提供给 cron 的命令是正确的。

有没有什么特别的我必须做的,就OSX的cron作业?我如何检查 cron 正在运行。

OSX 上的 /var/log/messages 相当于什么?我可以在 SuSE 上的消息中看到 cron 有效。

cron macos

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

crontab 中 $RANDOM 的问题

我在 cron 中遇到了 $RANDOM 一个奇怪的问题。我希望在 cronjob 触发后随机数分钟执行命令。

此示例直接在终端中运行并将命令延迟最多 30 秒(将命令替换为您想要的任何内容,它实际上是对 /dev/ttyUSB0 的回显):

sleep `expr $RANDOM \% 30` ; command
Run Code Online (Sandbox Code Playgroud)

如果在 crontab 中放置了同一行,则该命令始终会立即触发而不会延迟:

* * * * * sleep `expr $RANDOM \% 30` ; command
Run Code Online (Sandbox Code Playgroud)

如果我使用没有 $RANDOM 的表达式,它工作正常 - 这会延迟 15 秒:

* * * * * sleep `expr 10 + 5` ; command
Run Code Online (Sandbox Code Playgroud)

换句话说,似乎 $RANDOM 在 cron 中不起作用。

但这不仅仅是因为 $RANDOM 本身的计算结果为零,因为这应该会延迟 10:

* * * * * sleep `expr $RANDOM \% 30 + 10` ; command
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用 && instread ; …

linux cron

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

我是如何消灭所有的 cron 工作的?

我不小心抹去了我所有的 cron 工作。我不确定我做了什么。我不记得通过发出crontab -e. 有哪些可能的方法可以完全消除 cron 作业?

cron

10
推荐指数
2
解决办法
5879
查看次数

cron 无法读取 PYTHONPATH 环境变量?

我已添加到服务器的 .bash_profile 文件中的 PYTHONPATH。但是,cron 似乎没有从中读取数据,因为我遇到了导入错误。如果我在命令行上运行确切的命令 cron 调用它可以工作,但是如果我将 cron 的错误输出发送到一个单独的文件,它在导入时会失败。

我如何构建它以便 cron 知道我附加的 PYTHONPATH

python cron environment-variables crontab

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

如何在格林威治标准时间而不是当地时间运行 cron 作业?

如何让 cron 作业在格林威治标准时间而不是当地时间运行?

这是我的 crontab 文件:

#m  h           d   m   wday    command
TZ=GMT
5   0,6,12,18   *   *   *   ~/Documents/bash/transfer.sh
Run Code Online (Sandbox Code Playgroud)

我的工作似乎在本地时间 (GMT+11) 运行我正在运行 os x snow leopard,但是在开发完成后会将代码移到 linux 上。

linux 环境可能是一个共享环境,我可能对配置的控制较少。

time cron time-zone crontab

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

bash:在 cron 作业中使用 scp 失败,但从命令行运行时运行成功

我正在尝试在由 cron 运行的 bash 脚本中使用 scp(我在 Ubuntu 10.0.4 LTS 上运行它)。

该脚本工作正常(即,当我从命令行运行它时,向/从远程服务器传输和复制 file1 和 file2。但是,当我将脚本作为 cron 作业运行时,它失败了。

这就是脚本的样子:

#!/bin/bash

cd /home/oompah/scripts/tests/
scp -P 12345 file1 oompah@someserver.com:~/uploads

if scp -P 12345 oompah@someserver.com:/path/to/file2.dat local.dat >&/dev/null ; then 
    echo "INFO: transfer OK" ; 
else 
    echo "ERROR: transfer failed" ; 
fi
Run Code Online (Sandbox Code Playgroud)

当我将它作为 cron 作业运行时,我得到的错误消息(重定向到日志文件)是:

ERROR: transfer failed
Run Code Online (Sandbox Code Playgroud)

我发送到我的邮件收件箱的错误消息是:

Permission denied (publickey).
lost connection
Run Code Online (Sandbox Code Playgroud)

为什么会发生,我该如何解决?

[编辑]

我用 -i 命令修改了第一个 scp 命令(如 M Jenkins 建议的那样),我还添加了 -v 用于调试消息。这是完整的调试消息日志。希望它可以阐明正在发生的事情:

Executing: program /usr/bin/ssh host 12.34.56.78, user oompah, command scp -v …
Run Code Online (Sandbox Code Playgroud)

ssh bash cron scp ubuntu

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

按照本地时间而不是世界时间运行 Cronjobs

正在运行

dpkg-reconfigure tzdata

在终端中,我在我的机器上有 2 个不同的时间

Local time is now:      Wed May  1 11:58:55 IST 2013.
Universal Time is now:  Wed May  1 06:28:55 UTC 2013.
Run Code Online (Sandbox Code Playgroud)

问题是我想按照 IST 中的本地时间运行我的 cronjobs,但它们按照世界标准时间 UTC 运行。我需要在哪里进行必要的更改才能实现所需的行为?

cron ubuntu-server crontab ubuntu-12.04

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

为什么 cron 只提供微小的粒度?

感觉有些用例你希望每 5 秒运行一次,每分钟运行两次,等等,但是这些对于 cron 来说是不可能的。为什么现代操作系统没有内置二级 cron 粒度?(或者有它而我不知道..?)

cron

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

BASH - 使用 mv 时合并目录

我刚开始使用 BASH,所以我可以将一个目录的所有内容移动到另一个目录。但问题是,我期待它合并目录。我正在使用 cron 作业来运行此脚本。

#!/bin/bash

shopt -s dotglob nullglob
mv mv_schedule/* public_html/
Run Code Online (Sandbox Code Playgroud)

来源:(/mv_schedule/包含文件夹/文件)

/files/
4.html
5.html
/assets/
sitemap.xml
Run Code Online (Sandbox Code Playgroud)

目的地:(/public_html/以前的文件夹已经存在)

/files/
1.html
2.html
3.html
/assets/
sitemap.xml
Run Code Online (Sandbox Code Playgroud)

所以,我想要的东西,是所有来自这些目录内的新文件/mv_schedule/与在那些合并/public_html/,并已经在那里存在的文件,与那些来自何处来代替/mv_schedule/

当我使用当前脚本尝试此操作时,它当前正在通过电子邮件返回此错误:

mv: cannot move `mv_schedule/assets' to `public_html/assets': Directory not empty
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

linux unix bash cron

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