工作管理


1、工作管理简介

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

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

注意事项:

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

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

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

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

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

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


2、工作管理方法

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

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


2> 查看后台工作

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


wKiom1ifHhah70GbAAAGwm_Ela0183.png 

注&#xff1a; “&#43;”表示最近一个放入后台的工作&#xff0c;也是工作恢复时默认恢复的工作&#xff0c;“-”表示倒数第二个放入后台的工作


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

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


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

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


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

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


后台命令脱离登录终端执行的方法&#xff1a;

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

wKioL1ifH7XQFvQNAAAPOqisoUU675.png

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

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

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

使用系统定时任务&#xff0c;可能会导致不生效&#xff01;&#xff01;&#xff01;

 

3> 使用nohup命令

命令格式&#xff1a;

nohup [命令] &

在 /root 目录下创建文件 for.sh&#xff0c;内容如下&#xff1a;

wKiom1ifIEeQjeryAAAHQlQ2uUk703.png

wKioL1ifIEiBca-AAAALpS515cw075.png


nohup运行该文件

切换终端&#xff0c;然后可以通过  ps aux | grep for.sh 查看


 wKiom1ifIEjRE3eaAAAK5-GumNY517.png







    系统资源管理

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

vmstat [刷新延时 刷新次数]

wKioL1ifIxSiBKNGAAAcepzNXbA217.png

 procs&#xff1a;进程信息字段

r&#xff1a;等待运行的进程数&#xff0c;数量越大&#xff0c;系统越繁忙

b&#xff1a;不可被唤醒的进程数&#xff0c;数量越大&#xff0c;系统越繁忙

 memory&#xff1a;内存信息字段

-swpd&#xff1a;虚拟内存的使用情况&#xff0c;单位KB

-free&#xff1a;空闲的内存容量&#xff0c;单位KB

-buff&#xff1a;缓冲的内存容量&#xff0c;单位KB

-cache&#xff1a;缓存的内存容量&#xff0c;单位KB

缓存和缓冲的区别&#xff1a;

    缓存&#xff08;cache&#xff09;是用来加速数据从硬盘中”读取”的&#xff0c;而缓冲&#xff08;buffer&#xff09;是用来加速数据”写入”硬盘的。

 swap&#xff1a;交换分区的信息字段

-si&#xff1a;从磁盘中交换到内存中数据的数量&#xff0c;单位KB

-so&#xff1a;从内存中交换到磁盘中数据的数量&#xff0c;单位KB&#xff0c;

两个数越大&#xff0c;证明数据需要经常在磁盘和内存之间交换&#xff0c;系统性能越差

 io&#xff1a;磁盘读写信息字段

-bi&#xff1a;从块设备读入数据的总量&#xff0c;单位是块

-bo&#xff1a;写到块设备的数据的总量&#xff0c;单位是块。

两个数越大&#xff0c;代表系统的I/O越繁忙

 system&#xff1a;系统信息字段&#xff1a;

-in&#xff1a;每秒被中断的进程次数

-cs&#xff1a;每秒钟进行的事件切换次数。

两个数越大&#xff0c;代表系统与接口设备的通信飞航繁忙

 cpu&#xff1a;CPU信息字段

-us&#xff1a;非内核进程消耗CPU运算时间的百分比

-sy&#xff1a;内核进程消耗CPU运算时间的百分比

-id&#xff1a;空间CPU的百分比

-wa&#xff1a;等待I/O所消耗的CPU百分比

-st&#xff1a;被虚拟机所盗用的CPU占比

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

dmesg | grep CPU

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

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

wKiom1ifI1-CYCZTAAA8zjT0C1s144.png 

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

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

选项&#xff1a;以 字节 | Kb | MB | GB 为单位显示&#xff0c;默认为Kb

wKioL1ifI23Q5PooAAAP2iELvdY795.png 

- buffers/cache&#xff1a;相当于第一行used - buffers - cached

&#43; buffers/cache&#xff1a;相当于第一行free &#43; buffers &#43; cached

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

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

※4、查看CPU信息

cat /proc/cpuinfo


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

wKiom1ifI3iTxq_dAABTOk98Rzo405.png 

 

※5、uptime命令

uptime


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

wKioL1ifI4mCw3KFAAAl-HR1okI631.png 

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

 

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

uname [选项]

选项&#xff1a; -a&#xff1a;查看系统所有相关信息

-r&#xff1a;查看内核版本

-s&#xff1a;查看内核名称

wKiom1ifI5jg4_5MAAATWmdkfWs986.png 

 

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

file /bin/ls

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

wKioL1ifI6KR4BRoAAAhWmSvPYs751.png 

 

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

lsb_release -a

wKiom1ifI6yxmt3-AAAkGS_VJfE382.png 

 

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

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

选项&#xff1a;

         -c 字符串&#xff1a;只列出字符串开头的进程打开的文件

-u 用户名&#xff1a;只列出某个用户的进程打开的文件

-p pid&#xff1a;列出某个PID进程打开的文件

 

wKioL1ifI7eiZcrDAAAqd4mRAkI224.png 

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

 

 




    系统定时任务

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

at一次性定时任务

 

 1> 确定at安装

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

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


wKiom1ifJ5GwZ24gAAAO8HvK14s194.png 

 2> at的访问控制

l 如果系统中有 /etc/at.allow&#xff08;白名单&#xff09;文件&#xff0c;那么只有写入/etc/at.allow 文件中的用户可以使用at 命令&#xff08;/etc/at.deny文件会被忽略&#xff09;

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

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

wKiom1ifJ52zTkCmAAAGaxr7yIw034.png

 

 3> at命令的使用

at [选项] 时间

选项&#xff1a;

-m&#xff1a;当at工作完成后&#xff0c;无论是否命令有输出&#xff0c;都用email 通知执行at命令的用户

-c 工作号&#xff1a;显示该at工作的实际内容

时间&#xff1a;

- HH:MM例如&#xff1a;02&#xff1a;30

- HH:MM YYYY-MM-DD例如&#xff1a;02&#xff1a;30 2013-07-25

- HH:MM [am|pm] [month] [date]例如&#xff1a;02&#xff1a;30 July 25

- HH:MM [am|pm] &#43; [minutes|hours|days|weeks]例如&#xff1a;now &#43; 5minutes


其他at管理命令

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


at定时任务执行完毕之后&#xff0c;atq就不会再查询到at任务

 

wKioL1ifJ52QBaNHAABVfiS7qLA250.png

crontab定时任务

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

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




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