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系统中用来定期执行命令/脚本或指定程序任务的一种 ...
随机推荐
- cors 预请求
1.CORS的其他限制 默认允许的方法只有:GET.HEAD.POST默认允许的Content-Type:text/plain.multipart/form-data.applicaton/x-www ...
- ERROR:非静态成员引用必须与特定对象相对
非静态成员引用必须与特定对象相对 引用非静态成员前应该先声明该类的对象 typedef struct _SUPERRESOLUTIONPARAM { int Times; //重建倍数,指的是分别对长 ...
- React之defaultProps、propTypes
1.新增知识点 /** React中的组件: 解决html 标签构建应用的不足. 使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入. 父子组件:组件的相互调用中,我们把调 ...
- 报错:Original error: Could not proxy command to remote server. Original error: Error: read ECONNRESET
问题:Appium的android真机启动手机时,会遇到以下问题: An unknown server-side error occurred while processing the command ...
- python学习之模块-模块(一)
第五章 5.1 自定义模块 模块概念: 把一些常用的函数放在一个py文件中,这个文件就称之为模块. 模块的意义: 1.方便管理.让程序的解构更加清晰,实现功能的重复使用: 2.提升开发效率 ...
- LeetCode.12-整数转罗马数字符串(Integer to Roman)
这是悦乐书的第351次更新,第376篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Medium级别的第6题(顺位题号是12).罗马数字由七个不同的符号表示:I,V,X,L,C,D和M. ...
- shell脚本4
1.从FTP服务器下载文件 #!/bin/bash if [ $# -ne 1 ]; then echo "Usage: $0 filename" fi dir=$(dirname ...
- 应用安全 - 社工 - By 大数据 - shodan - 汇总
使用 | 命令 搜索语法 hostname: 搜索指定的主机或域名,例如 hostname:”google” port: 搜索指定的端口或服务,例如 port:”” country: 搜索指定的国家, ...
- datav轮播表使用事例
官方事例地址: http://datav.jiaminghi.com/guide/scrollBoard.html 安装: npm install @jiaminghi/data-view 局部引入: ...
- AppDomain介绍
一.建立控制台项目 二.更改Program为ADSetp 三.去掉命名空间AppDomain.CurrentDomain 四.贴代码 using System; using System.IO; us ...