crontab

crontab 用于执行 周期性 被执行指令

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


crontab 储存的指令被守护进程激活,crond 为其守护进程,crond 常常在后台运行,每一分钟会检查一次是否有预定的作业需要执行


1. 使用准备

启动 rsyslog 方便查看 日志信息

sudo apt-get install -y rsyslog
sudo service rsyslog start

手动 启动 crontab (默认已经启动应该)

​sudo cron -f &​

2. crontab 的基础使用

添加计划任务

​crontab -e​

选择 第二个 vim 即可

在最后加入如下代码

​*/1 * * * * touch /home/shiyanlou/$(date +\%Y\%m\%d\%H\%M\%S)​

格式是

【Linux】学习笔记(十) Linux 计划任务 crontab_计划任务

m h don mon dow command

分 时 日 月 天 命令


“ % ” 在 crontab 文件中,有结束命令行、换行、重定向的作用,前面加 ” \ ” 符号转义,否则,“ % ” 符号将执行其结束命令行或者换行的作用,并且其后的内容会被做为标准输入发送给前面的命令。


保存退出即可 :wq

提示 installing new crontab 正在安装

查看运行的 计划任务

​crontab -l​

如果没有成功执行可能没有 运行 cron

检测 cron 运行

ps aux | grep cron

or

pgrep cron

【Linux】学习笔记(十) Linux 计划任务 crontab_计划任务_02

没有输出就需要 重新 上面步骤

在 log 日志中 查看运行情况

​sudo tail -f /var/log/syslog​

删除计划任务

​crontab -r​

3. 其他 补充知识

每个用户使用 crontab -e 添加计划任务,都会在 /var/spool/cron/crontabs 中添加一个该用户自己的任务文档,这样目的是为了隔离。

在 /etc 目录下,cron 相关的目录有下面几个:


  • /etc/cron.daily,目录下的脚本会每天执行一次,在每天的 6 点 25 分时运行;
  • /etc/cron.hourly,目录下的脚本会每个小时执行一次,在每小时的 17 分钟时运行;
  • /etc/cron.monthly,目录下的脚本会每月执行一次,在每月 1 号的 6 点 52 分时运行;
  • /etc/cron.weekly,目录下的脚本会每周执行一次,在每周第七天的 6 点 47 分时运行;