Linux Crontab 的使用

274 阅读2分钟

一.使用的几种方法

1.crontab -e
[root@node001 ~]# crontab -e
~                                     

然后在该文件中输入 * * * * * command(按 i 进入编辑模式),前五位为cron表达式规则,后面command是命令

如下命令为 每周六的2点 执行java -jar ,运行seal-extra-segment-0.1.jar 包,输出标准错误到seal-extra-segment-0.1.log日志文件

(注, 一.路径一定要写绝对路径, 二. 2>&1意思为 重定向错误日志至目标文件 三。 结尾& 意思为后台运行)

0 2 * * 6 java -jar /home/bigdata/components/jar/seal-extra-segment-0.1.jar > /home/bigdata/components/jar/seal-extra-segment-0.1.log 2>&1 &

输入后,shift + : 输入wq,保存。

事实上,保存后会在 /var/spool/cron 下生成cron文件,名字为用户名

image-20220213221853094.png

2. /etc/crontab文件 或 /etc/cron.d目录下的cron文件

进入/etc目录下的 crontab 文件,输入任务

(和crontab -e不一样的是 cron 规则后要加用户名称 ,如下面的 root)

[root@node001 ~]# vi /etc/crontabSHELL=/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 executed0 2 * * 6 root java -jar /home/bigdata/components/jar/seal-extra-segment-0.1.jar > /home/bigdata/components/jar/seal-extra-segment-0.1.log 2>&1 &

或者就在/etc/cron.d目录下,添加cron文件,名称随意,规则和上面的/etc/crontab文件一样

image-20220213225037863.png

二、用到的几个命令

1. crontab -l 查看当前用户的cron内容

但好像只能看到crontab -e添加的root文件内的任务

[root@node001 ~]# crontab -l
12 * * * * command
2.查看定时任务的执行日志 tail -f /var/log/cron

上述两种添加的定时任务日志都可以在这看到

[root@node001 ~]# tail -f /var/log/cron
Feb 13 22:15:01 node001 CROND[16775]: (root) CMD (/home/bigdata/components/monitor/service-monitor.sh)
Feb 13 22:16:01 node001 CROND[16859]: (root) CMD (/home/bigdata/components/monitor/service-monitor.sh)
Feb 13 22:17:01 node001 CROND[16982]: (root) CMD (/home/bigdata/components/monitor/service-monitor.sh)
Feb 13 22:18:01 node001 CROND[17065]: (root) CMD (/home/bigdata/components/monitor/service-monitor.sh)
Feb 13 22:19:01 node001 CROND[17157]: (root) CMD (/home/bigdata/components/monitor/service-monitor.sh)
​

三、小总结

cron执行时,也就是要读取三个地方的配置文件:一是/etc/crontab,二是/etc/cron.d目录下的所有文件,三是 /var/spool/cron(每个用户的配置文件) 其他启动与注意点及cron规则等详细信息可见以下 crontab(偏综合)文章链接

感谢阅读

参考文章

[ Linux /etc/cron.d作用​]  www.cnblogs.com/hubavyn/p/4… 

[crontab(偏综合)​]  www.cnblogs.com/peida/archi… 

[​简单的 crontab -e 的运用]  docs.oracle.com/cd/E24847_0… 

[/etc/crontab文件和crontab -e命令区别]  www.cnblogs.com/xd502djj/p/…