Linux 计划任务

只有用水将心上的雾气淘洗干净,荣光才会照亮最初的梦想。


一、计划任务是什么?

简单来说计划任务就是定时自动来完成我们定义的一些操作。

例如:每天晚上12.30分将具有suid权限的文件删除。

find / perm a=s exec rm -rf {} /;

二、一次计划任务(at)

命令用法:

格式:at [选项] [时间]
选项:
	-l:列出所有计划任务(等价于atq命令)
	-c <任务号>:查看指定序号计划任务的脚本内容)(一个脚本,包括环境变量)
	-d <任务号>:删除计划任务(等价于atq命令) 	

在添加计划任务时,at 会从标准输入读取任务内容,可以输入多条命令,输入完成后,另起一个空行,按 Ctrl+D 结束输入。输入的命令会被自动转化为脚本。详情请看下面的例子。
请确保 atd 服务已经启用,否则计划任务不能执行。

常用的时间格式(精确到分钟)

绝对时间

<时>:<分>

<时>:分<> <年>-<月>-<日>
#偏移单位有:minutes, hours, days, weeks

例:

12:00
08:24 2024-03-22

相对时间

<绝对时间> +<偏移量> <偏移单位>

例:

now +2 hours    #两小时后
23:00 +30 minutes   #23:00 再过 30 分钟

添加计划任务:

[root@localhost ~]# at 08:27
at> sleep 5
at> <EOT>		#输入完成后,Ctrl+D 退出
job 3 at Fri Mar 22 08:27:00 2024
#计划任务被指定为3号

查看计划任务
列出所有计划任务

[root@localhost ~]# at -l
3	Fri Mar 22 08:27:00 2024 a root
[root@localhost ~]# at -c 3
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
.............	#东西太多省略了
cd /root || {
	 echo 'Execution directory inaccessible' >&2
	 exit 1
}
${SHELL:-/bin/sh} << 'marcinDELIMITER1fa1a83e'
sleep 5

marcinDELIMITER1fa1a83e

删除计划任务

[root@localhost ~]# at -d 3

二 周期性计划任务(crontab)

命令用法:

crontab [选项]
选项:
	-l:列出所有计划任务
	-e:使用文本编辑器编辑计划任务列表

如果不加任何选项直接运行 crontab,就会跟上面的 at 命令一样从标准输入接收配置,但是这会导致已存在的计划任务列表被覆盖,这是非常危险的事情!不推荐使用此方法添加计划任务,除非计划任务列表为空。
请确保 crond 服务已经启用,否则计划任务不能执行。

计划任务条目格式

字段含义
第一字段分钟(0-59)
第二字段小时(0-23)
第三字段日(1-31)
第四字段月(1-12)
第五字段周(0-7)
第六字段命令(允许添加空格)

第一字段到第五字段为时间段,*表示所有时间,-表示一段连续时间,, 表示不连续的时间,/ 表示间隔的时间。

时间格式举例

* * * * * 每分钟执行一次
0 8-22 * * * 8-22点 整点执行一次
30 */2 * * * 从0:30分开始,每隔两分钟执行一次
0 0 10 2-12/2 * 从2月开始,每隔两个月零十天的零点整执行一次

例:
列出计划任务:

[root@localhost ~]# crontab -l

1   *   *   *   *   python /opt/iredapd/tools/cleanup_db.py >/dev/null  #每小时 01 分执行
*/30   *   *   *   *   python /opt/iredapd/tools/spf_to_greylist_whitelists.py >/dev/null   #每半小时执行
1   2   *   *   *   python /var/www/iredadmin/tools/cleanup_amavisd_db.py >/dev/null    #每天 2:01 执行
1   *   *   *   *   python /var/www/iredadmin/tools/cleanup_db.py >/dev/null 2>&1   #每小时 01 分执行
2   2   *   *   *   /usr/bin/php /var/www/roundcubemail/bin/cleandb.sh >/dev/null   #每天 2:02 执行
2   2   *   *   *   /usr/bin/php /var/www/roundcubemail/bin/gc.sh >/dev/null    #每天 2:02 执行
1   */1   *   *   *   /usr/bin/perl /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -update -config=web >/dev/null    #每小时 01 分执行
1   */1   *   *   *   /usr/bin/perl /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -update -config=smtp >/dev/null   #每小时 01 分执行

编辑计划任务

[root@localhost ~]# crontab -e

执行完该命令之后,系统会打开一个 vi 文本编辑器来编辑计划任务列表,编辑完成之后请记得保存。

如果没有语法错误,系统会给出提示。

crontab: installing new crontab

这样计划任务就生效了。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了linux计划任务的使用,我们要熟悉什么时候要使用一次性计划任务,什么时候使用周期性计划任务,掌握如何配置计划任务及查看,有什么问题请评论区见。

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海粟石子

生而为人

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值