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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

故障描述

在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日志并进行多维度分析。
相关文章
|
25天前
|
Linux
Linux Crontab 查看定时任务启动没
【10月更文挑战第20天】在Linux系统中,crontab用于设置周期性执行的任务。查看当前用户的Crontab任务列表,使用`crontab -l`;查看所有用户任务,使用`sudo crontab -l`或指定用户`sudo crontab -u username -l`。
49 5
|
2月前
|
NoSQL Linux Redis
linux安装单机版redis详细步骤,及python连接redis案例
这篇文章提供了在Linux系统中安装单机版Redis的详细步骤,并展示了如何配置Redis为systemctl启动,以及使用Python连接Redis进行数据操作的案例。
69 2
|
2月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
458 2
|
2月前
|
Unix Linux 网络安全
python中连接linux好用的模块paramiko(附带案例)
该文章详细介绍了如何使用Python的Paramiko模块来连接Linux服务器,包括安装配置及通过密码或密钥进行身份验证的示例。
83 1
|
2月前
|
监控 Linux Shell
30 个实用的 Linux 命令贴与技巧,提升你的效率(附实战案例)
本文介绍了30个实用的Linux命令及其应用场景,帮助你提升命令行操作效率。涵盖返回目录、重新执行命令、查看磁盘使用情况、查找文件、进程管理、网络状态监控、定时任务设置等功能,适合各水平的Linux用户学习和参考。
|
1月前
|
存储 Linux
服务器数据恢复—Linux操作系统网站服务器数据恢复案例
服务器数据恢复环境: 一台linux操作系统网站服务器,该服务器上部署了几十个网站,使用一块SATA硬盘。 服务器故障&原因: 服务器在工作过程中突然宕机。管理员尝试重新启动服务器失败,于是将服务器上的硬盘拆下检测,发现很多坏扇区。联系当地的一家数据恢复公司处理,但是没有成功。
|
2月前
|
存储 数据挖掘 Linux
服务器数据恢复—Linux操作系统网站服务器数据恢复案例
服务器数据恢复环境: 一台linux操作系统服务器上跑了几十个网站,服务器上只有一块SATA硬盘。 服务器故障: 服务器突然宕机,尝试再次启动失败。将硬盘拆下检测,发现存在坏扇区
|
2月前
|
Shell Linux Python
python执行linux系统命令的几种方法(python3经典编程案例)
文章介绍了多种使用Python执行Linux系统命令的方法,包括使用os模块的不同函数以及subprocess模块来调用shell命令并处理其输出。
36 0
|
3月前
|
安全 Linux 文件存储
在Linux中,服务器开不了机怎么解决⼀步步的排查?
在Linux中,服务器开不了机怎么解决⼀步步的排查?
|
3月前
|
运维 监控 网络协议
在Linux中,如何进行网络故障排查?
在Linux中,如何进行网络故障排查?