crontab 使用方法

SHELL BASH CRONTAB

Posted by gomyck on January 7, 2020

crontab 是linux系统内置的任务调度程序, 可以自定义任务调度在指定的时间段调用指定的 shell 命令

配置文件

crontab 配置文件位置: /var/spool/cron/

使用方法

1
2
3
4
5
6
7
8
9
10
11
Options:
 -u <user>  define user
 -e         edit user's crontab
 -l         list user's crontab
 -r         delete user's crontab
 -i         prompt before deleting
 -n <host>  set host in cluster to run users' crontabs
 -c         get host in cluster to run users' crontabs
 -s         selinux context
 -x <mask>  enable debugging

常用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 为一个用户指定任务文件, 执行之后, 会同步在 /var/spool/cron/ 文件夹内创建相同的配置
# crontab [-u user] file
$ crontab -u gomyck gomyck_cron

# 指定一个文件为当前 crontab 的调度配置文件
# 相当于使用了 crontab -e, 并把 fileName 中的配置替换进去
$ crontab fileName

# 编辑当前用户的调度文件
$ crontab -e

# 查看当前用户的调度配置
$ crontab -l

cron 表达式

1
2
3
4
5
6
7
8
9
Cron Express:
 .---------------- minute (0 - 59)
 |  .------------- hour (0 - 23)
 |  |  .---------- day of month (1 - 31)
 |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
 |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)  OR sun,mon,tue,wed,thu,fri,sat
 |  |  |  |  |
 *  *  *  *  *  [who(用户)] [command(执行脚本) | run-parts(执行指定文件夹下的脚本)]

常用 cron 配置示例

1
2
3
4
5
6
7
8
9
# 每小时(第一分钟)执行/etc/gomyck内的脚本
01 * * * * root run-parts /etc/gomyck

# 每两个小时, 以 root 用户执行 echo
0 */2 * * * root echo "Hello" >> /home/demo.txt

# 10 点 10 分执行两个命令, 命令之间以 ; 间隔
10 10 * * * (rm -rf /var/demo.txt;touch demo.txt)