linux定时任务crontab介绍

时间:2023-01-19 08:01:59

首先解释一下这个命令

crontab -e 编辑或者创建crontab文件
crontab -l 列出已建立定时任务

在crontab文件中写入自己要定时运行的脚本

[root@f14cp-kf1-03 ~]# crontab -e

#定时启动kafka同步任务
25 15 * * * /usr/hdp/2.3.2.0-2950/kafka/bin/kafka-mirror-start.sh
#定时关闭kafka同步任务
28 15 * * * /usr/hdp/2.3.2.0-2950/kafka/bin/kafka-mirror-stop.sh

28 15 * * * 指代的是任务定时的时间 这里指每天的下午三点28分 后面的是要执行的shell脚本的绝对路径
[root@f14cp-kf1-03 bin]# cat kafka-mirror-start.sh 
if [ -f ~/.bash_profile ]; 
then
  . ~/.bash_profile
fi               //引入环境变量
exec $(dirname $0)/kafka-mirror-maker.sh --consumer.config $(dirname $0)/consumer-wsm.properties --num.streams  5  --producer.config $(dirname $0)/producer-wsm.properties --num.producers 3 --queue.size 20000  --whitelist 'topic1'
$(dirname $0)   当前环境路径
[root@f14cp-kf1-03 bin]# cat kafka-mirror-stop.sh 
if [ -f ~/.bash_profile ];
then
  . ~/.bash_profile
fi

jps|grep MirrorMaker|awk '{print $1}'|xargs kill //根据jps命令的类名称MirrorMaker去杀掉指定进程

查看crontab执行记录

crontab的日志位置一般位于/var/log/cron

tail -f /var/log/cron //查看日志
[root@f14cp-kf1-03 bin]# tail -f /var/log/cron 
Mar  4 14:01:01 f14cp-kf1-03 run-parts(/etc/cron.hourly)[16832]: finished mcelog.cron
Mar  4 14:10:01 f14cp-kf1-03 CROND[17503]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Mar  4 14:55:52 f14cp-kf1-03 crontab[22473]: (root) BEGIN EDIT (root)
Mar  4 14:56:01 f14cp-kf1-03 crontab[22473]: (root) REPLACE (root)
Mar  4 14:56:01 f14cp-kf1-03 crontab[22473]: (root) END EDIT (root)
Mar  4 14:57:01 f14cp-kf1-03 crond[1926]: (root) RELOAD (/var/spool/cron/root)
Mar  4 14:59:07 f14cp-kf1-03 crontab[22737]: (root) BEGIN EDIT (root)
Mar  4 14:59:12 f14cp-kf1-03 crontab[22737]: (root) END EDIT (root)
Mar  4 15:00:01 f14cp-kf1-03 CROND[22913]: (root) CMD (/usr/hdp/2.3.2.0-2950/kafka/bin/kafka-mirror-start.sh )
Mar  4 15:00:01 f14cp-kf1-03 CROND[22914]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Mar  4 15:01:01 f14cp-kf1-03 CROND[23192]: (root) CMD (run-parts /etc/cron.hourly)
 

上面的/var/log/cron只会记录是否执行了某些计划的脚本,但是具体执行是否正确以及脚本执行过程中的一些信息linux会通过邮件形式发送到给该用户。
对于root用户该邮件记录位于/var/spool/mail/root,通过以下命令可以查看最近的crontab执行情况。

From root@f14cp-kf1-03.localdomain  Fri Mar  4 15:28:11 2016
Return-Path: <root@f14cp-kf1-03.localdomain>
X-Original-To: root
Delivered-To: root@f14cp-kf1-03.localdomain
Received: by f14cp-kf1-03.localdomain (Postfix, from userid 0)
    id 599DC439F3; Fri,  4 Mar 2016 15:28:11 +0800 (CST)
From: root@f14cp-kf1-03.localdomain (Cron Daemon)
To: root@f14cp-kf1-03.localdomain
Subject: Cron <root@f14cp-kf1-03> /usr/hdp/2.3.2.0-2950/kafka/bin/kafka-mirror-start.sh 
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20160304072811.599DC439F3@f14cp-kf1-03.localdomain>
Date: Fri,  4 Mar 2016 15:25:02 +0800 (CST)