linux中怎么让一个shell脚本分别在凌晨00点和中午12点运行一次

crontab-e中具体怎么写。假如脚本名为test系统是redhatlinux...
2026年09月25日 01:35
有1个网友回答
网友(1):

linux中有计划任务服务

有经验的系统运维工程师能够让系统自动化运行,无需人工的干预就可以让各个服务、命令在指定的时间段运行、停止。

了解计划任务:http://www.linuxprobe.com/chapter-04.html#44

实际上这些操作都是由系统的计划任务功能完成的,而计划任务又有“一次性”与“长期性”之分,可以理解为:

一次性计划任务:今晚11点30分开启网站服务(例如新网站的公测)

长期性计划任务:每周1、3、5的凌晨3点25分将/home/wwwroot目录打包备份为backup.tar.gz

先来讲一次性任务吧,它是由atd服务/进程来实现的,计划的管理操作是"at"命令,具体的可用参数如下:

参数    作用    

at <时间>    安排一次性任务    

atq或at -l    查看任务列表    

at -c 序号    预览任务与设置环境    

atrm 序号    删除任务    


一般用at命令创建计划任务有交互式与非交互式两种方法,先来看看交换式的方法,(输完成后敲击Ctrl+d来保存退出):

[root@linuxprobe ~]# at 23:30
at > systemctl start httpd
at >
job 3 at Mon Apr 27 23:30:00 2015
[root@linuxprobe ~]# atq
3 Mon Apr 27 23:30:00 2015 a root

直接用echo语句将要执行的命令传送给at命令:

[root@linuxprobe ~]# echo "systemctl start httpd" | at 23:30
job 4 at Mon Apr 27 23:30:00 2015
[root@linuxprobe ~]# atq
3 Mon Apr 27 23:30:00 2015 a root
4 Mon Apr 27 23:30:00 2015 a root

删除的时候只需要用atrm命令与任务编号就可以啦~

[root@linuxprobe ~]# atrm 3
[root@linuxprobe ~]# atrm 4
[root@linuxprobe ~]# atq

对于创建长期可循环的计划任务,则要用到cron服务啦,具体使用方法如下:

创建、编辑计划任务:crontab -e [-u 用户名]

查看计划任务:crontab -l [-u 用户名]
删除计划任务:crontab -r [-u 用户名]

其中在创建、编辑计划任务时有个固定的格式,请读者们一定要记住。

字段    说明    

分钟    取值为从0到59之间的整数    

小时    取值为从0到23之间的任意整数    

日期    取值为1到31之间的任意整数    

月份    取值为1到12之间的任意整数    

星期    取值为0到7之间的任意整数,其中0与7均为星期日    

命令    要执行的命令或程序脚本    


需要用cron计划任务实现的功能:"每周1、3、5的凌晨3点25分将/home/wwwroot目录打包备份为backup.tar.gz"

编辑root用户自己的计划任务:

[root@linuxprobe ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab

使用"crontab -l"命令查看计划任务的内容:

[root@linuxprobe ~]# crontab -l
25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot

如果想对某个用户设置多个计划任务,则可直接用"crontab -e"命令将命令逐条添加即可,让计划任务自动在每周1-5的凌晨1点打包网站目录后自动清除/tmp目录下的所有文件::

[root@linuxprobe ~]# crontab -e
crontab: installing new crontab
[root@linuxprobe ~]# crontab -l
25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot
0 1 * * 1-5 /usr/bin/rm -rf /tmp/*