Linux --- Crontab

一、环境

1. CentOS 7.9

2. Crontab

Crontab是Linux下的一个执行定时任务的守护进程(daemon),它有一个文件里面维护着所有需要定时执行的任务条目。

二、安装

1. 安装

默认情况下CentOS7已经安装了Crontab:

rpm -qa | grep crontab

2. 服务

Crontab的服务名称是crond

(1) 状态

systemctl status crond

三、配置

1. 配置目录

(1) master

在/etc目录下,有4个/etc/cron.*目录,它们分别是:

目录 执行时间
/etc/cron.hourly 每小时的第一分钟
/etc/cron.daily 每天3:05 AM到10.55 PM之间
/etc/cron.weekly 上次执行后第7天的3:25 AM到11:10 PM之间
/etc/cron.monthly 上次执行后一个月的3:45 AM到11:30 PM之间

存放于上述4个目录中脚本将会分别按照上表中的执行时间执行。

(2) user

用户级别的配置文件位于/var/spool/cron/目录下。

2. crontab命令

Usage:
 crontab [options] file
 crontab [options]
 crontab -n [hostname]

Options:
 -u [user]  define user
 -e         edit user's crontab or create one if it doesn’t already exist
 -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

3. crontab配置文件

(1) 使用crontab最简单的方式是运行:

sudo crontab -e

(2) 在打开的配置文件中编辑crontab条目,条目的语法为

{minute} {hour} {day of month} {month} {day of week} [user-name] [command to be executed]

(3) 前五个参数为定时任务执行的时间参数,它们的取值如下:

field          allowed values
-----          --------------                  
minute         0-59                  
hour           0-23                  
day of month   0-31                  
month          0-12 (or names, see below)                  
day of week    0-7 (0 or 7 is Sun, or use names)

时间参数可以是*,*代表任意时间,比如

0 1 * * *

代表每天1点执行。

(4) 例子

# 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
 |  |  |  |  |
 0  1  *  *  *  [user-name] [command to be executed]

例1: 每天00:05分执行脚本

5 0 *  *  *     /home/oracle/scan_asm_devices.sh

例2: 每月第一天的17:30分执行命令

30 17 1  *  *   mail -s "It's 5:30pm"

例3: 每周一的04:05分执行echo命令

5  4  *  *  mon echo "run at 5 after 4 every monday"

例4:每分钟执行脚本

* * * * *  /home/scripts/test.php

4. 访问控制

Crontab有两个配置文件控制可以使用crontab的用户,它们分别是:

/etc/cron.allow 允许文件中的用户使用crontab;

/etc/cron.deny 禁止文件中的用户使用crontab;

默认情况下,仅有空的/etc/cron.deny文件存在,如果两个文件都不存在,则仅允许root用户使用crontab。

如果一个用户同时出现在/etc/cron.allow和/etc/cron.deny中,则/etc/cron.deny将会被忽略。

5. 日志

可以通过以下命令查看crontab的日志:

cat /var/log/cron
tail -f /var/log/cron

四、参考

https://www.adminschoice.com/crontab-quick-reference

https://www.thegeekdiary.com/centos-rhel-begginners-guide-to-cron/

http://lampblogs.com/blog/how-to-schedule-cron-jobs-with-crontab-in-centos-7

https://linuxhint.com/a-beginners-guide-to-crontab-on-centos/

posted @ 2023-01-01 23:37  白马黑衣  阅读(686)  评论(0编辑  收藏  举报