Linux运维之进程管理

一、操作系统与用户接口

操作系统由三部分组成:内核(用来管理硬件资源),应用程序(用来管理软件资源),库。

用户接口(其实就是应用程序)分为两类:GUI接口(图形桌面接口),CLI接口(命令行用户接口)
对于GUI:针对linux系统有三种(Gnome,KDE,Xface);针对windows系统(explore.exe)
对于CLI:针对linux系统有六种(sh,bash,cash,ksh,zsh,tcsh);针对windows系统(cnd应用程序)

df命令用来查看磁盘空间(看到的/dev/sda1---虚拟机,/dev/vda2---真机。这些都是安装系统时分的区)


二、查看进程
1.图形化方式查看
方法1.Applications---System Tools---System Monitor进行查看
方法2.命令行方式:gnome-system-monitor

2.命令行查看进程

命令 ps ps ps ps ps ps ps ps
参数   -A  -a  -u   a x f
含义    查看所有进程   查看在当前环境中(现行终端机)运行的进程,不包含环境信息 显示进程用户信息  查看在当前环境中(现行终端机)运行的进程,包含环境信息 列出系统中所有运行包含tty设备(字符设备)的进程 显示父子进程关系 显示进程的详细信息(系统的资源调用)


3.一个虚拟机的某个终端的东西在另一个终端上面显示?
示例:在1号终端上输入date命令,然后输入date > dev/pts/2(将1号终端上的date命令的结果显示到2号终端上面,其中/dev/pts/2是通过ps命令查看的---查看的是该bash所对应的字符设备(TTY)) 

三、ps命令的常用组合

ps aux  ps ef   ps ax 
显示系统中所有进程并显示进程用户 显示进程详细信息并显示进程父子关系 显示系统中的所有进程


注意:通过pstree命令可以查看进程开启的目录数(可以看到所有进程的初始化进程是systemd)

扫描二维码关注公众号,回复: 3941479 查看本文章

四、显示进程的指定信息

ps ax -o    xxx ps ax -o    comm ps ax -o user  ps ax -o    group ps ax -o    %cpu  ps ax -o    %mem   ps ax -o    pid ps ax -o    nice
显示进程的指定信息 显示进程名称 显示进程用户 显示进程所属组 显示进程cpu使用率 显示进程内存使用率 显示进程id 显示进程优先级

五、进程排序

ps ax --sort=+%cpu/-%cpu    按照cpu的使用率进行排序(+表示从小到大排序,-表示从大到小排序)


ps ax --sort=+%mem/-%mem    按照内存的使用率进行排序(+表示从小到大排序,-表示从大到小排序)

示例:显示系统中cpu占用率前5的进程:
方法1:ps ax --sort=-%cpu -o %cpu | head -n 6 | tail -n 5;


方法2:ps ax --sort=-%cpu -o %cpu | head -n 6 | grep -v %CPU

示例:显示系统中内存使用率前5的进程:
方法1:ps ax --sort=-%mem -o %mem,pid,comm | head -n 6 | grep -v %MEM


方法2:ps ax --sort=-%mem -o %mem,pid,comm | head -n 6 | grep -v PID


方法3:ps ax --sort=-%mem -o %mem,pid,comm | head -n 6 | grep -v COMMAND


方法4:ps ax --sort=-%mem -o %mem,pid,comm | grep -v %MEM | head -n 5


注意:grep -v 后面是要区分大小写的;
grep的用法:grep 关键字,抓取出来的是一行一行的信息
其中grep表示抓取的意思,例如,cat /etc/passwd | grep root表示显示/etc/passwd文件中的含有root关键字的信息
那么-v表示反向抓取,即不含有关键字的信息

六、stat中显示的信息

S l   + s
进程的状态(S表示休眠状态,即在等待某个事件,信号。常见的进程状态有6种,D表示不可中断的休眠;R表示正在运行或者在运行队列中等待;S表示休眠,即在等待某个事件,信号;T表示停止;X表示杀掉的进程,不应该出现;Z表示僵死进程) 内存中有锁定空间 优先级低 优先级高 前台运行 顶级进程


1.gedit &            表示gedit这个记事本在后台运行(状态会显示Sl--表示内存中有锁定空间)

将gedit关掉


2.gedit               表示gedit这个记事本在前台运行

将其强制关闭之后,显示被杀死

gedit进程直接被杀死(使用ctrl+c)


3.只要输入过命令gedit &,并且不关闭,那么下次输入命令gedit,也默认的是后台运行。
4.输入命令gedit相当于是前台运行。如果接下来使用ctrl+c会新开一行命令行,那么相当于强制关闭了这个进程;但是如果使用ctrl+z也会新开一行命令行,但是没有杀死这个进程。通过ps ax 查看会发现此进程变成了僵死进程(该gedit记事本所有的键都不能使用了)

七、进程优先级
1.进程优先级的范围:-20~19,数字越小表示优先级越高,数字越大表示优先级越小
2.优先级的查看:ps ax -o pid,nice,comm

3.指定某个优先级开启进程:nice -n 优先级数字 进程名称
示例:nice -n -5 vim &     开启vim并指定成优先级为-5


4.改变进程优先级:renice -n 优先级数字 进程pid
示例:renice -n 5 1234     改变进程号为1234的进程的优先级为-5


ps ax -o comm,pid,nice,stat     用来查看指定的信息,输入该命令之后,会发现该进程的优先级已经发生了变化。

八、环境中进程的前后台调用

1.前后台调用命令:

(1)jobs            查看被打入环境后台的进程


(2)ctrl+z            把占用终端的进程打入后台


(3)bg  jobnum        把后台暂停的进程运行


(4)fg  jobnum        把后台进程调回前台


(5)comm &            让命令直接在后台运行
2.vim只能使用fg命令,不可以使用bg命令,因为vim命令只能在前台运行。
3.gedit既可以在前台运行也可以在后台运行。使用gedit,在前台运行,按下ctrl+z,将其打入后台,会显示已经停止,通过ps ax命令查看时显示的状态是僵死状态;使用gedit,在前台运行,按下ctrl+c,直接将该进程杀死,什么都不显示,通过ps ax命令查看时,没有该进程。使用gedit &,在后台运行。
4.当fg和bg后面都不跟相应的jobnum时,会默认显示数字后面带+,其次是后面带-。当有多个时,执行完+,之后用过jobs命令查看,+,-号的位置会发生变化,但是数字不会发生变化。


5.jobs命令查看到的状态有四种(running---正在后台运行的,stopped---被中断的,Done---在后台运行结束的,killed---强制通过手点"x"的方式杀死的,而不是通过ctrl+c)

九、进程信号
1.信号等级

1 2   15 18 19 20  
进程重新加载配置 删除进程在内存中的数据 删除鼠标在内存中的数据  强行结束单个进程(不可被阻塞) 正常关闭进程(可能会被阻塞) 运行暂停的进程  暂停某个进程(不可被阻塞) 把进程打入后台(可能会被阻塞)

针对2:

示例:在一个终端上输入ps命令查看该bash的pid,然后输入abcdef但是不运行,在另外一个终端上输入kill -2 pid  会发现那个终端上相当于自动加了ctrl+c,即新开了一行

针对3:

示例:ctrl+\之后,鼠标不显示了,需要再手动一下鼠标才能显示出来

针对9:

示例:kill - 9 bash的pid      会成功(即强行结束了bash这个进程)

针对15:

示例:在一个终端上输入gedit &,然后输入ps命令查看gedit &的pid,在另外一个终端上输入kill -15 pid     显示关闭了那个终端上的gedit(没有被阻塞)
但是,在一个终端上输入ps命令查看该bash的pid,在另外一个终端上输入kill -15 pid   发现没有什么作用(被阻塞了)
但是kill -15  gedit &的pid         成功(即正常结束了gedit &这个进程)

针对18:

示例:在另外一台终端上通过ps a命令查看那个终端的pid,然后kill -18 pid    发现那个终端上又可以输入命令了,同时会显示刚刚暂停之后输入的命令

针对19:

示例:在另外一个终端上通过ps a命令查看那个终端的pid,然后kill -19 pid    发现那个终端上输入命令之后不显示了,即暂停了;
在一个终端上输入vim进行编辑,然后在另外一个终端上通过ps a命令查看那个终端上vim的pid,输入命令kill -19 pid       发现那个终端上的vim退出来了。


2.所用命令
(1)kill -信号等级  进程id        结束指定的进程


(2)killall    -信号等级  进程名        结束所有进程名的进程


(3)pkill -u student(用户) -信号等级    结束某个用户的进程  

  十、进程的动态监控

使用top命令

1 s  c m  h  u   k  q
显示cpu每个核的负载(切换看的是cpu的变化) 调整刷新频率 CPU负载排序 内存使用量排序 查看帮助 查看指定用户进程 对指定进程发起信号 退出

十一、IP地址的修改

1.图形化方式修改

(1)nm-connection-editor;

(2)删除System eth0;

(3)点击add;

(4)选择Ethernet;

(5)输入Connection name(一般为eth0);

(6)选择Device Mac address;

(7)进入IPv4 Settings,将method由DHCP改为Manual;

(8)点击Add,输入Address和Netmask(子网掩码24,或者写成225.225.225.0)Gateway(网关)不用输入。

(9)点击save即可
子网掩码的介绍:
例如:110.0.0.1/16表示:其实IP为110.0.0.1,子网掩码为16(代表掩盖掉16位,即前16位不能变),那么结束IP为110.0.225.225。一个IP为4的IP地址要用4个字节来存放(一个字节8位),那么整个IP要用32位来存放。一个IP为4的IP地址最大为255.255.255.255
例如:192.168.1.1/24    起始IP地址为:192.168.1.1    结束IP地址为192.168.255.255

十二、IP地址的查看
1.ifconfig                          查看当前系统的IP地址
2.ifconfig eth0                 查看网卡eth0的IP地址
3.ifconfig br0                   查看网卡br0的IP地址
4.ip addr show br0         查看网卡br0的详细IP地址(一个网卡可以有多个ip地址)

十三、主机名的修改

1.hostname        查看主机名


2.hostnamectl set-hostname  修改之后的主机名       修改主机名


注意:修改完主机名之后,需要把终端关掉,重新开才会生效

十四、控制服务

1.什么是服务?服务开启对本机无意义,对客户有意义
2.用什么控制服务?系统初始化进程可以对服务进行相应的控制
3.当前系统初始化进程是什么?systemd(通过pstree命令查看)
4.进程控制命令
    ssh                                         sshd
client(客户端)                    server(服务端)

systemctl status  服务名(sshd)  systemctl start  服务名(sshd)   systemctl stop  服务名(sshd)     systemctl restart  服务名(sshd)  systemctl reload  服务名(sshd)  systemctl enable  服务名(sshd)   systemctl disable  服务名(sshd)  systemctl list-units systemctl list-unit-files   systemctl list-dependices
 查看服务状态,active(可用),inactive(不可用) 开启服务 关闭服务 重启服务 重新加载服务配置 设定开机自启动 设定开机不启动 列出已经开启服务的当前状态 列出所有服务的开机启动状态(enabled--开机自启动,disabled--开机不启动,static--静态的,即需要依赖别人的开启而开启,masked--隐藏的)

列出服务的依赖性

示例:systemctl list-dependencies sshd        列出ssd服务的依赖性

systemctl set-default multi-user.target  systemctl set-default grarhical.target systemctl mask firewalled.service systemctl umask firewalled.service
设定系统启动级别为多用户模式(无图形模式)(init 3可以由图形模式切换到无图形模式) 设定系统启动级别为图形模式(init 5或者startx可以由无图形模式切换到图形模式) 设置防火墙开机是隐藏的,即不能开启该服务 设置防火墙开机不是隐藏的,即可以开启该服务



5.注意:当把sshd的进程杀掉之后,重新systemctl start sshd服务时,进程号pid会发生变化;
systemcytl restart sshd,进程号pid会发生变化;
systemctl reload sshd,进程号pid不会发生变化;
当别人已经通过ssh连接之后,如果利用命令systemctl stop ssd之后,别人不会退出来。只有当关掉系统之后,别人才能退出来。

猜你喜欢

转载自blog.csdn.net/qq_42303254/article/details/83746366
今日推荐