这个非常简单,crontab命令就可以轻松实现,下面我简单介绍一下操作过程:
1.首先,新建需要定时执行的shell脚本,这里我为了方便说明问题,新建了一个打印当前时间的脚本date.sh,内容如下,非常简单,就是一行date命令,然后将输出重定向到一个date.txt文本中:
2.接着就是将这个date.sh脚本添加到定时任务中,直接运行“crontab -e”命令添加就行,如下,这里先以每分钟执行一次脚本为例,看定时任务能否正常执行,编辑“*/1 * * * * /root/date.sh”保存就行,如下:
至于这6个字段的含义,官方文档有详细说明,如下,分别代表分、时、天、月、星期和执行的命令,网上介绍资料也非常丰富,感兴趣的话,可以搜索一下:
3.最后,我们再查看一下输出文件date.txt和crontab日志,如下,说明添加的定时任务已经正常运行,这里再替换成你每天定时执行的时间,只需要修改第一、二个字段就行,例如,每天10:30执行,则编辑“30 10 * * * /root/date.sh”保存就行:
至此,我们就完成了每天定时执行shell脚本。总的来说,整个过程非常简单,只要你有一定的Linux基础,熟悉一下crontab命令,很快就能掌握的,网上也有相关资料和教程,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。
每天定时去执行shell脚本,说明你已经开始走向自动化运维之路了,再往后走就会开始制定标准化,有了标准化作为基础,可以继续下一步,平台化运维,最后就是智能化运维,回归正题,如何让shell脚本每天定时执行,在这里,我提供2种方法
方法一:crontab
无论你的系统是aix还是linux,都可以使用crontab去定时执行shell脚本,举个例子
* * * * * . /monitor/
disk.sh
> /monitor/
disk.sh.log
2>&1,这样配置,表示系统会每分钟调用一次
disk.sh
脚本。在这里要重点说明一下“* * * * *”,每个星星代表的含义。
第一个*代表分钟0~59
第二个*代表小时0~23(0表示子夜)
第三个*代表日1~31
第四个*代表月1~12
第五个*代表星期0~7(0和7表示星期天)
如果你想要
disk.sh
每天晚上22点30分执行,可以修改成这样
30 22 * * * . /monitor/disk.sh > /monitor/disk.sh.log 2>&1
方法二:Rundeck平台
用Rundeck平台,可以规模化的去管理每台主机的shell脚本的运行,crontab最小时间单位是分钟,而Rundeck平台可以精确到秒。
Rundeck是一个基于Java和Grails的开源的运维自动化工具,提供了Web管理界面进行操作,同时提供命令行工具和WebAPI的访问控制方式。他象Ansible之类的工具一样,Rundeck能够帮助开发和运维人员更好地管理各个节点。
总之,无论用crontab,还是用Rundeck平台,你的shell一定要标准化,不然后期会给你后期规模化运维带来很大的难度。
crontab了解下,linux必学技能
crontab可以让shell脚本每天定时执行,“crontab -e”进入编辑页面,“crontab -l ”查看当前的定时任务。
比如每天00:00执行脚本clean.sh:
0 0 * * * /bin/clean.sh