11月22, 2023

linux篇---crontab定时执行任务命令详解

一:安装

ubuntu安装

安装:apt-get install cron

Centos安装

yum install vixie-cron
yum install crontabs

二:启动

ubuntu启动

安装:apt-get install cron
启动:service cron start
重启:service cron restart
停止:service cron stop
检查状态:service cron status
查询cron可用的命令:service cron
检查Cronta工具是否安装:crontab -l

Centos启动

# 启动服务 
service crond start 
# 关闭服务 
service crond stop 
# 重启服务 
service crond restart 
# 重新载入配置
service crond reload 
# 查看状态
service crond status 
# 设置开机自动启动crond服务:
chkconfig crond on 
# 开机级别的crond服务运行情况 ,2、3、4、5级别开机会自动启动crond服务 
chkconfig –list crond 
# 取消开机自动启动crond服务
chkconfig crond off
systemctl restart crond.service
systemctl status crond.service

三: 执行脚本(两种)

1.在命令行输入

# 添加相应的任务,wq存盘退出。
crontab -e # 配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务
# 列出当前的所有调度任务 
crontab -l 
# 列出用户jp的所有调度任务
crontab -l -u jp 
# 删除所有任务调度工作
crontab -r 

2.编辑文件

Linux下的任务调度分为两类:系统任务调度和用户任务调度。Linux系统任务是由 cron (crond) 这个系统服务来控制的,这个系统服务是默认启动的。用户自己设置的计划任务则使用crontab 命令。在CentOS系统中,

  • 直接编辑/etc/crontab 文件,即 vi /etc/crontab,添加相应的任务。

    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/
    # For details see man 4 crontabs
    # 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
  • 前四行是有关设置cron任务运行的环境变量。

  • SHELL:变量的值指定系统使用的SHELL环境(该样例为bash shell),

  • PATH:变量定义了执行命令的路径。

  • MAILTO: Cron的输出以电子邮件的形式发给MAILTO变量定义的用户名。如果MAILTO变量定义为空字符串(MAILTO=“”),电子邮件不会被发送。

  • HOME: 执行命令或脚本时HOME变量可用来设置基目录

  • 直接用户定义 所有用户定义的crontab 文件都被保存在 /var/spool/cron/crontabs 目录中。其文件名与用户名一致

四:命令详解

格式:

crontab [-u user] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
  • -u user:用于设定某个用户的crontab服务; file: file为命令文件名,表示将file作为crontab的任务列表文件并载入crontab;
  • -e:编辑某个用户的crontab文件内容,如不指定用户则表示当前用户;
  • -l:显示某个用户的crontab文件内容,如不指定用户则表示当前用户;
  • -r:从/var/spool/cron目录中删除某个用户的crontab文件。
  • -i:在删除用户的crontab文件时给确认提示。
    分钟   小时   日   月   星期   命令
    

第1列表示分钟1~59 每分钟用或者 */1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列 表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令 几个特殊符号的含义: “”代表取值范围内的数字, “/”代表”每”, “-”代表从某个数字到某个数字, “,”分开几个离散的数字

```

五:配置实例

每一分钟执行一次command(因cron默认每1分钟扫描一次,因此全为*即可)

* * * * * command

每小时的第3和第15分钟执行command

3,15 * * * * command

每天上午8-11点的第3和15分钟执行command:

3,15 8-11 * * * command

每隔2天的上午8-11点的第3和15分钟执行command:

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

每个星期一的上午8点到11点的第3和第15分钟执行command

3,15 8-11 * * 1 command

每晚的21:30重启smb

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

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

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

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

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

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

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

每一小时重启smb

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

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

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

每月的4号与每周一到周三的11点重启smb

0 11 4 * mon-wed /etc/init.d/smb restart

每小时执行/etc/cron.hourly目录内的脚本

0 1 * * * root run-parts /etc/cron.hourly

本文链接:https://587v5.com/post/linux-pian----crontab-ding-shi-zhi-xing-ren-wu-ming-ling-xiang-jie.html

Comments