进程是系统里正在运行的程序,由 Linux 内核统一负责调度和管理。为了方便追踪,内核会为每一个进程分配一个唯一的标识号,即进程标识符(Process ID, PID)。PID 通常从 1 开始随着进程启动的先后顺序递增。
作为安全测试人员或系统管理员,你不仅需要查看进程,还要能在程序失去响应或暴露安全风险时快速定位并将其终止。
查看系统进程:ps 与 top
静态列出进程:ps
直接执行 ps 可以列出当前终端会话下属于你当前用户的所有运行进程。
为了查看系统上所有用户运行的进程以及不与终端绑定的系统级服务进程,需要使用 aux 选项:
crow@opsbox:~$ ps aux
ps aux 的输出通常包含以下核心字段:
USER:运行该进程的系统用户名。PID:进程的唯一标识号。%CPU:该进程占用的 CPU 算力百分比。%MEM:该进程占用的物理内存百分比。STAT:进程当前状态(如S代表睡眠,R代表运行中,T代表被挂起/暂停)。COMMAND:启动该进程的具体命令名称。
动态实时统计:top
ps 仅提供命令执行瞬间的静态快照。若要实时监控进程状态,可以使用 top 命令:
crow@opsbox:~$ top
top 界面默认约每 3 秒刷新一次数据,展示系统负载与占用资源最高的进程列表。你可以使用方向键上下浏览,按下键盘上的 q 键即可退出。
图:VulcanSphere · Wikimedia Commons · GNU GPL
管理进程信号与终结操作:kill、pgrep、pkill
发送终止信号:kill
你可以通过向进程发送特定的信号来控制它的运行或终止。
使用 kill 命令并指定对应的 PID,即可发送终止信号:
crow@opsbox:~$ kill PID
常用的进程控制信号包括:
- 1(SIGHUP):挂断信号。当控制该进程的终端被关闭时发送,常用于让后台服务重新加载配置文件。
- 2(SIGINT):中断信号。当你在终端按下
Ctrl + C时,系统会发送该信号给前台进程使其停止。 - 9(SIGKILL):强制杀除。内核会立即终止该进程,不给予其执行任何清理或保存任务的机会。当程序卡死时常用此信号。
- 15(SIGTERM):终止信号(默认发送)。通知进程安全退出,允许其先释放资源和保存状态。
- 19(SIGSTOP):暂停信号。强行停止进程,使其无法再处理任何任务。
- 20(SIGTSTP):挂起信号。当你在终端按下
Ctrl + Z时发送,用于暂停前台进程并将其放入后台。
例如,若需要强行中止 PID 为 10825 的程序,可执行:
crow@opsbox:~$ kill -9 10825
提示
在安全渗透中,为什么要快速杀进程? 当你在目标机器上执行某些高频扫描或不小心触发了死循环脚本时,如果不及时杀掉进程,目标服务器的 CPU 可能会瞬间飙升至 100%,这极易触发蓝队管理员的警报。因此,快速定位并终结风险进程是基本的生存技能。
按名称检索与终结:pgrep、pkill 与 killall
在现实中,每次都先运行 ps aux 再用 grep 过滤出 PID,然后执行 kill 是非常繁琐的。你可以使用更高级的命令来简化这一流程:
pgrep:直接通过进程名称查询其对应的 PID。例如,查询所有与ssh相关的进程 ID:crow@opsbox:~$ pgrep sshpkill:直接根据进程名称发送信号,终结所有匹配的进程。例如,强制杀掉所有名字中包含apache的进程:crow@opsbox:~$ pkill -9 apachekillall:要求提供精确的进程名称进行终结:crow@opsbox:~$ killall -9 ping

