⼀个简单的linux下设置定时执⾏shell脚本的⽰例
很多时候我们有希望服务器定时去运⾏⼀个脚本来触发⼀个操作,⽐如说定时去备份服务器数据、数据库数据等不适合⼈⼯经常做的⼀些操作这⾥简单说下
shell Shell俗称壳,类似于下的command和后来的。它接收⽤户命令,然后调⽤相应的应⽤程序。作为命令语⾔,它交互式解释和执⾏⽤户输⼊的命令或者⾃动地解释和执⾏预先设定好的⼀连串的命令;作为程序设计语⾔,它定义了各种变量和参数,并提供了许多在中才具有的控制结构,包括循环和分⽀。
我这⾥是centos6,5
接下来写⼀个简单的shell命令:
1.使⽤pwd命令查看当前路径为/root⽬录
2.使⽤vi编辑器可以直接 # vim hello.sh编写第⼀个shell⽂件 hello.sh,注意⼀定要以.sh结尾
3.编写第⼀个shell⽂件,#!/bin/bash 是必须要写的,表⽰要是/bin/bash这个执⾏脚本的命令执⾏接下来写的脚本, echo "hello world !!"表⽰想前端打印⼀句话,具体看各⾃需求。
4.通过chmod命令赋予该脚本的执⾏权限chmod 755 hello.sh,否则没有执⾏权限,/root/hello.sh表⽰在全路径下执⾏该shell脚本
就此⼀个简单的shell脚本就这样写完了具体的这⾥就不讲了。
虽然⼀个简单的shell脚本写完了但是运⾏后只能执⾏⼀次对很多应⽤场景来说还是不够,接下来说⼀
下定时任务
定时任务 --相信很多⼩伙伴没⽤过也听说过吧。
这⾥就不细讲了直接进⼊正题
1.安装crontab
vixie-cron软件包是cron的主程序;
crontabs软件包是⽤来安装、卸装、或列举⽤来驱动 cron 守护进程的表格的程序。
2.开启crontab服务
⽤以下的⽅法启动、关闭这个cron服务:
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载⼊配置
linux循环执行命令脚本查看crontab服务状态:service crond status
⼿动启动crontab服务:service crond start
查看crontab服务是否已设置为开机启动,执⾏命令:ntsysv
加⼊开机⾃动启动:
chkconfig –level 35 crond on
也可以⽤设置开机⾃动启动crond服务:
[root@CentOS ~]# chkconfig crond on
查看各个开机级别的crond服务运⾏情况
[root@CentOS ~]# chkconfig –list crond
crond 0:关闭 1:关闭 2:启⽤ 3:启⽤ 4:启⽤ 5:启⽤ 6:关闭
可以看到2、3、4、5级别开机会⾃动启动crond服务
取消开机⾃动启动crond服务:
[root@CentOS ~]# chkconfig crond off
3.设置需要执⾏的脚本
新增调度任务可⽤两种⽅法:
1)、在命令⾏输⼊: crontab -e 然后添加相应的任务,wq存盘退出。
2)、直接编辑/etc/crontab ⽂件,即vi /etc/crontab,添加相应的任务。
crontab -e配置是针对某个⽤户的,⽽编辑/etc/crontab是针对系统的任务
查看调度任务
crontab -l //列出当前的所有调度任务
crontab -l -u jp //列出⽤户jp的所有调度任务
删除任务调度⼯作
crontab -r //删除所有任务调度⼯作
直接编辑 vim /etc/crontab ,默认的⽂件形式如下:
前四⾏是有关设置cron任务运⾏的环境变量。SHELL变量的值指定使⽤的SHELL环境(该样例为bash shell),PATH变量定义了执⾏命令的路径。Cron的输出以电⼦邮件的形式发给MAILTO变量定义的⽤户名。如果MAILTO变量定义为空字符串(MAILTO=""),电⼦邮件不会被发送。执⾏命令或脚本时HOME变量可⽤来设置基⽬录。
⽂件/etc/crontab中每⾏任务的描述格式如下:
minute hour day month dayofweek command
minute - 从0到59的整数
hour - 从0到23的整数
day - 从1到31的整数 (必须是指定⽉份的有效⽇期)
month - 从1到12的整数 (或如Jan或Feb简写的⽉份)
dayofweek - 从0到7的整数,0或7⽤来描述周⽇ (或⽤Sun或Mon简写来表⽰)
command - 需要执⾏的命令(可⽤as ls /proc >> /tmp/proc或执⾏⾃定义脚本的命令)
root表⽰以root⽤户⾝份来运⾏
run-parts表⽰后⾯跟着的是⼀个⽂件夹,要执⾏的是该⽂件夹下的所有脚本
对于以上各语句,星号(*)表⽰所有可⽤的值。例如*在指代month时表⽰每⽉执⾏(需要符合其他限制条件)该命令。
整数间的连字号(-)表⽰整数列,例如1-4意思是整数1,2,3,4
指定数值由逗号分开。如:3,4,6,8表⽰这四个指定整数。
符号“/”指定步进设置。“/<interger>”表⽰步进值。如0-59/2定义每两分钟执⾏⼀次。步进值也可⽤星号表⽰。如*/3⽤来运⾏每三个⽉份运⾏指定任务。
以“#”开头的为注释⾏,不会被执⾏。
⽐如上述图中执⾏的是每隔⼀分钟执⾏⼀半hello.sh脚本上边脚本输出的内容⼤家也知道  >> 符号指定⽂件获取内容的存放位置⽐如访问⼀个地址命令 curl www.baidu
linux系统字符界⾯⽆法显⽰画⾯只能把访问的页⾯编译后的代码原样输出如:
这样⼤家看着很乱吧
这样只显⽰⼀组http状态但还是很乱直接把他写进固定的⽇志⽂件就⽅便多了
cat ⼀下查看这样就简单多了
就此⼀个简单的定时任务就完成了
如觉得哪⾥不对的直接评论或留⾔。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。