(1)基本介绍
进程定义:在Linux系统中,每一个执行的程序都被视为一个进程。每个进程都有一个唯一的标识符,即进程ID(PID),用于区分和管理不同的进程。
每个进程都可能以两种方式存在的,前台进程与后台进程。
前台进程:直接与用户交互,是用户的屏幕上可以进行操作的。
后台进程:实际在操作的、由于屏幕上无法看到的进程。许多系统服务和守护进程(daemon)默认以后台进程的形式运行,它们为系统提供必要的功能,如网络服务、日志记录等,通常从系统启动时开始运行,直到系统关闭才终止。这些进程常驻内存中。
(2)显示系统正在执行的进程
ps 命令:是用来查看目前系统中正在执行进程以及它们执行的状况。可以不带参数。
PID:进程ID。
TTY:终端类型。它表示该进程是在哪个终端下运行的。pts/0表示这是一个伪终端,通常用于SSH连接或是xterm等终端模拟器。pts后的数字表示终端会话的编号。
TIME:进程使用的CPU时间。这里显示的是该进程自启动以来累计使用的CPU时间,格式为“小时:分钟:秒数”。
CMD:启动进程的命令或程序名。
常带的参数(可以同时使用,ps -aux):
ps -a,指示ps命令显示所有的进程及相关信息。
ps -u,输出进程的资源消耗情况,通常包括用户ID、CPU时间和内存使用情况等额外的列。
ps -x,显示在后台进程。
命令 ps –aux|grep xxx 是在Linux系统中用来查找与特定字符串(在这里是 xxx)相关的所有正在运行的进程。例如,命令 ps –aux|grep sshd,检查系统中是否正在运行名为 sshd 的进程。sshd 服务是 Secure Shell Daemon 的缩写,它是基于 SSH (Secure Shell) 协议实现的一个系统守护进程。
ps命令详解:
USER:用户名称
PID:进程号
%CPU:进程占用 CPU 的百分比
%MEM:进程占用物理内存的百分比
VSZ:进程占用的虚拟内存大小(单位:KB)
RSS:进程占用的物理内存大小(单位:KB)
TTY:终端名称。
(虚拟内存,就是电脑用硬盘空间假装成内存来用的一种方法。当真正的内存(RAM)不够用时,系统就会把一部分硬盘空间当作临时内存来存放数据,让电脑可以运行需要更多内存的程序。这样一来,即使物理内存很小,电脑也能处理大任务。)
STAT:进程状态,其中 S 睡眠,s表示该进程是会话的先导进程,N表示进程拥有比普通优先级更低的优先级,R 正在运行,D短期等待,Z僵死进程,T被跟踪或者被停止。
STARTED:进程的启动时间
TIME:CPU 时间,即进程使用 CPU 的总时间
COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
查看sshd的父进程信息:
ps -ef 是以全格式显示当前所有的进程,-e 显示所有进程,-f 全格式。
ps -ef|grep sshd以全格式显示与sshd有关的进程。ppid字段查看进程的父进程。
已知父进程的进程号,该进程的详细信息。
(3)终止进程 kill 和 killall
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。此时,可以使用 kill 命令来完成。
基本语法:
kill [选项] 进程号(功能描述:通过进程号杀死/终止进程)
killall 进程名称 (功能描述:通过进程名称杀死进程,同时子进程也会被抹杀。killall,可以使用通配符,在系统因负载过大而变得很慢时很有用)
常用选项:-9 表示强迫进程立即停止。
案例 1:踢掉利用sshd服务远程登录的非法用户tom
案例 2:终止远程登录服务sshd,在适当时候再次重启 sshd 服务
kill 服务sshd对应的进程号
重启服务的命令:/bin/systemctl start sshd.service
案例 3:终止多个 gedit(文本编辑器,相当于windows的记事本)
killall gedit
案例 4:强制杀掉一个终端
kill -9 终端bash对应的进程号
(4)查看进程树
pstree [选项] 以父子进程的形式,更加直观的来看进程信息
-p 显示进程的 PID
-u 显示进程的所属用户
案例 1:请以树状的形式显示进程的 pid(以父子进程的形式,加上pid显示)
pstree -p
案例 2:请以树状的形式进程的用户名(以父子进程的形式,加上进程用户)
pstree -u