📜  Unix Linux-进程管理(1)

📅  最后修改于: 2023-12-03 15:35:31.487000             🧑  作者: Mango

Unix/Linux 进程管理

Unix/Linux 操作系统是一种多用户、多任务、分时操作系统,进程是系统中最基本的执行单位。进程管理是 Unix/Linux 操作系统中非常重要的概念,程序员必须深入了解进程管理的相关知识。

进程的概念

进程是正在运行程序的实例,它有自己的执行空间、代码、数据和打开文件等资源。在 Unix/Linux 系统中,每个进程拥有独立的处理器时间片、内存空间和系统资源。进程的基本特点如下:

  • 进程是动态实体,可以创建和撤销;
  • 进程是独立执行的,它拥有自己的执行空间和资源;
  • 进程可以并发执行,实现多道程序设计;
  • 进程之间可以互相通信,实现信息交换。
进程的状态

在 Unix/Linux 系统中,进程的状态可以被分为五个:

  • 就绪状态(Ready):进程已经准备好运行,只等待系统调度。
  • 运行状态(Running):指定给进程的 CPU 时间片正在执行中。
  • 阻塞状态(Blocked):由于某些原因(如等待 I/O 操作)暂时不能执行,等待某些条件满足后进入就绪队列。
  • 暂停状态(Suspended):进程暂时被挂起,不能执行。
  • 终止状态(Terminated):进程已经完成执行,被撤销。
进程管理命令

在 Unix/Linux 系统中,有许多可以用来管理进程的命令。下面介绍一些比较常用的命令:

ps 命令

ps 命令用于列出当前系统中的进程。

$ ps
  PID TTY          TIME CMD
 2274 tty1     00:00:06 Xorg
 2466 tty1     00:00:00 dwm
 2470 tty1     00:01:27 urxvt
 2746 tty1     00:00:00 bash
 2899 tty1     00:00:00 ps

常用选项:

  • -a:显示所有进程。
  • -u:显示进程的用户和 CPU 利用率等信息。
  • -x:显示所有进程,包括没有控制终端的进程。
  • -f:以全格式显示进程信息。
top 命令

top 命令用于动态地显示当前系统中的进程信息。

$ top
top - 22:15:55 up 9 days,  8:45,  2 users,  load average: 0.53, 0.40, 0.39
Tasks: 211 total,   1 running, 209 sleeping,   0 stopped,   1 zombie
%Cpu(s):  9.7 us,  2.3 sy,  0.0 ni, 88.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  15758.9 total,   5694.4 free,   3594.4 used,   3310.1 buff/cache
MiB Swap:   2048.0 total,   2047.3 free,      0.7 used.  11691.1 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  1529 root      20   0  497472  14024   9228 S   7.6   0.1   0:37.92 Xorg
  2096 lena      20   0 2765460 144364  86544 S   3.3   0.9   3:52.36 gnome-shell
  3969 lena      20   0  992280 141804  77600 S   2.3   0.9   2:16.01 firefox
  2778 lena      20   0  641616 107556  49316 S   0.7   0.7   1:07.15 gnome-terminal-
  2564 lena      20   0  966960  74324  43872 S   0.3   0.5   0:34.68 evolution-calen
  2359 lena      20   0  201428   5620   3828 S   0.0   0.0   0:00.74 ibus-daemon
  2362 lena      20   0  777196  30796  19868 S   0.0   0.2   0:03.01 ibus-ui-gtk3
  2425 lena      20   0  647576  32008  22652 S   0.0   0.2   0:03.15 nautilus
  2764 lena      20   0 1340036  23676  16464 S   0.0   0.1   0:01.95 tracker-extract
  2870 lena      20   0  593020   6980   4844 S   0.0   0.0   0:00.08 dconf-service
  2881 lena      20   0  202416   2124   1740 S   0.0   0.0   0:00.02 gconfd-2
  2883 lena      20   0  247008   5220   4296 S   0.0   0.0   0:00.00 gconf-helper
  6031 lena      20   0   58720   4272   3424 R   0.0   0.0   0:00.01 top

常用快捷键:

  • q:退出 top 命令。
  • P:按 CPU 利用率排序。
  • M:按内存利用率排序。
  • T:按时间排序。
kill 命令

kill 命令用于发送信号给指定进程,常用于终止进程。kill 命令的常用信号:

  • SIGINT:中断进程,相当于在终端上按下 Ctrl-C
  • SIGKILL:强制终止进程,进程不会有任何机会进行清理操作。
  • SIGTERM:终止进程,进程有机会进行清理操作。
$ kill -SIGTERM 1234
killall 命令

killall 命令用于发送信号给指定名字的所有进程,常用于批量终止进程。

$ killall -SIGTERM firefox
总结

进程管理是 Unix/Linux 操作系统中非常重要的概念,程序员必须深入了解进程管理的相关知识。ps、top、kill、killall 等命令是进程管理中比较常用的命令,掌握它们可以帮助程序员快速有效地管理进程。