您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
如何让shell脚本每天定时执行?
命令,脚本,任务如何让shell脚本每天定时执行?
发布时间:2016-12-08加入收藏来源:互联网点击:
如何让shell脚本每天定时执行?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
linux系列的定时任务最简单的办法就是依赖系统提供的定时调度工具crontab
如何新建定时任务?
使用 crontab -e 命令,然后在打开的编辑器里新加一条记录类似下面这样的
前面的那段是时间相关的后面的是你要执行的命令
crontab 表达式
从左往右按顺序依次为
秒(0~59)----
分(0~59)
时(0~23)
日(0~31,但是你需要考虑你月的天数)
月(0~11)
周(0~6 0=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
年(1970-2099)
其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于\"月份中的日期\"和\"星期中的日期\"这两个元素互斥的,必须要对其中一个设置?.
篇幅有限,如果还是不会,可以评论留言,我给你详细解释
回答于 2019-09-11 08:43:50
每天定时去执行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一定要标准化,不然后期会给你后期规模化运维带来很大的难度。
回答于 2019-09-11 08:43:50
不是crontab么
回答于 2019-09-11 08:43:50
执行什么命令?
如我们要执行一个命令同步时间,通常我们使用ntpdate这个命令具体如下:
[root@mpkwiki ~]# ntpdate
ntp.sjtu.edu.cn
#执行命令看看可行不
执行命令的周期
* * * * * 这个五个星分别代表:分、时、天、月、星期。
而 */5 * * * * /usr/sbin/ntpdate 10.93.0.33 \u003e/dev/null 2\u003e\u00261 代表的意思是每5分钟执行一次时间同步任务,并把结果输出到/dev/null 下面去。
怎么才能执行成功每天的计划任务
Linux使用crontab来执行每天的计划任务,在编写计划任务之前还是要确定你的命令是否能正常执行。我一般会使用which ntpdate 得到这个绝对路径下的命令。
接下来打开计划任务写下你命令代码,使用crontab -e。
最后使用刚刚命令写一个shell脚本备份一下MySQL数据库。
1,新建脚本/scripts/
backup_db.sh
,最好是一看就能知道是干嘛的那种。
2,给这个文件夹chmod +x 赋权限。
3,编辑脚本内容,大致如下;
#auto backup mysql
#tony 2019-03-01
#Define PATH
BAKDIR=/data/backup/mysql/`date +%Y-%m-%d`
MYSQLDB=database
MYSQLPW=Pa55w0rd
MYSQLUSR=root
#must use root user run scripts
if
[ $UID -ne 0 ];then
echo This script must use the root user ! ! !
sleep 2
exit 0
fi
#Define DIR and mkdir DIR
if
[ ! -d $BAKDIR ];then
mkdir -p $BAKDIR
else
echo This is $BAKDIR exists....
fi
#Use mysqldump backup mysql
/usr/bin/mysqldump -u$MYSQLUSR -p$MYSQLPW -B -F -R -x --master-data=2 $MYSQLDB|gzip \u003e$BAKDIR/wikidatabase_db.sql.gz
echo \"The mysql backup successfully \"
4,执行命令测试[root@mpkwiki scripts]# which mysqldump
5,在计划任务里执行每天夜里12:00备份数据库
6,测试命令查询结果。
回答于 2019-09-11 08:43:50
Jenkins也可以
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |