Linux之服务管理


一、计划任务

1) Crontab简介

1、Crontab是一个用于设置周期性被执行任务的工具;

2、被周期性执行的任务我们称为Cron Job;

3、周期性执行的任务列表我们称为Cron Table。

2) Crontab实践

1、 相关工具

#Putty

#一个免费的易用的SSH连接工具

#http://www.putty.org/

2、 安装并检查Crontab服务

①检查cron服务

检查Crontab工具是否安装:crontab -l

检查crond服务是否启动:service crond status

②安装cron(centos7以上已默认安装)

yum install vixie-cron

yum install crontabs

③案例实现

#每分钟都打印当前时间到一个日志文件中

*/1 * * * * date >> /tmp/log.txt

3、 Crontab的基本组成

crond 系统服务 + 配置文件 + 配置工具crontab

4、 Crontab的配置文件格式

案例:

①每晚的21:30重启apache

30 21 * * * service httpd restart

②每月1、10、22日的4:45重启apache

45 4 1,10,22 * * service httpd restart

③每月1到10日的4:45重启apache

45 4 1-10 * * service httpd restart

④每隔两分钟重启Apache服务器

*/2 * * * * service httpd restart #偶数分钟

1-59/2 * * * * service httpd restart #基数分钟

⑤晚上11点到早上7点之间,每隔一小时重启apache

0 23-7/1 * * * service httpd restart

⑥每天18:00至23:00之间每隔30分钟重启apache

0,30 18-23 * * * service httpd restart

0-59/30 18-23 * * * service httpd restart

总结:

* 表示任何时候都匹配

可以用“A,B,C” 表示A或者B或者C时执行命令

可以用“A-B” 表示A到B之间时执行命令

可以用“*/A” 表示每A分钟(小时等)执行一次命令

5、 Crontab工具的使用

#查看某用户的计划任务列表

crontab -l -u 用户名

#修改某用户的计划任务

crontab -e -u 用户名

#查看生成的最终计划任务文件

/var/spool/cron

6、 Crontab的日志

/var/log/cron文件保存着所有cron的任务执行记录

/var/spool/mail/ 下也会以邮件的方式发送日志信息

7、 Crontab配置文件

全局(系统)配置文件

/etc/crontab

[root@localhost etc]# cat crontab

SHELL=/bin/bash(用该命令去执行)

PATH=/sbin:/bin:/usr/sbin:/usr/bin(载入时需要用的PATH)

MAILTO=root(执行记录邮件对象)

HOME=/(执行计划任务的根目录)

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# | .------------- hour (0 - 23)

# | | .---------- day of month (1 - 31)

# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (Sunday=0 or 7)

OR sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * user-name command to be executed

注:也可在/etc/crontab文件下添加计划任务,跟crontab -e不同的是实际上是一个全局的配置文件设置的计划任务,也称为系统计划任务。

服务配置文件

/etc/cron.d/

[root@localhost etc]# cat sysstat

#sysstat中的内容跟crontab -l所执行的内容是一致的

#crontab在载入文件的时候会把cron.d下面的配置文件信息(sysstat)载入成root用户下面的计划任务,如果用crontab –e会破坏原始文件(即sysstat)的配置内容。如果直接编辑sysstat文件的话,需要执行crontab +文件名,此时将会覆盖原先crontab -e里的内容。

执行crontab -e实际上是修改/var/spool/cron/下面对应当前账号的文件。执行(crontab +文件名)时,将直接读取文件中的数据覆盖到/var/spool/cron/所对应用户的配置文件中

在/etc/cron.d文件夹下面的文件可以认为是对系统配置的补充文件,打开可以看到和/var/spool/cron/用户的配置文件一样,但是多了个用户字段这些是系统的cron运行时自动加载的配置文件,使用crontab -l只能查看存在于/var/spool/cron/用户的cron任务

3) Crontab的常见错误

1、 环境变量

2、 命令行双引号中使用%时,未加反斜线\

3、 第三和第五个域之间执行的是“或”操作

4、 分钟设置误用

二、服务管理

1) 简介与分类

1、 系统的运行级别

运行级别

运行级别

含义

0

关机

1

单用户模式,可以想象为windows的安全模式,主要用于系统修复

2

不完全的命令行模式,不含NFS服务

3

完全的命令行模式,就是标准字符界面

4

系统保留

5

图形模式

6

重启动

运行级别命令

[root@localhost ~]# runlevel

N 3

(N代表no,因为一开机就进入字符界面,没有从哪个级别转入到3级别)

#查看运行级别命令

[root@localhost ~]# init 运行级别

#修改运行级别命令

系统默认运行级别

[root@localhost ~]# vim /etc/inittab

id:3:initdefault:

#系统开机后直接进入哪个运行级别

2、 服务的分类

#独立的服务需要占用系统内存

#xinetd服务属于超级守护进程,本身是独立的,管理一些后台程序,用户需要访问后台程序要先访问xinetd,再通过它去访问对应的后台程序,响应时间慢,但除了xinetd本身占内存,剩下的都不占用系统内存

查询已安装的服务

  • RPM包安装的服务

[root@localhost ~]# chkconfig --list

#查看服务自启动状态,可以看到所有RPM包安装的服务(独立服务)

  • 源码包安装的服务

#查看服务安装位置,一般是/usr/local/下

查看xinetd服务

需要安装xinetd服务本身

[root@localhost ~]# yum -y install xinetd

启动与自启动

服务启动:就是在当前系统中让服务运行,并提供功能。

服务自启动:自启动是指让服务在系统开机或重启动之后,随着系统的启动而自启动服务

RPM安装服务和源码包安装服务的区别

RPM安装服务和源码包安装服务的区别就是安装位置的不同:

#源码包安装在指定位置,一般是/usr/local/

#RPM包安装在默认位置中

3、 服务与端口

端口的定义

如果把IP地址比作一间房子,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536个。如图:

端口与服务的对应

#1万以内的端口是系统预留的,超出的是用户使用的

#[root@localhost ~]# cat /etc/services(查看常规端口)

查询系统中开启的服务

[root@localhost ~]# netstat -tlunp

-t列出tcp数据

-u列出udp数据

-l列出正在监听的网络服务(不包含已经连接的网络服务)

-n用端口号来显示服务,而不是用服务名

-p 列出该服务的进程ID(PID)

#列出系统中所有的已经启动的服务

总结:查看服务自启动状态:chkconfig –list

查看服务启动状态:a、[root@localhost ~]# ps aux

b、[root@localhost ~]# netstat -tlunp

2) RPM包服务管理

1、 独立服务的管理

RPM包安装服务的位置

RPM安装服务和源码包安装服务的区别就是安装位置的不同:

#源码包安装在指定位置,一般是/usr/local/。

其中usr是Unix System Resource,即Unix系统资源的缩写

#RPM包安装在默认位置中(不是绝对的),如下:

/etc/init.d/:启动脚本位置

/etc/sysconfig/:初始化环境配置文件位置

/etc/:配置文件位置

/etc/xinetd/conf:xinted配置文件

/etc/xindtd.d/:基于xinetd服务的启动脚本

/var/lib/:服务产生的数据放在这里

/var/log/:日志

独立服务的启动

[root@localhost ~]# /etc/init.d/独立服务名

start|stop|status|restart

[root@localhost ~]# /etc/rc.d/init.d/独立服务名

start|stop|status|restart

#redhat7.2系统早版本时,所有常规服务在此目录,照顾管理员的习惯/etc/init.d是/etc/rc.d/init.d的软链接即快捷方式。

[root@localhost ~]# service 独立服务名

start|stop|status|restart

#这个是redhat系列的专有命令

#默认源码包服务例外,不能由以上命令启动。

独立服务的自启动的三种方式

A、chkconfig [--level 运行级别] [独立服务名] [on|off]

B、修改/etc/rc.d/rc.local文件(区别A和C的独立一种方法,推荐使用)

C、使用ntsysv命令管理自启动(redhat专有命令)

2、 基于xinetd服务的管理

安装xinetd

[root@localhost ~]# yum -y install xinetd

xinetd服务的启动

#可以先查看rsync的端口号:grep rsync /etc/services

[root@localhost ~]# vi /etc/xinetd.d/rsync

service rsync(服务名称)

{

disable = yes

flags = IPv6(设定TCP/IP socket可重用)

socket_type = stream(使用TCP协议数据包)

wait = no(允许多个连接同时连接)

user = root(启动服务的用户为root)

server = /usr/bin/rsync(服务的启动程序)

server_args = --daemon

log_on_failure += USERID(登陆失败后,记录用户的ID)

}

把文件中的disable改成这个disable(不能)=no

注意重启的是xinetd服务:service xinetd restart

xinetd服务的自启动两种方法

a、[root@localhost ~]# chkconfig rsync on

b、ntsysv

注:xinetd的启动是混为一谈,启动与自启动是通用的。

3) 源码包服务管理

1、 源码包安装服务的启动

使用绝对路径,调用启动脚本来启动。不同的源码包的启动脚本不同。可以查看源码包的安装说明,查看启动脚本的方法。

2、 源码包服务的自启动

把服务的绝对路径加入/etc/rc.d/rc.local文件中,绝对路径可通过安装文档查看(INSTALL)

3、 让源码包服务被服务管理命令识别

让源码包的某服务(如apache服务)能被service命令管理启动即创建软链接:ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache

让源码包的某服务(如apache服务)能被chkconfig与ntsysv命令管理自启动

[root@localhost ~]# vi /etc/init.d/apache

加入以下两句话:

#chkconfig:35 86 76

(指定httpd脚本可以被chkconfig命令管理。格式是:

chkconfig:运行级别 启动顺序关闭顺序)

#description:source package apache

(文档说明相当于注释,必须要加)

说明:启动、关闭顺序号不能跟/etc/rc3.d/目录下现有的顺序重复

35 启动级别

86 启动顺序

76 关闭顺序

加入红色标记的两句话之后,还要执行下面的语句才生效:

[root@localhost ~]# chkconfig --add apache

chkconfig和ntsysv是通用的,chkconfig能管理,就能被ntsysv管理。

4) 服务管理总结

三、系统管理

1) 进程管理

1、 进程管理简介

定义:进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

作用:判断服务器健康状态;查看系统中所有进程;杀死进程

2、 进程的查看-ps命令和pstree命令

①ps aux #查看系统中所有进程,使用BSD操作系统格式

②ps -le #查看系统中所有进程,使用linux标准命令格式

选项

a:显示一个终端的所有进程,除了会话引线

u:显示进程的归属用户及内存的使用情况

x:显示没有控制终端的进程

-l:长格式显示。显示更加详细的信息

-e:显示所有进程,和-A作用一致

③查看进程信息:

USER:该进程是由哪个用户产生的;

PID:进程的ID号;

%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;

%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;

VSZ:虚拟内存的大小,单位KB;

RSS:实际物理内存的大小,单位KB;

TTY:该进程是在哪个终端中运行的。其中tty1~tty7代表本地控制台终端,

tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0 -255代表

虚拟终端。很多都是?表示很多进程都是系统进程

注:在linux中,/sbin/init是所有的进程的父进程,进程ID永远都是1。

STAT:进程状态。

常见的状态有:

R:运行

S:睡眠

T:停止状态

s:包含子进程

+:位于后台

START:该进程的启动时间

TIME:该进程占用CPU的运算时间,注意不是系统时间

COMMAND:产生此进程的命令名

④查看进程树

[root@localhost etc]# pstree [选项]

选项:

-p:显示进程PID

-u:显示进程的所属用户

3、 进程的查看-top命令

[root@localhost ~]# top [选项]

选项:

-d 秒数:指定top命令每隔几秒更新,默认是3秒

-b:使用批处理模式输出。一般和“-n”选项合用

-n次数:指定top命令执行的次数,一般和“-b”选项合用

使用top查看所有进程:

[root@localhost ~]# top -b -n 1 > /root/top.log

在top命令的交互模式中可以执行的命令:

?或者h :显示交互模式的帮助

P:以CPU使用率排序 默认就是此项

M:以内存的使用率排序

N:以PID排序

q:推出top

①第一行信息为任务队列信息

内容

说明

21:05:56

系统当前时间

up 1 day,13:32

系统的运行时间,本机已经运行1天13小时32分钟

2 users

当前登录了两个用户

Load average:0.00,0.00,0.00

系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1时,负载较小。如果大于1,系统已经超出负荷。(依核数来判定,默认1)

有计划的重启是服务器维护的基本原则。

②第二行为进程信息

内容

说明

Task:95 total

系统中的进程总数

1 running

正在运行的进程数

94 sleeping

睡眠的进程

0 stopped

正在停止的进程

0 zombie

僵尸进程。如果不是0,需要手工检查僵尸进程

③第三行

内容

说明

Cpu(s):0.1%us

用户模式占用的CPU百分比

0.1%sy

系统模式占用的CPU百分比

0.0%ni

改变过优先级的用户进程占用的CPU百分比

99.7%id

空闲CPU的CPU百分比(不能低于20%)

0.1%wa

等待输入/输出的进程的占用CPU百分比

0.0%hi

硬中断请求服务占用的CPU百分比

0.1%si

软中断请求服务占用的CPU百分比

0.0%st

st(steal time)虚拟时间百分比。就是当有时,虚拟CPU等待实际CPU的时间百分比。

④第四行

内容

说明

Mem:625344k total

物理内存的总量,单位kb

571504k used

已经使用的物理内存数量

53840k free

空闲的物理内存数量

65800k buffers

作为缓冲的内存数量(加速数据的写入)

⑤第五行

内容

说明

Swap: 524280k total

交换分区(虚拟内存)的总大小

0k used

已经使用的交互分区大小

524280k free

空闲交换分区的大小

409280k cached

作为缓存的交互分区的大小(加速数据的读取)

4、 杀死进程

kill命令

[root@localhost ~]# kill -l

#查看可用的进程信号

[root@localhost ~]# kill -1 进程号

#重启进程

[root@localhost ~]# kill -9 进程号

#强制杀死进程

信号代号

信号名称

说明

1

SIGHUP

该信号让进程立即关闭,然后重新读取配置文件之后重启(平滑重启)

2

SIGINT

程序终止信号,用于终止前台进程。相当于输出ctrl+c快捷键。

8

SIGFPE

在发生致命的算术运算错误时发出,不仅包括浮点运算错误,还包括溢出及除数为0等其它所有的算术的错误。

9

SIGKILL

用来立即结束程序的运行,本信号不能被阻塞、处理和忽略。一般用于强制终止进程。

14

SIGALRM

时钟定时信号,计算的是实际时间或时钟时间,alarm函数使用该信号。

15

SIGTERM

正常结束进程的信号,kill命令的默认信号。有时如果进程已经发生问题,这个信号是无法正常终止进程的,我们才会尝试SIGKILL信号,也就是信号9。

18

SIGCONT

该信号可以让暂停的进程恢复执行,本信号不能被阻断。

19

SIGSTOP

该信号可以暂停前台进程,相当于输入ctrl+z快捷键。本信号不能被阻断。

killall命令

killall [选项][信号] 进程名

#按照进程名杀死进程

选项:

-i:交互式,询问是否要杀死某个进程

-I:忽略进程名的大小写(此处是大写的i)

pkill命令

pkill [选项][信号] 进程名

#按照进程名终止进程

选项:

-t 终端号:按照终端号踢出用户

按照终端号踢出用户

w

#使用w命令查询本机已经登录的用户

pkill -9 -t pts/1

#强制杀死从pts/1虚拟终端登录的进程

5、 修改进程优先级

简介

Linux操作系统是一个多用户、多任务的操作系统,Linux系统中通常运行着非常多的进程。但是CPU在同一个时钟周期内只能运算一个指令。进程优先级决定了每个进程处理的先后顺序

PRI代表Priority,NI代表Nice。这两个值都是优先级,数字越小代表该进程优先级越高。最终生效的是PRI,但是不管是超级用户还是普通用户都不能直接修改PRI这个优先级进程,只能修改NI这个优先级进程,系统最终生效的是PRI+NI的值。

修改NI值时有几个注意事项

  • NI值得范围是-20到19;
  • 普通用户调整NI值得范围是0到19,而且只能调整自己的进程;
  • 普通用户只能调高NI值,而不能降低,如原本NI值为0,则只能调整为大于0;
  • root用户才能设定进程的NI值为负值,而且可以调整任何用户的进程。
  • PRI(最终值)=PRI(原始值)+NI
  • 用户只能修改NI的值,不能直接修改PRI

nice命令

nice [选项] 命令

#nice命令可以给新执行的命令直接赋予NI值,但是不能修改已经存在进程的NI值

选项:

-n NI值:给命令赋予NI值。

例如:nice -n -5 service httpd start

renice命令

renice [优先级] PID

#renice命令是修改已经存在进程的NI值得命令

例如:renice -10 2125

2) 工作管理

工作管理简介

工作管理:指的是在单个登录终端中(shell界面)同时管理多个工作行为。

[root@localhost ~]# jobs(查看在后台运行的程序)

Linux后台运行:命令后面加上“ &”

注意事项:

  • 当前的登录终端,只能管理当前终端的工作,而不能管理其他登录终端的工作
  • 放入后台的命令必须可以持续运行一段时间,这样我们才能捕捉和操作这个工作
  • 放入后台执行的命令不能和前台用户有交互或需要前台输入,否则放入后台只能暂停,而不能执行

工作管理方法

  • 把进程放入后台

tar -zcf etc.tar.gz /etc &

#把命令放入后台,并在后台执行

top

#按下ctrl+z快捷键,放在后台暂停

  • 查看后台的工作

jobs [-l]

选项:

-l:显示工作的PID

注:“+”号代表最近一个放入后台的工作,也是工作恢复时,默认恢复的工作。“-”号代表倒数第二个放入后台的工作

  • 将后台暂停的工作恢复到前台执行

[root@localhost ~]# fg %工作号

参数:

%工作号:%号可以省略,但是注意工作号(第一列显示的[1]、[2]、[3]等这样的数字)和PID的区别

例如:[root@localhost ~]# fg %1

  • 把后台暂停的工作恢复到后台执行

[root@localhost ~]# bg %工作号

注:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行

后台命令脱离登录终端执行

  • 简介:把命令放入后台,只能在当前登录终端执行。一旦退出或关闭终端,后台程序就会停止
  • 后台命令脱离登录终端执行的方法:

方法1.把需要后台执行的命令加入/etc/rc.local文件

方法2.使用系统定时任务,让系统在指定的时间执行某个后台命令

方法3.使用nohup命令(推荐使用)

  • nohup命令

nohup [命令] &

3) 系统资源查看

vmstat命令监控系统资源

vmstat [刷新延时][刷新次数]

例如:vmstat 1 3

procs:进程信息字段

-r:等待运行的进程数,数量越大,系统越繁忙

-b:不可被唤醒的进程数量,数量越大,系统越繁忙。

memory:内存信息字段

-swpd:虚拟内存的使用情况,单位kb

-free:空闲的内存容量,单位为KB

-buff:缓冲的内存容量,单位为KB

-cache:缓存的内存容量,单位为KB

swap:交换分区的信息字段

-si:从磁盘中交换到内存中数据的数量,单位KB

-so:从内存中交换到磁盘中数据的数量,单位KB。此两个数越大,证明

数据需要经常在磁盘和内存之间交换,系统性能越差。

io:磁盘读写信息字段

-bi:从块设备读入数据的总量,单位是块。

-bo:写到块设备的数据的总量,单位是块,此两个值越大,代表系统的

I/O越繁忙。

system:系统信息字段

-in:每秒被中断进程的次数

-cs:每秒进行的事件切换次数。此两个数越大,代表系统与接口设备的

通信非常繁忙

CPU:CPU信息字段

-us:非内核进程消耗CPU运算时间的百分比

-sy:内核进程消耗CPU运算时间的百分比

-id:空闲CPU的百分比,值越小代表系统越繁忙

-wa:等待I/O所消耗的CPU百分比

-st:被虚拟机所盗用的CPU占比

缓存和缓冲的区别

简单来说缓存(cache)是用来加速数据从硬盘中“读取”的,而缓冲(buffer)是用来加速数据“写入”硬盘的。

dmesg开机时内核检测信息(判断当前服务器的硬件状态)

[root@localhost ~]# dmesg

例如:[root@localhost ~]# dmesg | grep CPU

free命令查看内存使用状态

[root@localhost ~]# free [-b|-k|-m|-g]

选项:

-b:以字节为单位显示

-k:以KB为单位显示,默认此单位

-m:以MB为单位显示

-g:以GB为单位显示

第一行:total是总内存数,used是已经使用的内存数,free是空闲的内存数,

shared是多个进程共享的内存总数,buffers是缓冲内存数,cached

是缓存内存数。默认单位是KB。

第二行:-/buffers/cache的内存数,相当于第一行的used-buffers-cached

+/buffers/cache的内存数,相当于第一行的free+buffers+cached

第三行:total是swap的总数;used是已经使用的swap数,free是空闲的

swap数,默认单位KB。

查看CPU信息

[root@localhost ~]# cat /proc/cpuinfo

uptime命令

[root@localhost ~]# uptime

显示系统的启动时间和平均负载,也就是top命令的第一行。w命令也可以看这个数据。

查看系统与内核相关信息

uname [选项]

选项:

-a 查看系统所有相关信息

-r 查看内核版本

-s 查看内核名称

判断当前系统的位数

[root@localhost ~]# file /bin/ls

查询当前linux系统的发行版本

[root@localhost ~]# lsb_release -a

列出进程打开或使用的文件信息

lsof [选项]

选项:

-c 字符串:只列出以字符串开头的进程打开的文件

-u 用户名:只列出某个用户的进程打开的文件

-p pid:列出某个PID进程打开的文件

例如:

lsof | more

#查询系统中所有进程调用的文件

lsof /sbin/init

#查询某个文件被哪个进程调用(必须是系统文件)

lsof –c httpd

#查看httpd进程调用了哪些文件

lsof –u root

#按照用户名,查询某用户的进程调用的文件名

4) 系统定时任务

1、 at一次性定时任务

确定at安装

[root@localhost ~]# chkconfig --list | grep atd

#at服务是否安装

[root@localhost ~]# service atd restart

#at服务的启动

at的访问控制

  • 如果系统中有/etc/at.allow文件,那么只有写入/etc/at.allow文件(白名单)中的用户可以使用at命令(/etc/at.deny文件会被忽略)
  • 如果系统中没有/etc/at.allow文件,只有/etc/at.deny文件,那么写入/etc/at.deny文件(黑名单)中的用户不能使用at命令。对root不起作用。
  • 如果系统中这两个文件都不存在,那么只有root用户可以使用at命令。

at命令

at [选项] 时间

选项:

-m:当at工作完成后,无论是否命令有输出,都用email通知执行at

命令的用户

-c 工作号:显示该at工作的实际内容

时间:

HH:MM 例如:02:30

HH:MM YYYY-MM-DD 例如:02:30 2013-07-25

HH:MM[am|pm] [month][date] 例如:02:30 July 25

HH:MM[am|pm] + [minutes|hours|days|weeks]

例如:now+5 minutes

举例:

at now + 2 minutes #在两分钟后执行脚本。

#写完回车,出现下面的at提示符,提示你输入要执行的脚本和重定向

路径

at> /root/helo.sh >> /root/helo.log

其他at管理命令

atq #查询当前服务器上的at工作

atrm[工作号] #删除指定的at任务

2、 crontab循环定时任务

crond服务管理与访问控制

[root@localhost ~]# service crond restart

[root@localhost ~]# chkconfig crond on #开启crond服务

访问控制

当系统中有/etc/cron.allow文件时,只有写入此文件的用户可以使用crontab命令,没有写入的用户不能使用crontab命令。同样如果有此文件,/etc/cron.deny文件会被忽略,/etc/cron.allow文件的优先级更高。

当系统中只有/etc/cron.deny文件时,则写入此文件的用户不能使用crontab命令,没有写入文件的用户可以使用crontab命令

用户的crontab设置

[root@localhost ~]# crontab [选项]

选项:

-e:编辑crontab定时任务

-l:查询crontab任务

-r:删除当前用户所有的crontab任务

举例:

[root@localhost ~]# crontab -e

#进入crontab编辑界面。

* * * * * 执行的任务

项目

含义

范围

第一个“*”

一个小时当中的第几分钟

0-59

第二个“*”

一天当中的第几小时

0-23

第三个“*”

一个月当中的第几天

1-31

第四个“*”

一年当中的第几月

1-12

第五个“*”

一周当中的星期几

0-7(0和7都代表星期日)

特殊符号

含义

*

代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。

代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令

-

代表连续的时间范围。比如“0 5 * * 1-6 命令”,代表在周一到周六的凌晨5点0分执行命令

*/n

代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令

时间

含义

45 22 * * * 命令

在22点45分执行命令

0 17 * * 1 命令

每周1的17点0分执行命令

0 5 1,15 * * 命令

每月1号和15号的凌晨5点0分执行命令

40 4 * * 1-5 命令

每周一到周五的凌晨4点40分执行命令

*/10 4 * * * 命令

每天的凌晨4点,每隔10分钟执行一次命令

0 0 1,15 * 1 命令

每月1号和15号,每周1的0点0分都会执行。注意:星期几和几号最好不要同时出现,因为它们定义的都是天。非常容易让管理员混乱

常用命令

[root@localhost ~]# crontab -l

#查看root用户的crontab任务

[root@localhost ~]# crontab -r

#删除root用户所有的定时任务

crontab注意事项

  • 六个选项不能为空,必须填写。不确定用“*”代表任意时间;
  • crontab定时任务最小有效时间为分钟,最大时间范围是月;
  • 日期和星期最好不要同时出现,因为它们都是以天作为单位;
  • 在定时任务中,不管是直接写命令还是在脚本中写命令,最好都写绝对路径。

3、 系统的crontab设置

系统的定时任务

“crontab -e”是每个用户执行的命令,也就是说不同的用户身份可以执行自己的定时任务(不能执行超出自己权限的任务)。可是有些定时任务(如只有root用户权限才能执行的:关机、添加用户等)需要系统执行,这时我们就需要编辑/etc/crontab这个配置文件。

CentOS 5中的配置文件

[root@localhost ~]# vi /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# run-parts

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.mouthly

其中run-parts是一个命令或者程序,是遍历目标文件夹,执行第一层目录下的可执行权限的文件。

执行系统的定时任务的方法

  • 手工执行定时任务
  • 系统定时任务

第一种是把需要定时执行的脚本复制到

/etc/cron.{hourly,daily,weekly,mouthly}目录中的任意一个

第二种是修改/etc/crontab配置文件

4、 anacron配置

定义

anacron是用来保证在系统关机的时候错过的定时任务,可以在系统开机之后再执行。

anacron检测周期

  • anacron会使用一天,七天,一个月作为检测周期;
  • 在系统的/var/spool/anacron/目录中存在

cron.{daily,weekly,monthly}文件,用于记录上次执行cron的时间;

  • 和当前时间做比较,如果两个时间的差值超过了anacron的指定时间差值,证明有cron任务被漏执行;

CentOS 6.x的区别

  • 在老的CentOS版本中,/etc/cron.{daily,weekly,monthly}这些目录即会被cron调用,也会被anacron调用,容易重复执行;
  • 在CentOS 6.x中则只会被anacron调用,避免了重复执行;
  • 在CentOS 6.x中,anacron不再是服务,而是系统命令

Anacron配置文件

[root@VM_68_42_centos ~]# cat /etc/anacrontab

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# the maximal random delay added to the base delay of the jobs

RANDOM_DELAY=45(最大随机延迟,单位:分钟)

# the jobs will be started during the following hours only

START_HOURS_RANGE=3-22

(anacron的执行时间范围是3:00-22:00)

#period in days delay in minutes job-identifier command

1 5 cron.daily nice run-parts /etc/cron.daily

7 25 cron.weekly nice run-parts /etc/cron.weekly

@monthly 45 cron.monthly nice run-parts /etc/cron.monthly

(天数 强制延迟(分) 工作名称 实际执行的命令)

cron.daily工作来说明执行过程

  • 首先读取/var/spool/anacron/cron.daily中的上一次anacron执行的时间;

和当前时间比较,如果两个时间的差值超过1天,就执行cron.daily工作;

  • 执行这个工作只能在03:00-22:00之间;
  • 执行工作时强制延迟时间为5分钟,再随机延迟0-45分钟时间;
  • 使用nice命令指定默认优先级,使用run-parts脚本执行

/etc/cron.daily目录中的所有可执行文件

优质内容筛选与推荐>>
1、Connected Graph
2、POJ 1789 权值为字符串差值的最小生成树
3、加密之DESCryptoServiceProvider加密解密
4、sublime package control 被墙的解决方法
5、Codeforces Round #258 (Div. 2/B)/Codeforces451B_Sort the Array


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号