Linux-定时任务排查
前段时间,哥们的服务器被人反弹了shell,由于反弹的地址不可达,系统总是会发送一条mail邮件到root账户,导致入侵行为被发现,由于反弹的动作是通过crontab来定时执行的,所以来梳理下crontab相关的知识点
1.crontab填写格式
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
每5分钟执行一次date命令
* /5 * * * * date
每个用户通过crontab -l可以查看当前用户级别下的定时任务,root账户可通过查看/var/spool/cron/{user} 查看不同用户的定时任务
/etc/crontab 存储的是系统级别的定时任务
2.查看crontab执行日志
cat /var/log/cron
上述定时任务在服务器不关机的情况下,会运行良好,但是如果使用的是笔记本或者经常关机的服务器的时候,crontab就力不从心了,因为当在指定时间运行的任务服务器处于关机的状态时,定时任务是不运行的,所以就要用到anacron
anacron适合于每天或每周或每个月执行一次的周期任务,配置文件是 /etc/anacrontab,配置文件格式如下
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
period in days:定义任务执行的周期1-@daily,7-@weekly,30-@monthly
delay in minutes: 任务执行前等待的时间,以分钟计
job-identifier: 任务标识符,用于区分任务名称,在这个地方填写的标识符 会在 /var/spool/anacron/{job-identifer} 生成同名文件,该文件记录脚本执行的时间戳
command:定义要执行的命令
我编辑 /etc/anacrontab文件,添加如下行
@daily 2 cron.test echo 2017>>/tmp/2017
添加完成后,我执行关机操作,当我再次开机2分钟以后,在/tmp/2017文件能看到2017字符,并且,在/var/spool/anacron/目录下生成cron.test文件,该文件内容为今天的日期,
这样就能证明我们的推理,但是添加完成后,等待2分钟并没有发现该任务执行,这是为什么呢?查看下 /etc/cron.d/0hourly文件如下;
HELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
01 * * * * root run-parts /etc/cron.hourly
上述脚本的意思是在每个小时会通过 run-parts脚本执行/etc/cron.hourly目录下的可执行文件 (run-parts命令在/usr/bin/run-parts 使用方法是在脚本后面跟上一个目录即可)
而/etc/cron.hourly/0anacron 脚本如下
#!/bin/bash
# Skip excecution unless the date has changed from the previous run
if test -r /var/spool/anacron/cron.daily; then
day=`cat /var/spool/anacron/cron.daily`
fi
if [ `date +%Y%m%d` = "$day" ]; then
exit 0;
fi
# Skip excecution unless AC powered
if test -x /usr/bin/on_ac_power; then
/usr/bin/on_ac_power &> /dev/null
if test $? -eq 1; then
exit 0
fi
fi
/usr/sbin/anacron -s
对比文件中的日期信息,如果不对应,会执行 anacron -s 命令,而anacron会读取配置文件 /etc/anacrontab 这个配置文件里面记录了每天,每周,每个月要执行的任务,所以可以理解为:
在centos6下,anacrontab的周期执行是依靠crontab在每个小时执行一次维持的,他们两个的区别如下:

综上,在排查后门的时候要排查的文件
/var/spool/cron/{user},
/var/spool/anacron/*
/etc/cron.d/*
/etc/cron.hourly,
/etc/cron.daily,
/etc/cron.weekly,
/etc/cron.monthly,
/etc/anacrontab
参考链接:https://www.tecmint.com/cron-vs-anacron-schedule-jobs-using-anacron-on-linux/
Linux-定时任务排查的更多相关文章
- Linux定时任务-cronie
1.cronie服务介绍 Linux crontab(cronie)是用来定期执行程序的命令. 当安装完成操作系统之后,默认就会启动此任务调度命令. crond 命令每分钟会定期检查是否有要执行的工作 ...
- linux定时任务crond export变量问题
linux定时任务crond export变量问题 1)我写了一个重启resin的脚本,由于业务原因,需要定时在某一个时间重启下resin服务器,于是就在 crontab里配置了如下内容: 50 17 ...
- Linux 定时任务
200 ? "200px" : this.width)!important;} --> 介绍 本篇主要介绍Linux定时任务命令crontab的用法,crontab是定时任务 ...
- Linux 定时任务 Crontab命令 详解
前言 crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比 ...
- 如何让Linux定时任务crond以秒为单位执行(如每隔3秒)
需要用到Shell脚本每隔3秒钟去监控一个软件进程的运行状态,发现crond似乎只支持到分,不知道秒,怎么办呢? 第一种方法: 当然首先想到的是写一个触发的脚本,在触发脚本中使用死循环来解决此问题,如 ...
- 工作中linux定时任务的设置及相关配置
工作中会用到定时任务,来处理以前采集来的数据备份, 每周一凌晨4点执行一次 0 4 * * */1 find/data/templatecdr/oracle/dcndatabak/ -type ...
- 如何让linux定时任务crontab按秒执行
如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟如果想以秒为单位执行,应该如何设置呢?思路 正常情况是在crontab中直接定义要执行的任务,现 ...
- (转载)Linux定时任务cron配置
(转载)http://blog.csdn.net/jbgtwang/article/details/7995801 实现linux定时任务有:cron.anacron.at等,这里主要介绍cron服务 ...
- linux定时任务crontab的设置
linux定时任务crontab的设置http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html vi /etc/cronta ...
- Linux实战教学笔记11:linux定时任务
第十一节 linux定时任务 标签(空格分隔): Linux实战教学笔记 ---更多资料点我查看 1.1 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种 ...
随机推荐
- leetcode-easy-listnode-21 merge two sorted lists
mycode 一定要记得创建两个头哦,一个找路,一个找家 # Definition for singly-linked list. # class ListNode(object): # def __ ...
- 全面解读PHP-数据结构
一.常见数据结构 1.Array 数组 最简单且应用最广泛的数据结构之一 特性:使用连续的内存来存储,数组中的所有元素必须是相同的类型或类型的衍生(同质数据结构),元素可以通过下标直接访问. 2.Li ...
- shell 并发进程的例子
linux shell 实现后台多进程运行的,开始和终止 原创 2014年11月21日 12:04:51 9953 linux shell 实现后台开始,和停止多进程 知识点: xxxxcmd.sh ...
- windows+VS+Openjdk12 搭建debug环境
openjdk12 下载地址: http://jdk.java.net/archive/ https://download.java.net/java/GA/jdk12/33/GPL/openjdk- ...
- OpenCV学习笔记(10)——图像梯度
学习图像梯度,图像边界等 梯度简单来说就是求导. OpenCV提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel,Scharr和Lapacian.Sobel,Scharr其实就是求一阶或二阶导. ...
- 【剑指offer37】二叉树的序列化
序列化过程很简单,如果是采用先序序列,那么对先序遍历做出改变即可: 层序遍历建立二叉树,如: 1 2 3 4 # 5 6 输入第一行:将要输入的节点的个数N,如上面的为7 ...
- 精通CSS:高级Web标准解决方案(第二版) 不明白的地方
P47 在图3-14中,当把框1向左浮动时,它脱离文档流并且向左移动,直到它的左边缘碰到包含框的左边缘.因为它不在处于文档流中,所以它不占据空间,实际上覆盖住了框2,使框2从视图中消失. 我的疑问是, ...
- Stream流实现斐波那契数列
1.前言 我们都知道斐波那契数列有很多种实现方法,在jdk1.8以前没有流操作,只能通过递归或者迭代等其他方式来实现斐波那契数列, 但是jdk1.8以后,有了流操作,我们就可以使用流来实现斐波那契数列 ...
- stringbuffer.tostring引发的 Java heap space
今天在测试“生成报告“功能时,出现了这个问题,java抛出java.lang.OutOfMemoryError: Java heap space: 由于开发使用的tomcat是统一配置的,而且其他地方 ...
- 灰度图像的自动阈值分割(Otsu 法)
关于otsu分割方法,这个文章讲的是最好的,清晰易懂,一看就是作者认真思考过的. 因为在看这个算法的时候我就想,如果一个很大的图像上,大部分像素值都在0 - 50范围内,但是有很小一块像素值在240的 ...