Linux 查看所有定时任务

crontab 命令选项基本只对用户操作的选项:
-u 指定一个用户
-l 列出某个用户的任务计划
-r 删除某个用户的任务
-e 编辑某个用户的任务
所以,要查看所有用户的,只能根据 /etc/passwd 文件中的用户名一一列举了,可以用脚本。

本章内容以CentOS 6.4   和   CentOS  7.6  两个版本定时重启Tomcat为例。[6和7的命令不同]

======CentOS 6.4=========

centos查看定时任务运行时间 linux查看定时任务是否执行_linux

步骤:

一.创建脚本文件,本脚本文件用于停止,重启tomcat运行的java进程,并设置脚本文件权限

1.新建脚本文件tomcat.sh

【注意文件创建的路径】

【查看当前路径的命令:   pwd】

创建文件命令:


vi tomcat.sh


2.粘贴脚本文件文本内容到文件中:

【注意,标红部分需要自己修改为自己服务器上的对应地址】

【查看linux服务器上JAVA_HOME命令:  echo $JAVA_HOME 】

【关键一行:


ps -ef|grep java | grep catalina | awk '{print $2}


可以准确定位到当前正在tomcat下启动运行的java进程,而不是安装的java,

#!/bin/bash
. /etc/profile

export JAVA_HOME=/usr/local/jdk1.7.0_79
export JRE_HOME=$JAVA_HOME/jre

tomcatPath="/backup/tomcat7"
binPath="$tomcatPath/bin"
echo "[info][$(date +'%F %H:%M:%S')]正在监控tomcat,路径:$tomcatPath"
pid=`ps -ef|grep java | grep catalina | awk '{print $2}'`
if [ -n "$pid" ]; then
echo "[info][$(date +'%F %H:%M:%S')]正在运行的tomcat进程为:$pid"
echo "[info][$(date +'%F %H:%M:%S')]tomcat已经启动,准备使用shutdown命令关闭..."
$binPath"/shutdown.sh"
sleep 2
pid=`ps -ef|grep java | grep catalina | awk '{print $2}'`
if [ -n "$pid" ]; then
echo "[info][$(date +'%F %H:%M:%S')]使用shutdown命令关闭失败,准备kill进程..."
kill -9 $pid
echo "[info][$(date +'%F %H:%M:%S')]kill进程完毕!"
sleep 1
else
echo "[info][$(date +'%F %H:%M:%S')]使用shutdown命令关闭成功!"
fi
else
echo "[info][$(date +'%F %H:%M:%S')]tomcat未启动!"
fi
echo "[info][$(date +'%F %H:%M:%S')]准备启动tomcat..."
$binPath"/startup.sh"


3.修改脚本文件tomcat.sh 可操作权限

命令:


chmod 777 tomcat.sh


二.修改定时任务配置,添加本脚本到定时任务配置中,启动定时任务

1.修改定时任务配置

命令:


crontab -e


将上面的脚本文件路径,以及定时任务配置粘贴到配置文件中:


58 10 * * * /backup/tomcat7/tomcat.sh


【本配置说明:  每天10:58分   执行脚本文件,脚本文件路径在:/backup/tomcat7/tomcat.sh】

【关于定时任务的配置说明,请自行查阅】

【最后要说明的一点:本命令操作与vi操作文本命令一样】

centos查看定时任务运行时间 linux查看定时任务是否执行_服务器_02

2.操作定时任务

关闭定时任务命令:


service crond stop


centos查看定时任务运行时间 linux查看定时任务是否执行_linux_03

启动定时任务命令:


service crond start


centos查看定时任务运行时间 linux查看定时任务是否执行_定时任务_04

重启定时任务命令:


service crond restart


查看定时任务列表:


crontab -l


查看定时任务执行日志:


tail -f -n 200 /var/spool/mail/root


centos查看定时任务运行时间 linux查看定时任务是否执行_centos查看定时任务运行时间_05

3.查看tomcat下运行的java进程是否已经重启

查看命令:


ps -ef|grep java


可以从下图看到,正在运行的新的java进程是在10:58 启动的【说明java进程重启成功】

centos查看定时任务运行时间 linux查看定时任务是否执行_定时任务_06

CentOS 6 使用cron定时任务,报错:Redirecting to /bin/systemctl restart crond.service

 可以查询下面的CentOS 7 使用cron定时任务相关操作。

========CentOS  7.6=========

 

centos查看定时任务运行时间 linux查看定时任务是否执行_定时任务_07

一.cron任务的自启动相关命令

1.检测cron定时服务是否自启用


systemctl is-enabled crond.service


结果展示如下:


enable表示已启用自启动 disable标识未启用自启动


2.如果未启用,则开启cron自启用


systemctl enable crond.service


3.如果已经启用,想要cron关闭自启动


systemctl disable crond.service


centos查看定时任务运行时间 linux查看定时任务是否执行_linux_08

centos查看定时任务运行时间 linux查看定时任务是否执行_centos查看定时任务运行时间_09

附录:

linux系统自带服务的启动文件和状态

二.cron服务是否启动相关命令【区别于自启动】

1.查看cron服务的启动状态

[只有cron的状态是active  running的,才表示cron服务是启动的]


systemctl status crond.service


2.启动cron服务[命令没有提示]


systemctl start crond.service


3.停止cron服务[命令没有提示]


systemctl stop crond.service


4.重启cron服务[命令没有提示]


systemctl restart crond.service


5.重新加载cron服务[命令没有提示]


systemctl reload crond.service


centos查看定时任务运行时间 linux查看定时任务是否执行_centos查看定时任务运行时间_10

三.操作定时任务

1.定时任务的编辑


crontab -e


编辑内容和centos6 一样。表示每天7.30  执行 /mnt/apps/tomcat/tomcat.sh 路径下的脚本


30 07 * * * /mnt/apps/tomcat/tomcat.sh


如果在上面,已经把定时任务cron启动了,编辑定时任务后,会有提示

centos查看定时任务运行时间 linux查看定时任务是否执行_tomcat_11

如何设定定时时间详见如下描述:

centos查看定时任务运行时间 linux查看定时任务是否执行_tomcat_12


示例:

 0 2 * * * /root/restart_cat.sh >> /root/restart_cat.log 每天2点执行/root/restart_cat.sh脚本并把执行日志追加到/root/restart_cat.log文件中
 

2.查看已编辑的定时任务


crontab -l


centos查看定时任务运行时间 linux查看定时任务是否执行_定时任务_13

3.删除已编辑的所有定时任务


crontab -r


centos查看定时任务运行时间 linux查看定时任务是否执行_定时任务_14

四.查看定时任务的执行日志

1.查看cron执行日志


tail -f -n 200 /var/log/cron


centos查看定时任务运行时间 linux查看定时任务是否执行_定时任务_15

五.最后总结

如上述命令,整个cron操作步骤如下

1>编辑了.sh脚本,并保存,记录.sh文件所在路径【一定确保.sh脚本可用,可以尝试在编辑完成.sh文件后,直接./tomcat.sh  执行脚本文件,查看是否可以正常执行】

2>查看并设置cron为自启动

3>查看并启动cron服务,使状态为running

4>编辑并查看cron服务,注意路径和定时格式,确保cron服务编辑成功

5>最后在编辑完成cron服务后,重新加载或重启cron服务,确保cron服务状态是running的

6>最后可以通过查看cron执行日志,确保cron是否执行

7>如果cron任务不执行,确保linux服务器系统 时间 和时区 是否正常

六.cron任务不执行,问题排查

如上,已经确保  第五点中所有 步骤都正确执行了。但是cron定时任务一直没有执行。

我这里出现的原因,是因为服务器的时区设置不正确。

正确的时区应该是CST

如果你的时区是UTC,或者其他,就导致时间和时区不正确。

我设置的定时任务是17.05执行,结果等到了17.05,定时任务不执行,因为此刻的系统时间是05.05