Bootstrap

Linux进程管理

前台进程(Foreground Process):它通常在用户的终端或命令行界面中启动,并且可以接受用户的输入和输出。在前台进程运行时,用户需要等待该进程完成或者主动终止它才能继续进行其他操作。例如,当你在终端中输入一个命令并等待它执行完成时,这个命令就是一个前台进程。
后台进程(Background Process):后台进程是在用户的控制下启动,但不需要直接与用户交互。它通常在后台运行,不占用当前的终端,用户可以继续执行其他任务。用户可以通过命令行的某些标志(比如 & 在 Linux 系统中)将进程放到后台运行,或使用 bg 命令。
守护进程(Daemon Process):守护进程是一种特殊的后台进程,通常在系统启动时就会启动,并在系统关闭前持续运行。它们通常没有用户交互,负责执行系统任务,如定时备份、日志记录、网络服务等。守护进程通常不依赖于终端,它们通常会脱离终端控制,并且与前台进程的生命周期无关。在 Linux 和 Unix 系统中,守护进程的名称通常以字母 d 结尾(如 sshdhttpd)。

进程ID

ubuntu ps命令

ps:显示当前终端会话中的进程(仅显示当前会话的进程)。

ps

在这里插入图片描述显示所有进程

ps -e

ps -A

在这里插入图片描述显示所有进程,并以全格式输出(包括用户、PID、父进程PID等信息)

ps -ef

在这里插入图片描述 显示进程树

ps -ejH

ps --forest
ps -ef --forest

在这里插入图片描述
显示特定用户的进程

ps -u <用户名>

显示特定进程的详细信息

ps -p <PID>

显示进程的内存使用情况

ps aux

在这里插入图片描述显示进程使用的详细资源
自定义显示进程的资源使用情况,指定显示 PID、父进程PID、内存使用率、CPU使用率和命令行。

ps -eo pid,ppid,%mem,%cpu,cmd
ps -eo pid,ppid,%mem,%cpu,comm

在这里插入图片描述

按cpu使用频率降序排序

ps -aux --sort=-pcpu

按内存

ps -aux --sort=-pmem

结合 grep 查找特定进程

ps aux | grep <进程名>

在这里插入图片描述实时查看进程

top

ps 命令不同,top 是一个动态命令,会实时更新进程信息,展示系统资源的使用情况。

Ubuntu 其他进程管理命令

top

  • top 是一个动态命令,实时显示系统中资源消耗最多的进程。它可以提供 CPU 使用率、内存使用率、进程 ID、命令等信息,并且可以交互式地管理进程。
top
  • top 命令界面中,你可以:
    • P 按 CPU 使用率排序。
    • M 按内存使用率排序。
    • q 退出 top
    • k 来终止某个进程。

htop

htoptop 的增强版,提供了一个更友好的界面,支持颜色和更方便的交互操作。它显示 CPU、内存、交换空间等使用情况,可以使用上下箭头选择进程,并且可以直接终止或改变进程的优先级。
安装:

sudo apt install htop

更新:

sudo apt install --only-upgrade htop

pgrep

用于根据进程名查找进程的 PID

pgrep apache2
pgrep -l apache2  # 显示进程名和 PID

kill

kill 命令用于终止进程。通常使用进程的 PID 来指定要终止的进程。

kill <PID>

可以使用 -9 信号强制终止

kill -9 1234

killall 用于通过进程名来终止进程,而不是通过 PID。例如,杀死所有名为 apache2 的进程:

killall apache2
killall -9 apache2

nice & renice

nice 命令用于启动一个进程并指定其优先级(调度优先级),也就是改变进程的 “nice 值”。默认的 nice 值是 0,值越小,优先级越高,值越大,优先级越低。

nice -n 10 command  # 以较低优先级启动命令

要运行一个进程并设置负的 nice 值(提高优先级),需要使用 sudo

sudo nice -n -10 command

renice 用于改变已经在运行中的进程的优先级。你可以指定进程的 PID 来调整它的 nice 值:

sudo renice -n 10 -p <PID>

xkill 命令允许你通过点击图形界面上的窗口来杀死进程。它非常适合终止不响应的图形界面应用程序。启动 xkill 后,鼠标指针会变成一个“X”,然后点击想要关闭的窗口即可。

xkill

pstree

pstree 显示进程的树状结构,显示父子进程之间的关系。它可以让你快速查看进程的层级结构。

pstree

可以使用 -p 显示进程 ID:

pstree -p

在这里插入图片描述

strace

strace 用于跟踪进程执行时系统调用的详细信息。如果你需要调试一个进程并查看它执行了哪些系统调用,strace 是非常有用的。

strace -p <PID>  # 跟踪正在运行的进程

你也可以用它来跟踪一个新启动的进程:

strace command

lsof

lsof 显示当前系统上所有打开的文件及其相关的进程。文件包括普通文件、目录、库文件、套接字等。你可以使用它来查看哪些进程打开了某个文件。

lsof # 查看系统中所有打开的文件
lsof -p <PID>  # 查看某个进程打开的文件

time

time 用来衡量某个命令的执行时间。它会显示进程的真实时间、用户时间和系统时间。

time <command>

例如

time ls

在这里插入图片描述

fgbg 命令

fg:将后台进程带到前台运行。

fg %<job_number>

例如

fg %1

bg:将暂停的前台进程放到后台继续执行。

bg %1

watch

watch 用于周期性地执行某个命令,并在终端显示其输出。常用于监控进程的变化。

watch -n 1 'ps aux'  # 每秒刷新一次进程列表

systemctl

在使用 systemd 的 Linux 系统中,systemctl 用于管理系统服务进程。你可以用它来启动、停止、重启、查看服务状态等。

查看服务状态

systemctl status <service_name>

启动服务

sudo systemctl start <service_name>

停止服务

sudo systemctl stop <service_name>

将服务设为开机启动

sudo systemctl enable <service_name>

查看是否是开机启动

sudo systemctl is-enabled <service_name>
  • enabled:表示该服务已设置为开机启动。
  • disabled:表示该服务未设置为开机启动。
  • static:表示该服务依赖于其他服务或条件,不能直接启用或禁用。
  • masked:表示该服务已被屏蔽,无法启动。
    查看所有开机启动服务
systemctl list-unit-files --type=service --state=enabled
;