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