linux crontab 定时任务

发布于 2022-03-14  155 次阅读


crontab用于执行周期性命令

安装crontab

 yum install vixie-cron
 yum install crontabs

vixie-cron软件包是cron的主程序; crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序

开启服务

 service crond start //启动服务
 service crond stop //关闭服务
 service crond restart //重启服务
 service crond reload //重新载入配置
 service crond status //查看服务状态

配置文件目录

/var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名

/etc/crontab 这个文件负责调度各种管理和维护任务。

/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。

我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。

常用命令

 crontab [-u username]    //省略用户表表示操作当前用户的crontab
    -e     (编辑工作表)
    -l     (列出工作表里的命令)
    -r     (删除工作作)
 ​
 //crontab -l -u jp 列出用户jp的所有调度任务
 ​

新增任务

第一种方法:

 crontab -e

第二种方法:

 vi /etc/crontab

crontab -e配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务

crontab 工作表格式

我们用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一条命令。

crontab的命令构成为 时间+动作,其时间有分、时、日、月、周五种

 # Example of job definition:
 # .---------------- 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
 # | | | | |
 # * * * * * user-name command to be executed

minute - 从0到59的整数

hour - 从0到23的整数

day - 从1到31的整数 (必须是指定月份的有效日期)

month - 从1到12的整数 (或如Jan或Feb简写的月份)

dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)

command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令)

* 取值范围内的所有数字,表示所有可用的值

/ 每过多少个数字,如0-59/2定义每两分钟执行一次,步进值也可用星号表示。如*/3用来运行每三个月份运行指定任务。

- 表示整数列,例如1-4意思是整数1,2,3,4

散列数字,指定数值由逗号分开。如:3,4,6,8表示这四个指定整数

以“#”开头的为注释行,不会被执行。

例子

实例1:每1分钟执行一次myCommand

 * * * * * myCommand

实例2:每小时的第3和第15分钟执行

 3,15 * * * * myCommand

实例3:在上午8点到11点的第3和第15分钟执行

 3,15 8-11 * * * myCommand

实例4:每隔两天的上午8点到11点的第3和第15分钟执行

 3,15 8-11 */2  *  * myCommand

实例5:每周一上午8点到11点的第3和第15分钟执行

 3,15 8-11 * * 1 myCommand

实例6:每晚的21:30重启smb

 30 21 * * * /etc/init.d/smb restart

实例7:每月1、10、22日的4 : 45重启smb

 45 4 1,10,22 * * /etc/init.d/smb restart

实例8:每周六、周日的1 : 10重启smb

 10 1 * * 6,0 /etc/init.d/smb restart

实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb

 0,30 18-23 * * * /etc/init.d/smb restart

实例10:每星期六的晚上11 : 00 pm重启smb

 0 23 * * 6 /etc/init.d/smb restart

实例11:每一小时重启smb

 0 */1 * * * /etc/init.d/smb restart

实例12:晚上11点到早上7点之间,每隔一小时重启smb

 0 23-7/1 * * * /etc/init.d/smb restart

笔记源:

https://www.runoob.com/w3cnote/linux-crontab-tasks.html

https://www.cnblogs.com/bcphp/p/7084967.html


THE END