自己做的网站怎么在百度搜索到,免费素材网免费素材图库,传统设计公司网站,云匠网接单子容易吗10_Linux中的计划任务
常见计划任务
Linux系统中默认在执行的计划任务
日志文件的轮询:logrotate日志文件分析logwatch任务建立locate数据库建立manpage查询数据库RPM软件日志文件删除缓存与网络有关的分析
仅执行一次的计划任务
atd和at
[rootnode4 ~]# systemctl start…10_Linux中的计划任务
常见计划任务
Linux系统中默认在执行的计划任务
日志文件的轮询:logrotate日志文件分析logwatch任务建立locate数据库建立manpage查询数据库RPM软件日志文件删除缓存与网络有关的分析
仅执行一次的计划任务
atd和at
[rootnode4 ~]# systemctl start atd
[rootnode4 ~]# systemctl status atd
● atd.service - Job spooling toolsLoaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)Active: active (running) since 一 2024-04-29 21:08:33 CST; 22s agoMain PID: 2051 (atd)CGroup: /system.slice/atd.service└─2051 /usr/sbin/atd -f
语法
at [-mldv] TIME
-m 任务完成后发送邮件
-l at -l相当于 atq列出系统上所有的at计划
-d at -d相当于 atrm取消一个at计划中的任务
-v 列出at计划中的任务列表
-c 列出该项任务的实际命令内容 at- c 任务号码例子
[rootnode4 ~]# at now 5 minutes 执行后开始输入命令
at /bin/mail -s testing at job /root/.bashrcEOT ctrld结束
job 3 at Mon Apr 29 21:24:00 2024# 查看刚刚的命令
[rootnode4 ~]# at -c 3
# 查询计划任务
atq
# 删除计划任务
atrm 3at的优点在于后台执行即使关闭ssh连接也会继续执行。
使用batch可以让cpu在空闲时才执行计划任务。
循环执行的计划任务
计划执行的日志文件保存在/var/log/cron中。查看这个文件可以判断系统是否中了木马。
默认情况下用户只要不在/etc/cron.deny中就可以用crontab -e编辑计划任务语法如下
crontab [-u username] [-l|-e|-r]
-u 仅root可以使用这个参数为其他用户制定计划任务
-e 编辑任务内容
-l 查看任务内容
-r 删除所有计划任务输入crontab -e后会进入vi的编辑界面编辑后保存即可
分钟 小时 日期 月份 周0-7 命令
59 23 1 5 * mail root /root/mail.txt特殊字符的意义 表示任何时刻 , 表示分隔时段 0 3,6 * * * command 表示在3点和6点执行 表示时间范围 20 8-12 * * * command表示8:20到12:20都会执行 /n 表示每隔n单位
例每五分钟执行一次test.sh
*/5 * * * * /root/test.sh系统配置文件/etc/crontab
使用crontab命令用户就可以设定计划任务。系统的例行任务是通过编辑/etc/crontab这个文件来管理的。
[rootnode4 ~]# cat /etc/crontab
SHELL/bin/bash
PATH/sbin:/bin:/usr/sbin:/usr/bin
MAILTOroot# For details see man 4 crontabs# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed可以看到该文件的结构和之前的crotab命令编辑的格式是一样的。
crond任务会从以下三个路径读取配置文件
/etc/crontab 系统计划任务/etc/cron.d/* 一般用来放开放的软件的定时任务/var/spool/cron/* 记录个人【crontab -e】的计划任务
看一下cron.d的内容
[rootnode4 ~]# ls -l /etc/cron.d
总用量 4
-rw-r--r-- 1 root root 128 5月 16 2023 0hourly
[rootnode4 ~]# cat /etc/cron.d/0hourly
# Run the hourly jobs
SHELL/bin/bash
PATH/sbin:/bin:/usr/sbin:/usr/bin
MAILTOroot
01 * * * * root run-parts /etc/cron.hourly这个0hourly事实上就是每小时要执行的任务而我们看这个文件的最后一行就能发现实际上每小时执行的任务是放在/etc/cron.hourly中的。事实上etc里还有cron.daily和cron.weekly以及cron.monthly分别放每日、每周和每月的任务。
计划任务小结
个人计划任务使用【crontab -e】
系统维护管理使用【vim /etc/crontab】
开发软件使用 【vim /etc/cron.d/newfile】
执行关机期间未执行的任务anacron
如果在系统关机期间刚好有一些计划任务的时间跳过了而你希望在开机之后执行这些未执行的任务。比如每日0点备份系统但系统以为关机了当天么有备份那么肯定希望开机后立即执行备份。anacron会定期检测未执行的crontab任务它会记录上次执行时间拿来和当前时间比较如果发现差异就会继续执行未执行的crontab任务。
anacron默认每小时执行一次所以它其实放在/etc/cron.hourly
[rootnode4 ~]# cat /etc/cron.d/0hourly
# Run the hourly jobs
SHELL/bin/bash
PATH/sbin:/bin:/usr/sbin:/usr/bin
MAILTOroot
01 * * * * root run-parts /etc/cron.hourly
[rootnode4 ~]# cat /etc/cron.hourly/0anacron
#!/bin/sh
# Check whether 0anacron was run today already
if test -r /var/spool/anacron/cron.daily; thendaycat /var/spool/anacron/cron.daily
fi
if [ date %Y%m%d $day ]; thenexit 0;
fi# Do not run jobs when on battery power
if test -x /usr/bin/on_ac_power; then/usr/bin/on_ac_power /dev/null 21if test $? -eq 1; thenexit 0fi
fi
/usr/sbin/anacron -sanacron的配置文件放在/etc/anacrontab
[rootnode4 ~]# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron# See anacron(8) and anacrontab(5) for details.SHELL/bin/sh
PATH/sbin:/bin:/usr/sbin:/usr/bin
MAILTOroot
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY45
# the jobs will be started during the following hours only
START_HOURS_RANGE3-22#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各配置文件和计划任务的关系
我们来总结一下以上这么多配置文件和crond以及anacron命令的关系
crond会读取- /etc/crontab - /etc/cron.d/* - /var/spool/cron/* 并根据【分、小时、日、月、周】的时间设置去配置各项计划任务读取/etc/cron.d/0hourly的设置执行 /etc/cron.hourly/目录下的所有执行文件读取/etc/cron.hourly/0anacron这个脚本文件主动执行anacron并调用/etc/anacrontab的配置文件根据/etc/anacrontab的设置根据每天、每周、每月去分析cron.daily和cron.weekly以及cron.monthly内的执行文件以固定周期执行命令
crontab和at都是【定时】执行时间过了不会继续执行。anacron是【定期】执行某一周期内会继续执行。