你们好,又碰面了,我是大家的同事全栈君。
写一个shell脚本,定时执行简单示例
好多时侯我们有希望服务器定时去运行一个脚本来触发一个操作,例如说定时去备份服务器数据、数据库数据等不适宜人工时常做的一些操作这儿简单说下
Shell也称壳,类似于下的command和后来的cmd.exe。它接收用户命令,之后调用相应的应用程序。作为命令语言adobe air linux,它交互式解释和执行用户输入的命令或则手动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各类变量和参数,并提供了许多在中才具有的控制结构,包括循环和分支。
我的虚拟机是centos7.0.2
接出来写一个简单的shell命令:
1.先步入根目录
cd/root
2.使用vi编辑器可以直接#vimhello.sh编撰第一个shell文件hello.sh,注意一定要以.sh结尾
vimhello.sh
3.编撰第一个shell文件,#!/bin/bash是必需要写的,表示要是/bin/bash这个执行脚本的命令执行接出来写的脚本,echo“helloworld!!”表示想后端复印一句话,具体看各自需求。
4.通过chmod命令赋于该脚本的执行权限chmod755hello.sh,否则没有执行权限,/root/hello.sh表示在全路径下执行该shell脚本
就此一个简单的shell脚本就这样写完了具体的这儿就不讲了。(说白了linux运行exe文件命令linux定时关机命令,shell脚本就相当于一个文件,它专门来干自己独立的任务)
其实一个简单的shell脚本写完了并且运行后只能执行一次对好多应用场景来说还是不够,接出来说一下定时任务
linux应当都有crontablinux运行exe文件命令,没有的话可以安装一下:
yuminstallvixie-cron
yuminstallcrontabs
vixie-cron软件包是cron的主程序;crontabs软件包是拿来安装、卸装、或列出拿来驱动cron守护进程的表格的程序。
安装完之后开启crontab服务
servicecrondstart
用以下的方式启动、关闭这个cron服务:servicecrondstart//启动服务servicecrondstop//关掉服务servicecrondrestart//重启服务servicecrondreload//重新载入配置
查看crontab服务状态:servicecrondstatus自动启动crontab服务:servicecrondstart
查看crontab服务是否已设置为开机启动,执行命令:ntsysv加入开机手动启动:chkconfig–level35crondon
也可以用设置开机手动启动crond服务:[root@CentOS~]#chkconfigcrondon
查看各个开机级别的crond服务运行情况[root@CentOS~]#chkconfig–listcrondcrond0:关掉1:关掉2:启用3:启用4:启用5:启用6:关掉可以见到2、3、4、5级别开机会手动启动crond服务取消开机手动启动crond服务:[root@CentOS~]#chkconfigcrondoff
设置须要执行的脚本
新增调度任务可用两种方式:1)、在命令行输入:crontab-e之后添加相应的任务,wq读档退出。2)、直接编辑/etc/crontab文件,即vi/etc/crontab,添加相应的任务。crontab-e配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务查看调度任务crontab-l//列举当前的所有调度任务crontab-l-ujp//列举用户jp的所有调度任务删掉任务调度工作crontab-r//删掉所有任务调度工作直接编辑vim/etc/crontab,默认的文件方式如下:
前四行是有关设置cron任务运行的环境变量。
SHELL变量的值指定使用的SHELL环境(该样例为bashshell),
PATH变量定义了执行命令的路径。Cron的输出以电子短信的方式发给MAILTO变量定义的用户名。
假如MAILTO变量定义为空字符串(MAILTO=””),电子电邮不会被发送。执行命令或脚本时HOME变量可拿来设置基目录。
文件/etc/crontab中每行任务的描述格式如下:
minutehourdaymonthdayofweekcommand
minute–从0到59的整数
hour–从0到23的整数
day–从1到31的整数(必须是指定月份的有效日期)
month–从1到12的整数(或如Jan或Feb缩写的月份)
dayofweek–从0到7的整数,0或7拿来描述周末(或用Sun或Mon缩写来表示)
command–需要执行的命令(可用asls/proc>>/tmp/proc或执行自定义脚本的命令)
root表示以root用户身分来运行
run-parts表示前面跟随的是一个文件夹,要执行的是该文件夹下的所有脚本
对于以上各句子,星号(*)表示所有可用的值。诸如*在指代month时表示每月执行(须要符合其他限制条件)该命令。
整数间的连字号(-)表示整数列,比如1-4意思是整数1,2,3,4
指定数值由冒号分开。如:3,4,6,8表示这四个指定整数。
符号“/”指定步进设置。“/”表示步进值。如0-59/2定义每两分钟执行一次。步进值也可用星号表示。如*/3拿来运行每三个月份运行指定任务。
以“#”开头的为注释行,不会被执行。
例如上述图中执行的是每隔一分钟执行一半hello.sh脚本上面脚本输出的内容你们也晓得>>符号指定文件获取内容的储存位置例如访问一个地址命令curl
linux系统字符界面未能显示画面只能把访问的页面编译后的代码原貌输出如:
这样你们看着很乱吧
其实也有-I参数沉静访问curl-I