记一次LINUX-CRONTAB失败的排查案例

简介:

故障描述

在crontab 设置计划任务,每天凌晨3点执行脚本

conrtab(3点)tomcat用户--执行脚本(推送备文件-->目标服务器||同时将过程写入LOG记录)

然而在第二天例常检查后,发现计划任务没有达到预期效果

排查步骤

首先检查计划任务是否执行

/var/log/cron如下:

Jan 30 03:00:01 z00w00-host CROND[2375]: (tomcat) CMD (/usr/bin/run-parts /usr/share/tomcat/tomcat_backup)
Jan 30 03:00:01 z00w00-host run-parts(/usr/share/tomcat/tomcat_backup)[2375]: starting autosyrc.sh
Jan 30 03:00:01 z00w00-host run-parts(/usr/share/tomcat/tomcat_backup)[2395]: finished autosyrc.sh

主机名我进行了加工,其他基本保持不变

通过日志可以看出在凌晨3点的时候计划任务确实忠实的开始了,但是仅仅1秒钟就结束了任务,这显然是不正常的,因为是推送文件,按照经验判断,至少需要一段时间。

Feb  1 03:00:01 z00w00-host CROND[20514]: (tomcat) CMD (/usr/bin/run-parts /usr/share/tomcat/tomcat_backup)
Feb  1 03:00:01 z00w00-host run-parts(/usr/share/tomcat/tomcat_backup)[20514]: starting autosyrc.sh
Feb  1 03:04:02 z00w00-host run-parts(/usr/share/tomcat/tomcat_backup)[20615]: finished autosyrc.sh

以上是我解决问题后在今天抓取的日志,可以看到正常脚本执行推送文件应该是在4分钟左右。

是脚本逻辑问题吗?

实际上脚本编写完成后,我就在交互式终端中执行了一下,是正常运行的。 另外又检查了一下脚本,这个脚本是在我原来的脚本基础上改的,只是修改了一些变量,逻辑本身没有什么太大问题。

是执行权限的问题

还记得我开头说的吗?脚本进行推送文件,同时将过程写入日志。问题就出在这里

原来,我修改脚本后,为了当时验证效果,将原日志文件rsync.log 进行了重命名 在人工执行的时候rsync.log 被重建了。由于我是root用户执行,所以rsync.log的属主变成了root,而计划任务中,我的执行用户是tomcat。由于文件属主发生变化,tomcat无法写入root属主的rsync.log,导致脚本在计划任务中秒执行但实际上没有按预期来达到目标。
排查中也发现日志文件时间没有任何变化。

解决的办法

分析后查看文件属主,果然如此。修改属主后,修改计划任务,验证执行,故障解除。

修改前的属主

-rwxr-xr-x 1 tomcat tomcat 1.5K Jan 29 14:55 autosyrc.sh
-rw-r--r-- 1 root root 164K Jan  31 14:55 rsync.log

修改后的属主

-rwxr-xr-x 1 tomcat tomcat 1.5K Jan 29 14:55 autosyrc.sh
-rw-r--r-- 1 tomcat tomcat 164K Feb  1 03:04 rsync.log

问题解决,打完收工




本文转自 z00w00 51CTO博客,原文链接:http://blog.51cto.com/z00w00/2067719,如需转载请自行联系原作者

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
Shell Apache
77Linux - crontab定时器
77Linux - crontab定时器
26 0
|
3月前
|
存储 Linux Shell
Linux中的计划任务—Crontab调度一次性执行的任务at/batch
Linux中的计划任务—Crontab调度一次性执行的任务at/batch
118 0
|
10天前
|
Linux
Linux Crontab 查看定时任务启动没
Linux Crontab 查看定时任务启动没
16 0
Linux Crontab 查看定时任务启动没
|
28天前
|
存储 Shell Linux
【Shell 命令集合 系统设置 】Linux定时任务 crontab命令 使用指南
【Shell 命令集合 系统设置 】Linux定时任务 crontab命令 使用指南
35 0
|
2月前
|
Linux Shell 数据库
Linux如何在一个 Crontab 中安排多个 Cron 作业?
Linux如何在一个 Crontab 中安排多个 Cron 作业?
43 1
|
4月前
|
运维 Linux 应用服务中间件
Linux 定时任务crontab实现秒级定时以及@reboot的一些问题
Linux 定时任务crontab实现秒级定时以及@reboot的一些问题
108 0
|
4月前
|
缓存 Linux Shell
Linux使用crontab定时任务定时备份数据库
Linux使用crontab定时任务定时备份数据库
54 0
|
4月前
|
资源调度 Kubernetes 调度
从 Linux Crontab 到 K8s CronJob,定时任务正在经历怎样的变革
从 Linux Crontab 到 K8s CronJob,定时任务正在经历怎样的变革
118696 59
|
5月前
|
Ubuntu Linux 数据安全/隐私保护
Linux Ubuntu crontab 添加错误 提示:no crontab for root - using an empty one 888
错误提示: no crontab for root - using an empty one 888
181 0
Linux Ubuntu crontab 添加错误 提示:no crontab for root - using an empty one 888
|
5月前
|
Unix Linux Shell
Linux 下使用crontab 定时打包日志并删除已被打包的日志
f=`ls /home/hls/apache-tomcat-7.0.61/logs -1 -c` #获取logs下文件列表( /home/hls/apache-tomcat-7.0.61/logs 是日志的所在的路径)
39 0