前段时间,哥们的服务器被人反弹了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-定时任务排查的更多相关文章

  1. Linux定时任务-cronie

    1.cronie服务介绍 Linux crontab(cronie)是用来定期执行程序的命令. 当安装完成操作系统之后,默认就会启动此任务调度命令. crond 命令每分钟会定期检查是否有要执行的工作 ...

  2. linux定时任务crond export变量问题

    linux定时任务crond export变量问题 1)我写了一个重启resin的脚本,由于业务原因,需要定时在某一个时间重启下resin服务器,于是就在 crontab里配置了如下内容: 50 17 ...

  3. Linux 定时任务

    200 ? "200px" : this.width)!important;} --> 介绍 本篇主要介绍Linux定时任务命令crontab的用法,crontab是定时任务 ...

  4. Linux 定时任务 Crontab命令 详解

    前言 crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比 ...

  5. 如何让Linux定时任务crond以秒为单位执行(如每隔3秒)

    需要用到Shell脚本每隔3秒钟去监控一个软件进程的运行状态,发现crond似乎只支持到分,不知道秒,怎么办呢? 第一种方法: 当然首先想到的是写一个触发的脚本,在触发脚本中使用死循环来解决此问题,如 ...

  6. 工作中linux定时任务的设置及相关配置

    工作中会用到定时任务,来处理以前采集来的数据备份, 每周一凌晨4点执行一次    0 4 * * */1 find/data/templatecdr/oracle/dcndatabak/ -type ...

  7. 如何让linux定时任务crontab按秒执行

    如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟如果想以秒为单位执行,应该如何设置呢?思路 正常情况是在crontab中直接定义要执行的任务,现 ...

  8. (转载)Linux定时任务cron配置

    (转载)http://blog.csdn.net/jbgtwang/article/details/7995801 实现linux定时任务有:cron.anacron.at等,这里主要介绍cron服务 ...

  9. linux定时任务crontab的设置

    linux定时任务crontab的设置http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html vi /etc/cronta ...

  10. Linux实战教学笔记11:linux定时任务

    第十一节 linux定时任务 标签(空格分隔): Linux实战教学笔记 ---更多资料点我查看 1.1 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种 ...

随机推荐

  1. CAN-FD协议浅析

    引言 随着电子.半导体.通讯等行业的快速发展,汽车电子智能化的诉求也越来越强,消费者希望驾驶动力性.舒适性.经济性以及娱乐性更强的汽车.汽车制造商为了提高产品竞争力,将越来越多的电子控制系统加入到汽车 ...

  2. 浏览器端-W3School-HTML:HTML DOM Style 对象

    ylbtech-浏览器端-W3School-HTML:HTML DOM Style 对象 1.返回顶部 1. HTML DOM Style 对象 Style 对象 Style 对象代表一个单独的样式声 ...

  3. table 隔列换色

    $("table tr").find("td:eq(1),td:eq(2),td:eq(4)").css("background-color" ...

  4. 求第n个质数

    输入一个不超过 10000 的正整数 n,求第n个质数 样例输入 10 样例输出 29 题目地址 #include<stdio.h> #include<math.h> int ...

  5. 写一个比较全的进制转换函数--ic

    //写一个比较全的进制转换函数-----未完成 #include <stdio.h> //D进制转换后 (比如10-2进制) 结果可能会很大 需要很长的字符串来存 #include < ...

  6. Linux 的简单命令以及在idea中配置码云

    Linux 的简单命令: ls(list)功能:列出目录内容 cd(change directory)功能:切换目录 touch 1.txt 在当前目录创建一个文件1.txt clear:清除屏幕 p ...

  7. 【GNN】图神经网络小结

    图神经网络小结 图神经网络小结 图神经网络分类 GCN: 由谱方法到空域方法 GCN概述 GCN的输出机制 GCN的不同方法 基于谱方法的GCN 初始 切比雪夫K阶截断: ChebNet 一阶Cheb ...

  8. 引入父目录模块 import

    a : a1.py a2.py b : b1.py 其中 a, b 同目录,现在想在b1中引用a1里面内容 在b1中需要进行进行如下操作 x = path.join('..') sys.path.ap ...

  9. idea运行时 Process finished with exit code -1073741819 (0xC0000005)

    问题描述:        idea中启动项目报   Process finished with exit code -1073741819 (0xC0000005) ,如图所示: 问题解决:      ...

  10. NameNode格式化后HBase创建新表提示旧表已存在:table already exists

    1.问题出现: 在格式化NameNode后,集群上安装的OpenTSDB的表(存在hbase中)都没有了,重新运行OpenTSDB预创建表步骤报错显示table already exists 2.原因 ...