cron 和anacron 、日志转储的周期任务

一、cron是开机自动启动的

[[email protected] ~]# chkconfig --list | grep "cron"

crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off

可以看到 crond 在系统的3级别是自动启动的。3级、5级是常用的级别

[[email protected] ~]# chkconfig --list | grep "cron"
crond              0:off    1:off    2:on    3:on    4:on    5:on    6:off

另外可以在 /etc/init.d 目录中看到自动启动的服务。这些服务可以通过service 来启动和关闭

[[email protected] ~]# cd /etc/init.d
[[email protected] init.d]# ls
abrt-ccpp         certmonger  halt          mcelogd     nfs-rdma     quota_nld    rpcsvcgssd  sysstat
abrtd             cgconfig    ip6tables     mdmonitor   ntpd         rdisc        rsyslog     udev-post
abrt-oops         cgred       iptables      messagebus  ntpdate      rdma         sandbox     winbind
acpid             cpuspeed    irqbalance    netconsole  numad        restorecond  saslauthd   ypbind
atd               crond       kdump         netfs       oddjobd      rngd         single
auditd            cups        killall       network     portreserve  rpcbind      smartd
autofs            functions   lvm2-lvmetad  nfs         postfix      rpcgssd      sshd
blk-availability  haldaemon   lvm2-monitor  nfslock     psacct       rpcidmapd    sssd

二、cron 开机启动后感什么工作

man cron

Cron should be started from /etc/rc.d/init.d or /etc/init.d (定义cron 开机自启)

1、查看 /var/spool/cron

Cron searches /var/spool/cron ,看有没有我们定义的crontab 周期任务

通过crontab -e 创建的周期任务在 此目录显示,同过crond 服务调用

2-1、查看 /etc/cron.d directory,目录

[[email protected] init.d]# cd /etc/cron.d
[[email protected] cron.d]# ls
0hourly  raid-check  sysstat
[root@localhost cron.d]# cat 0hourly
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
01 * * * * root run-parts /etc/cron.hourly

每小时一分 执行 /etc/cron.hourly 目录下的脚本

[[email protected] cron.d]# cd  /etc/cron.hourly/[[email protected] cron.hourly]# ls0anacron  mcelog.cron[[email protected] cron.hourly]# cat 0anacron
#!/bin/bash
# Skip excecution unless the date has changed from the previous run
if test -r /var/spool/anacron/cron.daily; then
/var/spool/anacron/cron.daily文件中 存放cron 上次启动时间
如果当期的时间和文件中的时间一致,表示本次已经执行完毕,无需再次执行
 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 服务
anacron 由 cron 启动

2-2、查看 /etc/anacrontab 中的内容 cat

Cron also searches for /etc/anacrontab

[root@localhost cron]# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
anacron的配置文件
# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45 随机延迟时间 0-45 分钟
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22 执行时间 3点到 22点
几天执行一次 固定延迟几分钟 nice 执行的命令
#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

分别按 日期 周 月份 执行 /etc/cron.daily /etc/cron.weekly /etc/cron.monthly

目录中的脚本

在这里 看到了 logrotate 日志转储程序,每天执行一次。、

  

[[email protected] cron.daily]# cat logrotate
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf 执行logrotate 转储命令,读
取/etc/logrotate.conf 主要配置文件(包含次要配置文件/etc/logrotate.d)按照 配置文
件的规则对日志进行转储
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
 /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

三、日志的转储是通过 anacron 执行的周期任务。是开机后 cron 检查文件和目录后 开启 anacron 服务,在执行 anacron 中定义的周期任务的文件 logrotate 对日志进行转储

原文地址:https://www.cnblogs.com/cmgg/p/10262411.html

时间: 2024-10-16 11:53:50

cron 和anacron 、日志转储的周期任务的相关文章

linux之使用cron,logrotate管理日志文件

1) logrotate配置   logrotate 程序是一个日志文件管理工具.用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”.   我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行.   logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail . logrotate 的配置文件是 /etc/logrotate.conf  主要参数如下表: 参数                         功能   co

:Linux 系统日志管理 日志转储

Linux日志服务器设置 使用“@IP:端口”或“@@IP:端口”的格式可以把日志发送到远程主机上. 假设需要管理几十台服务器,每天的重要工作就是查看这些服务器的日志,可是每台服务器单独登录,并且查看日志非常烦琐,此时可以把几十台服务器的日志集中到一台日志服务器上吗?这样每天只要登录这台日志服务器,就可以查看所有服务器的日志,. 设置过程 假设服务器端的服务器 IP 地址是 192.168.0.210,主机名是 localhost.localdomain:客户端的服务器 IP 地址是 192.1

Linux 中怎么设置计划任务:cron 与 anacron

导读 在本篇中,我们会解释 cron 和 anacron,并向你展示如何在 Linux 中设置 anacron.我们也会比较这两个工具. cron 在 Linux 设置 cron - 是一个用于运行计划任务如系统备份.更新等的守护进程.它适合在那些 24X7 不间断运行的机器如服务器上运行的计划任务. 命令/脚本被写在 cron 任务脚本中,它是在crontab 文件中被安排的.系统默认的 cromtab 文件是/etc/crontab ,但是每个用户也可以创建自己的 cromtab 文件来在特

详解:(cron , crontab , anacron)

导读: 人类把时间做了切割,想象一条笔直的线永远向前,本来这条直线上什么都没有,但是人类根据时间的长短(单位)在这条直线上做了密密麻麻的标记(世纪-年-月-日-时-分-秒-纳秒......),通过这样的方式历史上的每一个时刻都能够被单独拿出来,而未来的每一个时刻也能被单独计划.更重要的是,每一个单独的时刻又能跟相邻的被更大单位所控制的相似时刻做比较,比如,今天的晚上12点跟明天的晚上12点,相似的是,两个时刻都是12点,不同的是今天跟明天,她们是相邻的更大单位.因为这样的缘故,在被更大单位所隔开

linux服务器日志转储

配置好项目之后,Apache,MySQL等会产生日志,为了方便管理,将其按照一定的间隔时间进行转储 1.Apache日志 在配置文件中加入以下两句: CustomLog"|/usr/sbin/rotatelogs /var/log/httpd/access-80.log.%Y%m%d 86400 540"combined ErrorLog"|/usr/sbin/rotatelogs /var/log/httpd/error-80.log.%Y%m%d 86400 540&qu

例行性工作调度at、cron、anacron

例行性工作:系统在某个时间点会自动进行的工作 只执行一次就结束调度:at,服务为atd 循环执行的工作调度:crontab,服务为crond 常见例行性工作 日志轮替(log rotate) 日志分析(log watch) 更新数据库 删除临时文件(tmpwatch) 网络有关服务检查 at:执行一次的工作调度  1:生成工作的流程 at命令生成要运行的工作 将工作以文本形式写入/var/spool/at目录 等待atd服务取用执行 2:at工作调度规则 /etc/at.allow:写在这文件中

logrotate日志转储

1 工具目录 linux默认会安装logrotate工具,自身的boot.log就是通过它分割转储的. [[email protected] log]# ll| grep boot -rw-------. 1 root root 0 Jun 25 03:33 boot.log -rw-------. 1 root root 81499 Jun 23 03:20 boot.log-20180623 -rw-------. 1 root root 28340 Jun 24 03:38 boot.lo

Linux cron 计划任务日志跟踪

场景:  需要在系统的cron中启动一个计划任务,跑的是一个shell脚本,脚本中大致意思是切换至 abc用户执行一个php文件(例如: /data/soft/auto.php),那么现在问题来了,脚本的内 容如下: #!/bin/bash sudo -u abc /data/soft/auto.php echo ' >>> auto success !!! ' 你会神奇的发现,系统的/var/log/cron日志中已经显示auto success,但是这个程序依然 是没有执行,你怎么知

计划任务 at   batch   cron anacron

在使用Linux的过程中,我们有时需要使用一些定时任务的功能,Linux上常用的计划任务工具有at.batch和cron.anacron,下面我就来简单的说一说. at:仅执行一次就从Linux的计划任务中取消 batch:系统有空就执行 cron:周期性执行 anacron:唤醒停机期间的工作任务 (一).at (*依赖于atd服务,需先手动安装 *) [[email protected] ~]# yum -y install at [[email protected] ~]# systemc