Cron

阅读量:

Cron 本身是一个守护进程,是 Linux 下的计划任务管理工具,在后台运行,通过配置文件“crontab”来根据时间调度指定的作业执行。

  • cron 是大多数 linux 发行版都自带的守护进程(daemon)
  • cron job 是指定义好的在指定时间运行的任务
  • crontab(cron table 的简称) 既可以指 cron 用来定期执行特定任务所需要的列表文件,又可以指用来创建、删除、查看当前用户(或者指定用户)的 crontab 文件的命令。
# Check cron service on Linux system
sudo systemctl status cron.service

crontab 命令

  • crontab -a <filename>: 创建一个新的文件 <filename> 作为 crontab 文件
  • crontab -e: 编辑 crontab 文件,若不存在则新建
  • crontab -l: 列出 crontab 文件
  • crontab -r: 删除所有 crontab 文件
  • crontab -v: 显示最近一次编辑的 crontab 文件

配置文件

系统默认 crontab 文件为/etc/crontab,以及/etc/cron.d/目录下的文件,有些程序会把自己的 crontab 文件放在/etc/cron.d/目录下。cron 守护进程会检查/etc/crontab 以及/etc/cron.d/目录下的文件,根据这些文件中的 cron 任务所设置的执行时间决定是否执行任务,如果当前时间与 cron 任务所设置的执行时间相同,则执行任务。

每个用户自己的 crontab 文件都会被放在 /var/spool/cron 目录下,默认为空,可以使用 crontab 命令创建。cron 守护进程会检查/var/spool/cron 目录下的文件,根据这些文件中的 cron 任务所设置的执行时间决定是否执行任务,如果当前时间与 cron 任务所设置的执行时间相同,则执行任务。

语法

SHELL=/bin/bash
MAILTO=root@example.com
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

# 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


*	any value
,	value list separator
-	range of values
/	step values

cron figure 1.png

查看 cron 语法的网站 https://crontab.guru/

示例

* * * * * cd /home/audhi && /bin/bash shell-script.sh >> log.out
  • * * * * * 表示任务将会每分钟执行一次
  • 工作目录将会切换至 /home/audhishell-script.sh 储存在该目录下
  • /bin/bash 是 bash 的可执行程序
  • >> 将执行结果添加至 log.out 文件中,若使用 > 则会对文件进行覆盖
  • shell-script.sh 是具体的 bash 脚本

相关命令

  1. 列出所有运行中的 cron 任务

     ps fauxww | grep -A 1 '[C]RON'
    

#待整理笔记

反向链接

到头儿啦~

局部关系图