linux系统的web网站在运营状态时,咱们常须要对网站进行维护,例如查看资源剩余并作出响应、日志分割、数据整理,在特定状态执行特定任务等等,这些都会须要linux能实现自动执行某些任任务。本篇博文介绍如何进行常见的linux自动化任务。
php
实现“自动化”有以下好处:linux
节省人力,一个脚本就够了。web
在夜晚自动执行能够避开网站流量高峰期,不影响网站白天的效率。shell
准确,设置完善的状况下,不会出差错。apache
固然最重要的仍是省心了,不用频繁的敲某些命令了。vim
开机启动应该是咱们很常常的需求了,咱们常须要在开机时就自动执行某些命令来开启服务,进程等,有了它咱们没必要再在每次开机时输入同一堆命令。服务器
使用chkconfig命令能够在设置在不一样启动级别下启动特定的服务或是程序。网络
先说一下linux的运行级别:ide
等级0表示:表示关机网站
等级1表示:单用户模式
等级2表示:无网络链接的多用户命令行模式
等级3表示:有网络链接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:从新启动
chkconfig的命令以下:
chkconfig --list //命令查看已设置的开启自启动列表。
xxxd 0:off 1:off 2:on ... 6:off //list的结果,表示在xxxd服务在启动级别为2 3 4 5 的状况下会自动启动。
chkconfig --add xxxd//向任务列表中添加一个xxxd服务
chkconfig [--level 1/2/../6] xxxd on/off//设置xxxd用服务在n状态为开/关,[]内省略则在2345级别开启
chkconfig --del xxxd //将任务列表中的xxxd服务删除
也能够直接编辑/etc/rc.d/目录下的文件来实现开机自启动。此目录下有不少文件,rcn.d是在启动状态为n的状况下的启动文件夹,rc、rc.sysinit、init.d都是系统的模块或系统设置的自启文件[夹]。
咱们用vim rc.local 编辑 rc.local文件,来定制本身的自启计划。命令十分简单,就像日常在操做同样。如/usr/local/apache/bin/apachectl start表示开机自启动apache服务器。
at是一个简单的功能简单的定时任务程序,它只能进行一次性的定时任务,其用法以下:
#at time //at加时间启动at命令
at>operation //输入要执行的操做
at>Ctrl+D //按Ctrl+D退出命令编辑
其time的常见形式以下
at H:m tomorrow //次日的H点m分
at now + n minutes/hours/days/weeks //在n分/时/天/周后
at midnight //在午夜=-=
at H:m pm/am //在当天上午/下午的H点m分
咱们也能够在/var/spool/at文件中查看at的当前命令。还须要注意的是,linux默认atd进程关闭状态,须要手动打开。
linux内置的cron进程能帮咱们实现这些需求,cron搭配shell脚本,很是复杂的指令也没有问题。
cron守护进程是一个由实用程序和配置文件组成的小型子系统,在几乎全部类 UNIX 系统上均可以找到某种风格的cron,咱们能够用ps aux|grep cron找到crond这个守护进程。
咱们常常使用的是crontab命令是cron table的简写,它是cron的配置文件,也能够叫它做业列表,咱们能够在如下文件夹内找到相关配置文件。
/var/spool/cron/ 目录下存放的是每一个用户包括root的crontab任务,每一个任务以建立者的名字命名
/etc/crontab 这个文件负责调度各类管理和维护任务。
/etc/cron.d/ 这个目录用来存听任何要执行的crontab文件或脚本。
咱们还能够把脚本放在/etc/con.hourly、/etc/con.daily、/etc/con.weekly、/etc/con.monthly目录中,让它每小时/天/星期、月执行一次。
咱们经常使用的命令以下:
1 2 3 4 |
crontab [-u username] // 省略用户表表示操做当前用户的 crontab -e (编辑工做表) -l (列出工做表里的命令) -r (删除工做做) |
咱们用crontab -e进入当前用户的工做表编辑,是常见的vim界面。每行是一条命令。
crontab的命令构成为 时间+动做,其时间有分、时、日、月、周五种,操做符有
* 取值范围内的全部数字
/ 每过多少个数字
- 从X到Z
,散列数字
如下是几个例子。
时间 注释
1 2 3 4 |
0 0 25 12 * // 在12月25日的0时0分 * /5 * * * * // 每过5分钟 * 4-6 * * * // 天天的4 5 6点 * * * * 2,5 // 每周二和周五 |
配合简单的shell脚本
若是咱们的命令有逻辑判断等很是复杂的操做时,再直接编辑crontab就有点困难了,这时,咱们能够使用shell脚本。其来历,分类定义与题不符,再也不多说,咱们直接说它的用法。
咱们用vim /usr/sh/test.sh来使用vim编辑一个shell脚本
1 2 3 |
#!/bin/sh //声明开始shell脚本 a = "hello world" // 定义一个shell变量 echo $a // 熟悉的 echo ,输出a变量 |
而后crontab -e编辑crontab,添加 */5 * * * * /usr/sh/test.sh每隔五分钟运行一次test.sh脚本,也能够用 /phppath/php /filepath/test.php 来用php进程来执行php程序。