Linux中的计划任务
一、一次性任务计划执行 -- at
at命令允许用户在指定的时间点执行一次性任务。这些任务可以是任何有效的shell命令或脚本,使得用户能够在未来的某个时刻自动运行所需的任务。(at命令的执行时间通常不是精确的,它会在指定的时间周围执行任务。)
1、启动atd服务
在使用at命令之前,需要确保系统中的atd服务已经启动。可以使用systemctl start atd
命令来启动atd服务,并使用systemctl status atd
来检查服务的运行状态。
2、创建at任务
1)使用 at 命令后跟指定的时间点来创建at任务。eg: at 3pm表示在下午3点执行任务。
2)时间点可以采用多种格式,包括绝对时间(如HH:MM或MMDDYY)和相对时间(如now+[n]minutes/hours/days/weeks)
3) 在输入时间点后,按Enter键进入命令行编辑模式,然后输入要执行的命令或脚本。输入完成后,按Ctrl+D键保存并退出。
3、查看at任务
使用 atq 命令可以显示当前系统中所有待执行的at任务列表。
4、删除at任务
如果不再需要某个at任务,可以使用 atrm+任务编号 将其从任务列表中删除。该操作需要知道任务的编号,该编号可以在atq
命令的输出中找到。
二、周期性任务执行 -- crontab
计划任务(crontab)是指在Linux系统中,利用cron(crond)这个系统服务来控制的定时执行工具,它允许用户创建和管理计划任务,以便在特定的时间间隔或时间点自动运行命令或脚本。Crontab文件包含一系列计划任务条目,每个条目都定义了一个任务的执行时间和要运行的命令或脚本。这些任务可以按照分钟、小时、日、月和星期等不同的时间单位进行安排。
1、crontab的组成部分
时间字段由五个部分组成,每个部分用空格分隔。其分别表示分钟(0-59)、小时(0-23)、日期(1-31)、月份(1-12)和星期(0-7,其中0和7都表示星期日)。
2、crontab的基本操作
1)查看crontab任务
使用 crontab -l 命令可以查看当前用户的 crontab 任务列表。
2)编辑crontab任务
使用 crontab -e 命令可以编辑当前用户的 crontab 任务列表。系统会打开一个文本编辑器,用户可以在其中编辑定时任务的时间规则和要执行的命令或脚本。
3)删除crontab任务
使用 crontab -r 命令可以删除当前用户的 crontab 任务列表。系统会提示用户确认是否删除所有定时任务,确认后系统会将当前用户的crontab文件清空。
3、时间表达式中的特殊字符含义
*:表示所有可能的值,表示在所有时间点都执行任务。
,:用于分隔多个值,表示多个时间点执行任务。
-:用于指定一个范围内的连续值,表示一个范围内的时间点执行任务。
/:用于指定一个步长,表示每隔一定时间执行。
三、相应练习
1.设置一次性计划任务在18:00时关闭系统,并查看任务信息。
[root@localhost ~]# at 18:00
warning: commands will be executed using /bin/sh
at Sat Nov 16 18:00:00 2024
at> shutdown -h now
at> <EOT>
job 7 at Sat Nov 16 18:00:00 2024
[root@localhost ~]# atq
7Sat Nov 16 18:00:00 2024 a root
2.每周日凌晨2点30分,运行cp命令对/etc/fstab文件进行备份,存储位置为/backup/fstab-YYYY-MM-DD-hh-mm-ss。
30 2 * * 7 cp /etc/fstab /backup/fstab-$(date +\%Y-\%m-\%d-\%H-\%M-\%S)
3.每周2、4、7的晚上8:45分,备份/var/log/secure文件至/logs目录中,文件名格式为“secure-yyyymmdd”。
45 20 * * 2,4,7 cp /var/log/secure /logs/secyre-$(date +\%Y\%m\%d)
4.每两小时取出当前系统/proc/meminfo文件中以S或M开头的行信息追加至/tmp/meminfo.txt文件中。
* */2 * * * grep '^[SM]' /proc/meminfo >> /tmp/meminfo.txt
原文地址:https://blog.csdn.net/2301_77300113/article/details/143818069
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!