linux查询crontab进程,【Linux】定时任务crontab

在Linux或类Unix系统中,通常使用 crontab 命令在指定的时间执行一个shell脚本或者一系列Linux命令,也就是通常所说的定时任务。

一、cron 进程

在详细介绍crontab之前,必须要说一下 cron 进程。

1、cron进程是linux中的守护进程,在系统后台运行,它会(默认每分钟)持续地检查/etc/crontab文件、/etc/cron.*/目录、/var/spool/cron/ 目录,读取调度任务并执行。

2、所有用户创建的crontab文件都保存在/var/spool/cron/ 目录,被cron服务定时检查。

二、crontab命令:

crontab 命令可以用来创建、编辑、查询、删除定时任务。

通过 crontab 命令,每个用户都可以编辑或者配置自己的定时任务,并拥有自己的 crontab 文件。

1、创建/编辑 crontab 文件

在 linux 命令行中输入crontab -e, 即可创建或编辑用户自己的crontab文件:

crontab -e

当crontab文件不存在时,即为创建;已存在时即为编辑;

此时,可以输入具体的crontab命令,用来增加、修改或删除当前用户的某一项任务。

在crontab文件中,每一行命令代表一个定时任务!

2、crontab 语法(字段介绍)

crontab -e之后,即可输入crontab命令,具体语法如下:

1 2 3 4 5 /path/to/command arg1 arg2

或者:

1 2 3 4 5 /root/ntp_sync.sh

各字段的格式:

{minute}

{hour}

{day-of-month}

{month}

{day-of-week}

{full-path-to-shell-script}

分钟 (0-59)

小时 (0-23)

日期 (1-31)

月份 (1-12)

一周当中的某天 (0-7 [7 或 0 代表星期天])

计划执行的脚本或命令的完整路径

3、crontab 命令示例

(结合第4部分的操作符使用方法一起学习)

# 每隔 5 分钟运行一次 backupscript 脚本 ##

*/5 * * * * /root/backupscript.sh

### 每天的凌晨 1 点运行 backupscript 脚本 ##

0 1 * * * /root/backupscript.sh

### 每月的第一个凌晨 3:15 运行 backupscript 脚本 ##

15 3 1 * * /root/backupscript.sh

### 每个工作日(Mon – Fri) 11:59 p.m 都进行备份作业。

59 23 * * 1,2,3,4,5 /root/bin/backup.sh

或者:

59 23 * * 1-5 /root/bin/backup.sh

### 每周六、周日的3点10分执行hello.sh

10 3 * * 0,6 hello.sh

### 晚上11点到早上8点之间每两个小时,及每天早上八点,输出信息到文件中

0 23-7/2,8 * * * echo "have a good dream:)" >> /tmp/test.txt

### 每个月的4号与每个礼拜的礼拜一到礼拜三的早上11点执行命令

0 11 4 * 1-3 command

可以把经常要做的一些事放到其中,简化工作量,如每周一检查服务器的运行状态,查看报告,杀掉一些进程等等……

4、crontab 命令辅操作符

操作符允许为一个字段指定多个值,这里有三个操作符可供使用:

星号 (*): 代表任何时刻

举个例子,在小时字段中,一个星号等同于每个小时;在月份字段中,一个星号则等同于每月。

逗号 (,): 在一个字段上指定多个值,例如:1,5,10,15,20,25

横杠 (-): 指定了一个值的范围

例如:5-15 ,等同于使用逗号操作符键入的 5,6,7,8,9,...,13,14,15。

分隔符 (/): 代表‘每’,/n表示每隔n单位间隔

例如:小时字段为*/5 表示每5小时,也可以写成0-23/5,意思一样。其它字段也是类似的。

5、crontab 查看和删除某用户所有的定时任务

crontab -l # 默认查看当前用户的所有定时任务

# 使用-u 参数查看指定用户的定时任务,需要以root用户身份执行

crontab -u username -l

crontab -r # 删除当前用户的crontab的所有任务内容,慎用!

### 删除指定用户名下的定时任务,需要以 root 用户身份执行,慎用!

crontab -r -u username

6、禁用邮件输出

默认情况下,某个命令或者脚本的输出内容(如果有的话)会发送到你的本地邮箱账户中。若想停止接收 crontab 发送的邮件,需要添加 >/dev/null 2>&1 这段内容到执行的命令的后面,例如:

0 3 * * * /root/backup.sh >/dev/null 2>&1

7、使用特殊字符串

linux中提供了以下 8 个特殊字符串,可以用来替代crontab命令的前五个字段,这样不但可以节省时间,还可以提高可读性。

特殊字符

含义

@reboot

在每次启动时运行一次

@yearly

每年运行一次, 等同于 “0 0 1 1 *”

@annually

(同 @yearly)

@monthly

每月运行一次, 等同于 “0 0 1 ”

@weekly

每周运行一次, 等同于 “0 0 0”

@daily

每天运行一次, 等同于 “0 0 *”

@midnight

(同 @daily)

@hourly

每小时运行一次, 等同于 “0 ”

示例:

## 每小时运行一次 ntpdate 命令

@hourly /path/to/ntpdate