2021-12-26 Linux定时任务

Cron是Linux系统中以后台进程模式,周期性执行的服务。
服务对应的进程名为Crond。
时间间隔的最小单位为分钟
注意:集群环境下需要同步时间 NTP

# 查看是否安装
[root@localhost ~]# rpm -qa cronie
cronie-1.4.11-23.el7.aarch64

# 查看安装路径信息
[root@localhost ~]# rpm -ql cronie
/etc/cron.d
/etc/cron.d/0hourly
/etc/cron.deny
/etc/pam.d/crond
/etc/sysconfig/crond
/usr/bin/crontab
/usr/lib/systemd/system/crond.service
/usr/sbin/crond
/usr/share/doc/cronie-1.4.11
/usr/share/doc/cronie-1.4.11/AUTHORS
/usr/share/doc/cronie-1.4.11/COPYING
/usr/share/doc/cronie-1.4.11/ChangeLog
/usr/share/doc/cronie-1.4.11/INSTALL
/usr/share/doc/cronie-1.4.11/README
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/man/man8/cron.8.gz
/usr/share/man/man8/crond.8.gz
/var/spool/cron

# 查看系统定时任务,在/etc目录下,以cron开头的
[root@localhost ~]# ls -al /etc/ | grep cron
-rw-------.  1 root root    541 Aug  9  2019 anacrontab
drwxr-xr-x.  2 root root   4096 Dec 25 12:42 cron.d
drwxr-xr-x.  2 root root   4096 Dec 25 10:47 cron.daily
-rw-------.  1 root root      0 Aug  9  2019 cron.deny
drwxr-xr-x.  2 root root   4096 Dec 25 10:46 cron.hourly
drwxr-xr-x.  2 root root   4096 Jun 10  2014 cron.monthly
-rw-r--r--.  1 root root    451 Jun 10  2014 crontab
drwxr-xr-x.  2 root root   4096 Jun 10  2014 cron.weekly

种类

croud

atd

临时的,运行一次

anacron

非7*24小时的

系统定时任务

  1. cron.hourly 每小时运行的定时任务
  2. cron.daliy 每天运行的定时任务
  3. cron.weekly 每周运行的定时任务
  4. cron.monthly 每月运行的定时任务
  5. cron.deny 拒绝定时任务黑名单
  6. crontab 定时任务配置文件

案例1:日志分割,系统定时任务+logrotate

# 案例位置
[root@localhost ~]# cd /etc/cron.daily/
[root@localhost cron.daily]# ll
total 8
-rwx------. 1 root root 219 Apr  1  2020 logrotate
-rwxr-xr-x. 1 root root 618 Oct 30  2018 man-db.cron

案例2:locate定时更新db,系统定时任务+mlocate

案例位置同案例1

用户定时任务

重要文件&目录

/var/log/cron,系统定时任务文件,不显示对错信息
/etc/deny,定时任务黑名单
/var/spool/cron,每分钟都会查看该路径下系统用户和root

如何使用

crontab命令, cron table定时任务列表

常见的参数

crontab -l 查看定时任务列表
crontab -e 编辑定时任务列表
crontab -r 删除定时任务列表
crontab -i 交互
crontab -u 指定用户定时任务列表

特殊符号
          • user-name command to be executed
            分 时 日 月 周
            分钟 0-59
            小时 0-23
            日 1-31
            月 1-12或英文
            周 周数/周几/星期几/0-6
            / 表示间隔,每分钟、每小时
[root@localhost cron]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 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

步骤

  1. crontab -e
  2. 按照格式写好 * * * * *
  3. 按照需求替换 每个*对应的值
# 每天8:30分执行updatedb
30 8 * * * updatedb
# 每天早上4点00分执行/root/backup.sh脚本
0 4 * * * /root/backup.sh
# 每周六凌晨1点10分,重启httpd服务
10 1 * * 6 systemctl restart httpd
# 每周六和周日凌晨1点10分,重启httpd服务
10 1 * * 6,0 systemctl restart httpd
# 每月1号 10号 20号 PM1点45分,重启httpd服务
45 13 1,10,20 * * systemctl restart httpd
# 每隔1小时,重启httpd服务
0 */1 * * * systemctl restart httpd
# 每月4号与周1-周三晚上11点,重启httpd服务
0 23 4 * 1-3 systemctl restart httpd
# 每周五凌晨5点通过rsync实现备份
0 5 * * 5 rsync -avzP a.txt [email protected]::data  --password-file=/etc/rsync.pass

你可能感兴趣的:(2021-12-26 Linux定时任务)