工作管理


1、工作管理简介

Linux中的工作管理指的是在单个登录的终端中,同时管理多个工作的行为。在Linux工作管理中,其实就是将当前的工作放到后台执行。查询当前系统中的后台程序使用的命令是jobs

Linux,当某些服务启动之后,如果不放入后台,他会一直占用当前的shell,例如MYSQL。如果想要执行其他操作的话,需要将mysql服务终止掉。如果不想将该服务终止,就需要将该服务放入后台。

注意事项:

a> 当前的登录终端,只能管理当前终端的工作,而不能管理其他登录终端的工作。

也就是说,放入后天的服务是需要绑定终端的。Mysql服务发现了这个问题,当调用mysql服务的启动脚本时,它会将MySQL设置为可以脱离当前终端操作的服务,当MySQL服务在当前终端上放入后台时,关闭当前终端,mysql服务不会终止,但其他服务如果关闭的当前终端,服务也会跟着结束。

b> 放入后台的命令必须可以持续运行一段时间,这样我们才能捕捉和操作这个工作

例如:将ls、cd等命令房后后台是没有意义的,回车之后就会结束

c> 放入后台执行的命令不能和当前用户有交互或需要前台输入,否则放入后台只能暂停,而不能执行

例如:将vim命令放入后台,只能暂停,不肯能继续执行。因为vim命令是需要和用户进行交互的。


2、工作管理方法

1> 把命令放入后台<以top命令为例>

在执行的命令后加" & ”           # 把命令放入后台,并在后台执行
top                  # 按下ctrl+z快捷键,放在后台暂停


2> 查看后台工作

jobs [-l]                            # -l  显示工作的PID


wKiom1ifHhah70GbAAAGwm_Ela0183.png 

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


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

fg %工作号                # %可以省略,但是注意工作号和PID的区别


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

bg %工作号                # 后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行


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

一般情况下,一旦把命令放入后台,只能在当前登录终端执行。一旦退出或关闭终端,后台程序就会停止。


后台命令脱离登录终端执行的方法:

1> 把需要后台执行想命令加入到/etc/rc.local 文件

Linux进程资源管理第二篇 -------- 工作及资源管理_第1张图片

开机默认创建文件 /var/lock/subsys/local,目的是为了查看系统开机时间。

如果想要后台运行的一个程序持续运行,可以把这个进程完全写到该文件中,那么该进程就可以持续运行。因为它是系统直接调用的,没有绑定到终端。

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

使用系统定时任务,可能会导致不生效!!!

 

3> 使用nohup命令

命令格式:

nohup [命令] &

在 /root 目录下创建文件 for.sh,内容如下:

Linux进程资源管理第二篇 -------- 工作及资源管理_第2张图片

Linux进程资源管理第二篇 -------- 工作及资源管理_第3张图片


nohup运行该文件

切换终端,然后可以通过  ps aux | grep for.sh 查看


 wKiom1ifIEjRE3eaAAAK5-GumNY517.png







    系统资源管理

※1、vmstat命令监控系统资源

vmstat [刷新延时 刷新次数]

Linux进程资源管理第二篇 -------- 工作及资源管理_第4张图片

 procs:进程信息字段

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

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

 memory:内存信息字段

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

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

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

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

缓存和缓冲的区别:

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

 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占比

※2、dmesg开机时内核检测信息

dmesg | grep CPU

显示系统的内核自检信息,对Linux来将,计算机需要自检两遍,一是硬件的BIOS自检,二是内核自检

dmesg命令是用来判断当前服务器的硬件状态。

Linux进程资源管理第二篇 -------- 工作及资源管理_第5张图片 

※3、free命令查看内存使用状态

free [-b | -k | -m | -g]

选项:以 字节 | Kb | MB | GB 为单位显示,默认为Kb

Linux进程资源管理第二篇 -------- 工作及资源管理_第6张图片 

- buffers/cache:相当于第一行used - buffers - cached

+ buffers/cache:相当于第一行free + buffers + cached

虽然看起来buffer和cached 占用了一部分内存,但实际上是作为缓冲和缓存存在,没有被系统的程序直接占用,是为了提高系统读写效率存在的

最后一行表示Swap的使用状况,swap是提高计算机性能尤其是高耗费内存性能的重要手段,因此不可以随意减少Swap分区的容量。当真实机内存小于4G,swap应该是内存的两倍,如果真实机的内存大于4G,swap最少要和内存一样。

※4、查看CPU信息

cat /proc/cpuinfo


proc是用来保存内存信息的目录

Linux进程资源管理第二篇 -------- 工作及资源管理_第7张图片 

 

※5、uptime命令

uptime


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

Linux进程资源管理第二篇 -------- 工作及资源管理_第8张图片 

uptime命令可以查看到系统当前时间,开机到现在的时间,登录用户数目,平均负载。和top命令第一行信息一致,但top命令本身就会造成一定的负载,如果只是简单想查看系统启动时间和平均负载,可以用uptime命令。

 

※6、查看系统与内核相关信息

uname [选项]

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

-r:查看内核版本

-s查看内核名称

Linux进程资源管理第二篇 -------- 工作及资源管理_第9张图片 

 

※7、查看当前Linux系统的操作位数

file /bin/ls

file之后可以追加任何一个系统外部命令,可以查看到当前操作系统的位数。需要注意的是,这里的位数与CPU的位数不一定相同,64的的电脑上也可以安装32位的操作系统

Linux进程资源管理第二篇 -------- 工作及资源管理_第10张图片 

 

※8、查询当前Linux的发行版本

lsb_release -a

Linux进程资源管理第二篇 -------- 工作及资源管理_第11张图片 

 

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

lsof [选项]# 列出进程调用或打开的文件的信息

选项:

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

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

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

 

Linux进程资源管理第二篇 -------- 工作及资源管理_第12张图片 

根据文件名查进程,文件只能是系统文件,不能是用户自己创建的文件,只有系统文件才有系统进程

 

 




    系统定时任务

Windows中的系统定时任务:开始-- >所有程序-- >附件-- > 系统工具-- >定时计划程序

at一次性定时任务

 

 1> 确定at安装

chkconfig --list | grep atd            #  at服务是否安装
service atd restart                    #  at服务重新启动

在服务名后加 d ,表明这是一个守护进程


Linux进程资源管理第二篇 -------- 工作及资源管理_第13张图片 

 2> at的访问控制

l 如果系统中有 /etc/at.allow(白名单)文件,那么只有写入/etc/at.allow 文件中的用户可以使用at 命令(/etc/at.deny文件会被忽略)

如果系统中没有 /etc/at.allow (黑名单)文件,只有 /etc/at.deny 文件,那么写入 /etc/at.deny 文件中的用户不能使用at命令,但对root 用户不起作用

如果系统中这两个文件都不存在,那么只有root用户可以使用at命令。默认情况下只有黑名单

wKiom1ifJ52zTkCmAAAGaxr7yIw034.png

 

 3> 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 + 5minutes


其他at管理命令

atq                # 查询当前服务器上的at工作
atrm [工作号]                 # 删除指定的at任务


at定时任务执行完毕之后,atq就不会再查询到at任务

 

Linux进程资源管理第二篇 -------- 工作及资源管理_第14张图片

crontab定时任务

关于crontab定时任务,要介绍的细节比较多,这里作为一个单独的文章来写,链接如下:

http://muhuizz.blog.51cto.com/11321490/1868839




---------muhuizz整理