阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

如何进行常见的Linux自动化任务

103次阅读
没有评论

共计 2443 个字符,预计需要花费 7 分钟才能阅读完成。

Linux 系统的 web 网站在运营状态时,我们常需要对网站进行维护,例如查看资源剩余并做出响应、日志分割、数据整理,在特定状态执行特定任务等等,这些都会需要 linux 能实现自动执行某些任任务。本篇博文介绍如何进行常见的 linux 自动化任务。

 实现“自动化”有如下好处:
 节省人力,一个脚本就够了。
 在夜晚自动执行可以避开网站流量高峰期,不影响网站白天的效率。
 准确,设置完善的情况下,不会出差错。
 当然最重要的还是省心了,不用频繁的敲某些命令了。
 开机启动
 开机启动应该是我们很经常的需求了,我们常需要在开机时就自动执行某些命令来开启服务,进程等,有了它我们不必再在每次开机时输入同一堆命令。

chkconfig 命令

 使用 chkconfig 命令可以在设置在不同启动级别下启动特定的服务或是程序。

 先说一下 linux 的运行级别:

 等级 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 服务删除
rc.d 文件的编辑

 也可以直接编辑 /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 是一个简单的功能简单的定时任务程序,它只能进行一次性的定时任务,其用法如下:

#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 进程关闭状态,需要手动打开。

crontab 实现定时任务
linux 内置的 cron 进程能帮我们实现这些需求,cron 搭配 shell 脚本,非常复杂的指令也没有问题。

cron 介绍

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 目录中,让它每小时 / 天 / 星期、月执行一次。
crontab 的使用

我们常用的命令如下:

crontab [-u username] // 省略用户表表示操作当前用户的 crontab
    -e      (编辑工作表)
    -l      (列出工作表里的命令)
    -r      (删除工作作)

我们用 crontab - e 进入当前用户的工作表编辑,是常见的 vim 界面。每行是一条命令。

crontab 的命令构成为 时间 + 动作,其时间有分、时、日、月、周五种,操作符有

* 取值范围内的所有数字
/ 每过多少个数字
– 从 X 到 Z
,散列数字
 以下是几个例子。

 时间                  注释

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 脚本

#!/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 程序。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-12/126791.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计2443字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中