「Linux 奏章 13」进程管理

230 阅读2分钟

「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战」。

0. 前言

  • 在 Linux 中,每个执行的程序(磁盘中)都称为一个进程(内存中);每一个进程都会分配一个 ID 号(pid)
  • 每个进程都可能以两种方式存在:前台、后台!
    • 前台:用户目前屏幕上可以进行操作的
    • 后台:实际在运行,但在屏幕上不可视的进程,通常使用后台方式执行
  • 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束

进程管理相关指令:

# ps -aux 查看所有的进程

$ ps -aux | grep mysql	# mysql是过滤信息

$ ps -ef | grep mysql	# 查看父进程的信息

$ kill [-9] <pid>

$ pstree -pu
	-p:显示父进程PID
	-u:显示用户组

1. ps

  • ps 命令是用来查看目前系统中,有哪些正在执行,以及它们的执行状况,可不加参数
  • 最常用命令:ps -aux
    • ps -a : 显示当前终端所有进程信息
    • ps -u : 以用户的格式显示进程信息
    • ps -x : 显示后台进程运行的参数
    • 例:ps -aux | grep sshd 过滤跟 sshd 相关的进程

⭐相关参数注释:


⭐若要查看进程对应的父进程,则需要搭配参数 -ef 使用:

  • 父子进程 ppid
    • ps -ef | more : 以全格式显示当前所有进程,查看进程的父进程
    • 远程连接的进程:ps -ef | grep sshd
    • 本地终端打开的进程:ps -ef | grep bash

2. kill

  • 终止进程 kill 命令
  • 语法
    • kill [选项] <PID>
      • 常用选项 : -9 强迫进程立即停止
    • kill <进程名称>,支持通配符,这在系统因负载过大而变得很慢时很有用。
  • 最佳实践
    • 案例1:踢掉某个非法登录用户 => kill 非法用户对应的PID
    • 案例2:终止远程登录服务 sshd,在适当时候再次重启 sshd 服务 ==>
      • kill sshd对应的进程号
      • /bin/systemctl start sshd.service : 重启 sshd 服务
    • 案例3:终止多个 gedit ==> killall gedit
    • 案例4:强制杀掉一个终端 ==>
      • ps -aux | grep bash
      • kill -9 <PID>

3. pstree

  • pstree [选项] : 更加直观地查看进程信息
    • -p : 显示进程的 PID
    • -u : 显示进程的所属用户
  • pstree -u
  • pstree -p

希望本文对你有所帮助🧠
欢迎在评论区留下你的看法🌊,我们一起讨论与分享🔥