网络建站培训,网站首页不收录,如何在网站上做标注,php网站有点本章主要介绍如何创建计划任务 使用 at 创建计划任务 使用 crontab 创建计划任务 有时需要在某个指定的时间执行一个操作#xff0c;此时就要使用计划任务了。计划任务有两种#xff1a; 一个是at计划任务#xff0c;另一个是 crontab计划任务。 下面我们分别来看这两种计… 本章主要介绍如何创建计划任务 使用 at 创建计划任务 使用 crontab 创建计划任务 有时需要在某个指定的时间执行一个操作此时就要使用计划任务了。计划任务有两种 一个是at计划任务另一个是 crontab计划任务。 下面我们分别来看这两种计划任务的使用方法。 21.1 at at计划任务是一次性的到了指定的时间点就开始执行指定的命令执行完成之后不会 重复执行这个命令。 首先查看系统中是否存在at计划任务命令是atq或at -1(字母1)命令如下。 [rootpp ~]# atq
[rootpp ~]# at -l
[rootpp ~]# 这两个命令都没有任何输出说明当前系统中并不存在任何计划任务。下面开始创建at计 划任务at的用法如下。 1 at 时间点 按【Enter】键
2 输入要执行的命令
3 CtrlD 提交 例如,要在2025年12月12日执行hostname命令命令如下。 [rootpp ~]# at 2025-12-12
warning: commands will be executed using /bin/sh
at hostname
at EOT
job 1 at Fri Dec 12 00:35:00 2025
[rootpp ~]# 这里只是指定了日期并没有指定在2025年12月12日的几点执行。那么创建这个计划 任务时是几点几分例如这里是在19点11分创建的at计划任务那么到了2025年12月12 日的19点11分就要自动执行hostname命令了。 如果要指定某个时间点格式如下。 1 at 时间 日期 按【Enter】键
2 输入要执行的命令
3 CtrlD 提交 注意 1这里是24小时制的所以10:00指的是上午10点如果想指定下午10点则要写成22:00。 2写时间最多只能精确到分,不能精确到秒。 这里上午用am表示下午用pm表示。例如要在2025年12月12日下午10点执行 hostname命令,命令如下。 [rootpp ~]# at 10pm 2025-12-12
warning: commands will be executed using /bin/sh
at hostname
at EOT
job 2 at Fri Dec 12 22:00:00 2025
[rootpp ~]# at也支持某天之后的某个时间点运行一个命令。例如要在3天之后的下午4点执行 hostname命令命令如下。 [rootpp ~]# at 4pm 3days
warning: commands will be executed using /bin/sh
at hostname
at EOT
job 3 at Mon Dec 11 16:00:00 2023
[rootpp ~]# 这里“”两边有没有空格都可以days可以换成weeks表示3周之后的下午4点。 用关键字tomorrow如果使用关键字tomorrow则不需要加“”命令如下。 [rootpp ~]# at 4pm tomorrow
warning: commands will be executed using /bin/sh
at hostname
at EOT
job 4 at Sat Dec 9 16:00:00 2023
[rootpp ~]# 上面的两条命令都是表示第二天的下午4点执行hostname命令。 如果要表示几分钟或几小时之后可以用关键字now。例如要在2小时之后执行 hostname命令命令如下。 [rootpp ~]# at now2hours
warning: commands will be executed using /bin/sh
at hostname
at EOT
job 5 at Fri Dec 8 02:40:00 2023
[rootpp ~]# 21.2 crontab at计划任务是一次性的执行完成就结束不会重复执行。如果想定期执行某个任务例 如,每周日凌晨2点执行一个命令这时就要用到crontab了。 查看当前用户是否有 crontab计划任务可以用crontab-1命令。如果要查看其他用户是 否有crontab计划任务可以用“crontab -1-u用户名”命令不过-u选项只有root才能 用。 步骤①使用root用户查看自己有没有crontab计划任务命令如下。 [rootpp ~]# crontab -l
no crontab for root
[rootpp ~]# 步骤②使用root用户查看iu用户是否有crontab计划任务命令如下。 [rootpp ~]# crontab -l -u iu
no crontab for iu
[rootpp ~]# 创建crontab计划任务的命令是crontab -e如果为其他用户创建crontab计划任务则 用“crontab -e -u用户名”命令。当使用crontab-e命令时会打开一个临时文件用与 vim 一样的语法来编辑此文件即可。先按【i】键进入插入模式编辑完成之后按【Esc】 键退回到命令模式在末行模式中输入“wq”保存退出。在此文件中凡是以“#”开头的,都 是注释行。 crontab定义计划任务的语法如下。 1 分 时 天 月 周 命令 注意 因为在crontab中使用的并非系统的PATH变量所以此处语法中要执行的命令最好能加上路径, 例如要执行ifconfig命令则写作/sbin/ifconfig要执行hostname命令则写作 bin/hostname。命令的路径可以通过which命令来查询。 几个时间单位的意义如下。 1分几点几分的分。 2时几点24小时制。 3天几号。 4月几月份。 5周星期几。 这几个时间单位可以用空格也可以用【Tab】键来分隔。 如果不考虑某个时间单位例如不管今天是几号只要不是周末我们就上班不考 虑“天”的情况下,那么可以用*表示。 这里每个时间点都可以写多个值,用英文逗号“,”隔开,例如在分的位置写“0,1.,5,10, 表示0分、1分、5分、10分。 也可以用横杠“-”表示“到”的意思例如在分的位置写“0-10”表示0到10分。 这里“0-10”的完整写法是“0-10/1”表示从0分到10分的每一分钟从0开始每次增 加1,然后到10。如果表示“每N分钟”则写成“0-10/N”例如0到10中每2分钟则 写成“0-10/2”表示0分、2分、4分、6分、8分、10分。 练习1每天上午7点整执行hostname命令如果写成如下命令。 1 # 分 时 天 月 周
2 * 7 * * * hostname 这种写法是不对的第一个位置是分这里写成了*表示7点的每一分包括0分、1 分……但是所谓7点整的意思是7点0分所以要写成如下命令。 练习2每周一到周五的上午7点整执行hostname命令命令如下。 1 # 分 时 天 月 周
2 0 7 * * 1,2,3,4,5 hostname 现在最终的crontab计划任务内容如下。 [rootpp ~]# crontab -l
0 7 * * * hostname
0 7 * * 1,2,3,4,5 hostname[rootpp ~] 如果要编辑 crontab计划任务通过crontab -e来重新编辑;如果要删除执行 crontab - r命令即可 普通用户也是可以创建crontab计划任务的如果不想让这个用户创建crontab计划任务, 则把这个用户写入/etc/cron.deny中即可一行一个用户。这个文件默认为空命令如下。 [rootpp ~]# cat /etc/cron.deny
[rootpp ~]# 如果不希望iu用户创建crontab计划任务则把tom用户写入这个文件中命令如下。 [rootpp ~]# echo iu /etc/cron.deny
[rootpp ~]# cat /etc/cron.deny
iu
[rootpp ~]# 如果又想让 tom用户可以创建crontab计划任务有以下两种方法。 1把tom用户从/etc/cron.deny 中删除这种方法大家自行练习。 2创建/etc/cron.allow这个文件默认不存在把tom用户名写到此文件中命令如 下。 [rootpp ~]# echo /etc/cron.allow
[rootpp ~]# 现在tom既出现在/etc/cron.allow中又出现在/etc/cron.deny中 在第二个标签中用tom登录crontab计划任务是能够创建的。 系统中也自带一些crontab计划任务在/etc 中存在几个以cron开头的目录命令如下。 [rootpp ~]# ls /etc/cron*
/etc/cron.allow /etc/cron.deny /etc/crontab/etc/cron.d:
0hourly raid-check/etc/cron.daily:
logrotate/etc/cron.hourly:
0anacron/etc/cron.monthly:/etc/cron.weekly:
[rootpp ~]# 每天都会执行一次/etc/crondaily中的脚本每小时都会执行一次/etc/cron.hourly中的 脚本每月都会执行一次/etc/cron.monthly中的脚本每周都会执行一 次/etc/cron.weekly中的脚本。