linux进程管理
本文知识点:
- 进程管理工具
- 父进程和子进程
- 前台和后台进程
-
在文件系统中查看进程
一、进程管理工具(ps,ss,fuser,kill)
进程查看三部曲:
(1)ss -tnl:查看当前系统正在监听的端口
(2)fuser -n tcp POT:根据进程的端口号查看进程号PID
(3)ps aux | grep PID:根据上一步查找到的进程号来进一步查看进程的情况,进程号查找出来了就可以使用其他命令对进程进行操作,如kill命令
列出所有进程(top):此处仅以top为例
top命令可以列出所有的进程,如图:
(1)09:24:05 up:表示系统启动的时间点
(2)48min:表示系统已经运行了多久
(3)1user:表示当前系统有多少个连接用户
(4)load average:后面的三个值分别表示当前系统在近1分钟,5分钟,15分钟内的负载平均值,如果系统有多个核心的话还得使用load/cpus来计算每个核心的负载
(5)第二行表示的是系统的总进程数,后面的一些参数都是响应状态的进程数
(6)第三行表示的CPU状态,us表示un-nice用户进程占用时间,sy表示系统占用时间,ni表示nice用户进程所占用的cpu时间,id表示CPU空闲百分比,wa表示IO占用的时间,hi表示硬中断时间,si表示软中断时间,系统从vm偷取的时间。
(7)后面两行表示系统的内存状况(Mem:内存;swap:交换内存)
二、父进程和子进程
输入ps aux 或者ps -ef都可显示当前系统进程列表。如图:
(1)第一行的题头分别为:
USER:启动该进程的用户名
PID:该进程的进程号
%CPU:CPU占比
%MEM:内存占比
VSZ:进程占用的虚拟内存大小
RSS:进程占用的非交换内存大小
TTY:运行该进程所在的终端号
STAT:进程当前状态(S,R,Z)
START:进程启动时间
TIME:进程启动了多长时间
COMMAND:进程的二进制文件路径或进程文件名
(2)第一行表示的内容为:
UID:进程所属用户名
PID:进程号
PPID:父进程号
C:进程占用CPU百分比,比较粗略
STIME:进程启动时间
TTY:启动进程的终端号
TIME:进程消耗的CPU时间
CMD:进程的二进制文件名
父进程:是父进程的进程ID,系统的每个进程都不是凭空产生的,而是由一个父进程执行fork()系统调用创建出来的子进程。unix/linux系统启动时的第一个进程是init进程,通过它fork出其他进程,这些被fork出的进程再,创建其他的一些子进程,以此类推,形成整个系统的进程树,可以把init进程看成是树干,其他进程是树枝。—摘自《bash编程艺术》
ps命令的其他用法:
(1)ps -ft:显示进程的终端路径(没有终端的不显示),ps -tf会报错,可使用pkill -kill -t pts/0来杀掉/dev/pts/0这个终端,注意不能用全路径
(2)ps -fp PID:列出指定进程号的进程
(3)ps -fu USERNAME:列出指定用户的所属进程
(4)ps -fC filename:列出使用特定文件的进
pstree命令的一些用法:
(1)默认情况下,pstree会将相同的子进程合并在一起,然后前面加上合并的数量即可,但是-c选项可以将所有子进程以不合并的方式列出来
(2)-p可以指定列出哪个PID的进程
三、前台进程和后台进程
前台进程:在终端输入命令,运行的这段时间可以称它为前台进程,比如tailf /var/log/message,这个进程一直占据着终端,并且在前台运行,即可称之为前台进程
后台进程:将tailf /var/log/message变成后台进程的方式如下:
(1)tailf /var/log/message &(在命令行的最后面加上&符号即可)
(2)tailf /var/log/message运行后,输入ctrl+z即可将进程放到后台,不过是停止状态
将后台进程调至前台并运行两步曲:
(1)jobs -l
(2)fg %#:这里的#号表示的是后台任务的序号
(3)将后台停止的进程唤醒,并且在后台运行
四、/proc/文件系统(存在于内存中,不可通过bash修改)
/proc/sys:保存当前运行的内核参数,修改方式:
(1)echo “/proc/net/ipv4/ip_forward=1” >> /etc/sysctl.conf
(2)sysctl -p
查看/proc/文件系统相关目录:
显示内核当前模块:
lsmod