Linux计划任务at命令、crontab命令

前言

环境:centos 7.9
Linux的计划任务就和Windows的计划任务一样,可以设置系统在哪个时间执行什么命令或脚本,比如在凌晨的时候对数据库进行备份等工作。

注意

设定或执行计划任务之前最好看一下服务器时间是否正常。

at命令(一次性计划任务)

at命令是一次性执行命令,也就是说这个命令设置的计划任务就执行一次就消亡了,at命令是由atd服务提供的,atd.service服务是开机自启守护进程服务。
at命令语法格式:

at  HH:MM yyyy-mm-dd
> command
> Ctrl+D

at  HH:MM yyyy-mm-dd -f filename							#文件必须是可执行权限,而且应该写绝对路径

演示示例:

[root@master ~]# at 14:36 2021-10-7 -f /root/at.sh			#文件必须是可执行权限,而且应该写绝对路径
job 7 at Thu Oct  7 14:36:00 2021
[root@master ~]# atq
7	Thu Oct  7 14:36:00 2021 a root
[root@master ~]# 

第一个格式是指定时间后按enter回车键,再输入命令,然后按Ctrl+D来提交任务,第二个格式是通过参数-f来指定执行的脚本文件,脚本文件必须是能使用sh来执行的具有可执行权限的文件,而且应该写绝对路径。

atq							#查询当前设置的at任务列表,等价于at -l
at	-l						#查询当前设置的at任务列表,等价于atq
atrm  n 					#删除指定任务编号的at任务,同at -d n命令,编号通过atq或at -l就能查得到
at -d  n					#删除指定任务编号的at任务,同atrm n命令,编号通过atq或at -l就能查得到
at -c n						#查看指定编号的任务的具体内容

at计划任务文件位置

默认目录:/var/spool/at/
每创建一个at计划任务默认就会在/var/spool/at/目录里创建一个文件,文件以a开头的,当任务执行完毕后,文件也随之消失。

拒接其他人创建at计划任务

root用户想要拒接其他用户使用at命令创建计划任务,则可以使用/etc/at.deny文件来实现,编辑该文件直接输入用户名即可,这样该用户使用at命令时就会报错不具备权限。

crontab命令(周期性计划任务)

不会写可以去这个网站生成计划任务:https://crontab.guru/.
crontab命令是周期性执行命令,也就是说这个命令设置的计划任务可以周而复始的在指定的时间内执行,这跟Windows的计划任务是一样的,crontab命令是由crond.service提供的,crond.service也是开机自启服务。

命令格式:crontab 选项

-l 		列出指定用户的计划任务列表
-e 		编辑指定用户的计划任务列表
-u		指定用户名,如果不指定,则默认当前用户
-r		删除指定用户的计划任务

通常,我们会使用crontab -e 进入脚本编辑模式来编辑计划任务,如下:

[root@Centos8 ~]# crontab -e 

这样就进入了计划任务编辑页面,这和vim一样的,编辑计划任务是有一定格式的,如下 讲解。

计划任务的编辑语法格式

语法格式:

分	 时	 日	 月	 周	 需要执行的命令

取址范围:

分:0-59
时:0-23
日:1-31
月:1-12
周:0-7,其中0或7都可以表示星期天
4个符号:星号*   中杠行线 -     斜杠/     道号,
* 星号表示取址范围中的每一个数字,如表示0-23小时中的每个小时则就用星号表示
-横杆代表连续区间表达式,如1到7可以表示:1-7
/斜杠表示每间隔多少个,如任务每隔十分钟执行一次,则可以在分的位置写:*/10
,英文的道号表示多个取值,如想在1点,2点,6点执行则可以在时的位置这样写:1,2,6

计划任务演示示例

计划任务1:每月1、10、22日的4:45重启httpd服务
45  4   1,10,22   *   *    /usr/bin/systemctl restart httpd

计划任务2:每周六,周日的1:10分重启httpd服务
10  1   *    *  6,0    /usr/bin/systemctl restart httpd

计划任务3:每天18:00指23:00之间每隔30分钟重启httpd服务
*/30   18-23  *  *  *  /usr/bin/systemctl restart httpd

计划任务4:每隔两天的上午8:00到11:00的第15分钟和第45分钟执行重启httpd服务
15,45  8-11  */2  *  *  /usr/bin/systemctl restart httpd

计划任务5:每天凌晨0:00进行mysql数据库备份(备份脚本已写好)
0 0 * *  *  /usr/bin/bash mysql_backup.sh

注意事项:

1、crontab -e 进入脚本编辑,一行就表示一个计划任务,需要多少个计划任务就写多少行。
2、命令必须使用绝对路径来表示,如:/bin/bash  mysql_back.sh    使用which 命令 或  whereis 命令  来定位命令的绝对路径
3、书写计划任务时,命令的标准输出或错误输出都是不会直接输出到屏幕上的,如:*/1 * * * * date  此计划任务将不会输出日历都屏幕上,正确的写法应该是重定向到文件。

计划任务文件的默认位置/var/spool/cron/

计划任务文件的默认位置:
/var/spool/cron/下有一个与用户名相同的文件,该文件就是保存crontab -e编辑定时任务生成的文件,直接编辑该计划任务文件实质上等价于 crontab -e,所以,有经验的运维工程师都是直接编辑该文件的/var/spool/cron/root

计划任务的日志文件

默认日志文件位置:/var/log/cron /var/log/cron-xxxxxxxx tail -22f /var/spool/mail/root /var/log/cron 就是当天的计划任务日志,日志文件以cron开头后面接日期则是之前的日志,查看该日志文件可以得知计划任务是否执行成功

crontab 权限问题

crontab本身是允许任何用户都可以创建自己的计划任务,但root超级用户可以通过配置来指定哪些用户不具有crontab权限,即不允许哪些用户设置计划任务,其配置文件在:/etc/cron.deny
从文件名字就能看出是拒绝用户计划任务权限,其书写格式很简单:写用户名,一行一个。

crontab与% 问题

%在crontab中属于特殊字符,所以在书写crontab命令时如果需要使用使用%,请使用反斜杠\将百分号转译,如:

* * * * * /usr/bin/tar -zcf /tmp/etc-$(date +"\%Y\%m\%d\%H\%M\%S").tar.gz /etc			#或者下面这样把命令写在文件里
* * * * * sh /root/tar_etc.sh	#tar_etc.sh正常写脚本内容:/usr/bin/tar -zcf /tmp/etc-$(date +"%Y%m%d%H%M%S").tar.gz /etc				
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计划任务管理是 Linux 系统中非常重要的一部分,可以通过配置计划任务来实现自动化任务的执行。Linux 系统中常用的计划任务管理工具有 crontab 和 at 命令。 1. crontab 命令 crontab 命令Linux 系统中用来管理计划任务命令,通过编辑 crontab 文件来实现对计划任务的配置。 - 查看当前用户的计划任务列表:crontab -l - 编辑当前用户的计划任务crontab -e - 删除当前用户的所有计划任务crontab -r - 检查当前用户的计划任务文件是否存在并且合法:crontab -u username -c crontab 文件的格式如下: ``` *  *  *  *  *  command 分 时 日 月 周 命令 ``` 其中,分表示分钟(0-59),时表示小时(0-23),日表示月份中的日期(1-31),月表示月份(1-12),周表示星期几(0-6,0 表示周日),command 表示要执行的命令。 例如,在每天的 16 点 30 分执行 /home/user/backup.sh 脚本,可以在 crontab 文件中添加以下内容: ``` 30 16 * * * /home/user/backup.sh ``` 2. at 命令 at 命令也是 Linux 系统中用来管理计划任务命令,它可以让用户在指定的时间运行一次命令或脚本。 - 在指定时间运行命令:at HH:MM - 在指定时间运行脚本:at -f script_file HH:MM - 查看当前用户的计划任务列表:atq - 删除指定的计划任务:atrm job_number 例如,在 15 分钟后执行 /home/user/backup.sh 脚本,可以使用以下命令: ``` at now + 15 minutes at> /home/user/backup.sh at> ctrl+d ``` 以上就是 Linux 常用的计划任务管理命令,通过合理配置计划任务,可以大大提高工作效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值