linux定时任务crontab

对于定时任务,一般记住命令和语法就可以应用了。

1. 命令

crontab -u 指定一个用户

crontab -l 列出当前用户的所有定时任务

crontab -r 删除当前用户的所有定时任务

crontab -e 编辑当前用户的任务, 可以添加,删除一个任务,可直接用vim进行编辑。

2. 语法

分       小时    日        月       星期     命令

0-59   0-23    1-31    1-12     0-6     command     (取值范围,0表示周日一般一行对应一个任务)

几个特殊符号的含义:

  “*”     代表取值范围内的数字,
  “/”     代表”每”,
  “-”     代表从某个数字到某个数字,
   “,”    分开几个离散的数字

知晓这些就可以自定义你想要实现的定时功能了。

以下为一些例子:

5 3 × × × test.sh  3点05时执行一下脚本test.sh
×/15 × × × × test.sh 每隔15分钟执行一下脚本test.sh
30 8-12 * * * test.sh 每天8到12点的第30分钟执行以下脚本test.sh
10 3,6,9 * * * test.sh 每天3点,6点,9点的第10分钟执行一下脚本test.sh

对日,月的用法与小时分钟一样。

3. 需要注意的问题

(1)脚本中凡是用到路径的地方,最好使用绝对路径。脚本中若调用其他脚本,可以cd到相应脚本的路径,调用时使用 ./test2.sh 而不要直接使用test2.sh,否则会找不到该脚本。

(2)若调用二进制命令,例如c++生成的命令,若其有链接一些动态库,如lib_boost_system.so,则要在脚本中定义LD_LIBRARY_PATH的值,export LD_LIBRARY_PATH=/lusr/local/boost/lib: ,否则命令会找不到该动态库。

(3)还有一点是,在crontab中的任务,其运行目录是什么,我查了一些资料,有人说是当前用户的home目录,未作测试,若有需求,可以用pwd命令看一下具体的目录是什么。

4. 还有。。。

一般来说,使用crontab -e将任务添加进去,就可以实现定时功能了。若没有实现,则需要查看该服务是否启动,具体命令根据具体的linux系统版本去搜索,在此不列出。定时任务执行完时会发送一封邮件,若不想占据邮箱空间,可以将输出结果丢弃。使用 5 3 × × × test.sh>/dev/null 2>&1  “/dev/null 2>&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出。

原文地址:https://www.cnblogs.com/sssblog/p/10143787.html