Was ist der Befehl zum Abfragen von Prozessen unter Linux?

青灯夜游
Freigeben: 2022-04-13 16:41:40
Original
22701 Leute haben es durchsucht

Befehle zum Abfragen von Prozessen: 1. ps-Befehl, der detaillierte Informationen aller laufenden Prozesse im System anzeigen kann, die Syntax ist „ps aux“ oder „ps -le“ 2. top-Befehl, der den laufenden Status überwachen kann Für die Darstellung des Prozesses in Echtzeit lautet die Syntax „top Option“ 3. Der Befehl pstree kann den Prozessbaum anzeigen und die Beziehung zwischen Programmen und Prozessen in einer Baumstruktur anzeigen.

Was ist der Befehl zum Abfragen von Prozessen unter Linux?

Die Betriebsumgebung dieses Tutorials: CentOS 6-System, Dell G3-Computer.

Ein Prozess ist ein Programm oder Befehl, der ausgeführt wird. Jeder Prozess ist eine laufende Einheit, verfügt über einen eigenen Adressraum und belegt bestimmte Systemressourcen.

Ob Sie ein Linux-Systemadministrator oder ein normaler Benutzer sind, ist es eine tägliche Routine, den laufenden Status von Systemprozessen zu überwachen und einige außer Kontrolle geratene Prozesse rechtzeitig zu beenden.

Obwohl in Linux Befehle für die Prozessverwaltung verwendet werden, ist der Hauptzweck der Prozessverwaltung derselbe: Er besteht darin, die im System ausgeführten Programme und Prozesse anzuzeigen, den Gesundheitszustand des Servers zu ermitteln und unnötige Prozesse zwangsweise zu beenden.

Was ist also der Befehl, um den Prozess unter Linux abzufragen? Im folgenden Artikel werden einige Befehle für den Linux-Abfrageprozess mit Ihnen geteilt.

Linux ps-Befehl: Laufende Prozesse anzeigen

ps-Befehl ist der am häufigsten verwendete Befehl zum Überwachen von Prozessen. Mit diesem Befehl können Sie detaillierte Informationen zu allen laufenden Prozessen im System anzeigen. Das Grundformat des

ps-Befehls ist wie folgt:

[root@localhost ~]# ps aux
#查看系统中所有的进程,使用 BS 操作系统格式
[root@localhost ~]# ps -le
#查看系统中所有的进程,使用 Linux 标准命令格式
Nach dem Login kopieren

Optionen:

  • a: Alle Prozesse in einem Terminal anzeigen, außer Sitzungsleitern;

  • u: Zeigt den zugeordneten Benutzer und die Speichernutzung an Prozess;

  • x: Prozesse anzeigen, die das Terminal nicht steuern;

  • -e: Alle Prozesse anzeigen;

  • Sehen Sie, der ps-Befehl ähnelt in gewisser Weise dem. Der Unterschied besteht darin, dass „-“ nicht zu einigen seiner Optionen hinzugefügt werden kann, wie zum Beispiel dem Befehl „ps aux“, wobei „aux“ eine Option ist, aber kein „-“ vorangestellt werden darf. .

    Wenn Sie den Befehl „man ps“ ausführen, werden Sie feststellen, dass in der Hilfe des Befehls ps viele Formate zur Anpassung an verschiedene UNIX-ähnliche Systeme verfügbar sind, was unpraktisch zu merken ist. Deshalb schlage ich vor, dass Sie sich einfach ein paar feste Optionen merken. Beispiel:

"ps aux" kann alle Prozesse im System anzeigen;

  • "ps -le" kann alle Prozesse im System anzeigen und auch die PID und Prozesspriorität des übergeordneten Prozesses anzeigen ;

  • „ps -l“ kann nur die von der aktuellen Shell generierten Prozesse sehen;

  • 【Beispiel 1】
  • [root@localhost ~]# ps aux
    Nach dem Login kopieren
    #查看系统中所有的进程
    USER PID %CPU %MEM  VSZ  RSS   TTY STAT START TIME COMMAND
    root   1  0.0  0.2 2872 1416   ?   Ss   Jun04 0:02 /sbin/init
    root   2  0.0  0.0    0    0   ?    S   Jun04 0:00 [kthreadd]
    root   3  0.0  0.0    0    0   ?    S   Jun04 0:00 [migration/0]
    root   4  0.0  0.0    0    0   ?    S   Jun04 0:00 [ksoftirqd/0]
    …省略部分输出…
    Nach dem Login kopieren

    Tabelle 1 listet die spezifischen Bedeutungen jeder Spalte in den obigen Ausgabeinformationen auf.

Tabelle 1 ps-Befehlsausgabeinformationsbedeutung

Kopfzeile

Bedeutung

BENUTZERVon welchem ​​Benutzer der Prozess generiert wird. PIDDie ID des Prozesses. %CPUDer Prozentsatz der vom Prozess belegten CPU-Ressourcen. Je höher der belegte Prozentsatz, desto mehr Ressourcen verbraucht der Prozess. %MEMDer Prozentsatz des vom Prozess belegten physischen Speichers. Je höher der belegte Prozentsatz, desto mehr Ressourcen verbraucht der Prozess. VSZDie Größe des von diesem Prozess belegten virtuellen Speichers in KB. RSSDie tatsächliche physische Speichergröße, die von diesem Prozess belegt wird, in KB. TTYIn welchem ​​Terminal der Prozess läuft. Unter diesen stellen tty1 ~ tty7 lokale Konsolenterminals dar (verschiedene Terminals können über die Tastenkombination Alt + F1 ~ F7 umgeschaltet werden), tty1 ~ tty6 sind lokale Zeichenschnittstellenterminals und tty7 ist ein grafisches Terminal. pts/0 ~ 255 stellt ein virtuelles Terminal dar, normalerweise ein Remote-Verbindungsterminal. Die erste Remote-Verbindung belegt pts/0 und die zweite Remote-Verbindung belegt pts/1, was der Reihe nach zunimmt. STATProzessstatus. Übliche Zustände sind wie folgt: -D: Ein Schlafzustand, der nicht aufgeweckt werden kann und normalerweise für E/A-Situationen verwendet wird. -R: Der Prozess läuft. -S: Der Prozess schläft und kann geweckt werden. -T: Stoppzustand, der möglicherweise im Hintergrund angehalten wird oder der Prozess sich in einem Debugging-Zustand befindet. ZEITDieser Vorgang nimmt CPU-Rechenzeit in Anspruch. Bitte beachten Sie, dass es sich hierbei nicht um Systemzeit handelt. COMMANDDer Befehlsname, der diesen Prozess generiert hat.

【例 2】"ps aux"命令可以看到系统中所有的进程,"ps -le"命令也能看到系统中所有的进程。由于 "-l" 选项的作用,所以 "ps -le" 命令能够看到更加详细的信息,比如父进程的 PID、优先级等。但是这两个命令的基本作用是一致的,掌握其中一个就足够了。

[root@localhost ~]# ps -le
F S UID PID PPID C  PRI Nl ADDR  SZ WCHAN TTY      TIME  CMD
4 S   0   1    0 0  80   0 -    718 -     ?    00:00:02  init
1 S   0   2    0 0  80   0 -      0 -     ?    00:00:00  kthreadd
1 S   0   3    2 0 -40   - -      0 -     ?    00:00:00  migration/0
1 S   0   4    2 0  80   0 -      0 -     ?    00:00:00  ksoflirqd/0
1 S   0   5    2 0 -40   - -      0 -     ?    00:00:00  migration/0
…省略部分输出…
Nach dem Login kopieren

表 2 罗列出以上输出信息中各列的含义。

    -W: Speicherinteraktionsstatus (ungültig ab 2.6 Kernel).
  1. -X: Toter Prozess (sollte nicht erscheinen).
  2. -Z: Zombie-Prozess. Der Prozess wurde beendet, aber ein Teil des Programms befindet sich noch im Speicher.
  3. -<: Hohe Priorität (der folgende Status tritt im BSD-Format auf).
  4. -N: Niedrige Priorität.
  5. -L: Eingesperrt in die Erinnerung.
  6. -s: Untergeordnete Prozesse einbeziehen.
  7. -l: Multithreading (Kleinbuchstabe L).
  8. -+: Befindet sich im Hintergrund.
  9. START
  10. Die Startzeit des Prozesses.
表 2 ps -le 命令输出信息
表头含义
F进程标志,说明进程的权限,常见的标志有两个:
  • 1:进程可以被复制,但是不能被执行;
  • 4:进程使用超级用户权限;
S进程状态。具体的状态和"psaux"命令中的 STAT 状态一致;
UID运行此进程的用户的 ID;
PID进程的 ID;
PPID父进程的 ID;
C该进程的 CPU 使用率,单位是百分比;
PRI进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;
NI进程的优先级,数值越小,该进程越早被执行;
ADDR该进程在内存的哪个位置;
SZ该进程占用多大内存;
WCHAN该进程是否运行。"-"代表正在运行;
TTY该进程由哪个终端产生;
TIME该进程占用 CPU 的运算时间,注意不是系统时间;
CMD产生此进程的命令名;

【例 3】如果不想看到所有的进程,只想查看一下当前登录产生了哪些进程,那只需使用 "ps -l" 命令就足够了:

[root@localhost ~]# ps -l
#查看当前登录产生的进程
F S UID   PID  PPID C PRI NI ADDR SZ WCHAN TTY       TIME CMD
4 S 0   18618 18614 0  80  0 - 1681  -     pts/1 00:00:00 bash
4 R 0   18683 18618 4  80  0 - 1619  -     pts/1 00:00:00 ps
Nach dem Login kopieren

可以看到,这次从 pts/1 虚拟终端登录,只产生了两个进程:一个是登录之后生成的 Shell,也就是 bash;另一个是正在执行的 ps 命令。

Linux top命令:持续监听进程运行状态

ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行 ps 命令,这显然是缺乏效率的。

为此,Linux 提供了 top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。

top 命令的基本格式如下:

[root@localhost ~]#top [选项]
Nach dem Login kopieren

选项:

  • -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;

  • -b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;

  • -n 次数:指定 top 命令执行的次数。一般和"-"选项合用;

  • -p 进程PID:仅查看指定 ID 的进程;

  • -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;

  • -u 用户名:只监听某个用户的进程;

在 top 命令的显示窗口中,还可以使用如下按键,进行一下交互操作:

  • ? 或 h:显示交互模式的帮助;

  • P:按照 CPU 的使用率排序,默认就是此选项;

  • M:按照内存的使用率排序;

  • N:按照 PID 排序;

  • T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;

  • k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;

  • r:按照 PID 给某个进程重设优先级(Nice)值;

  • q:退出 top 命令;

我们看看 top 命令的执行结果,如下:

[root@localhost ~]# top
top - 12:26:46 up 1 day, 13:32, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.7%id, 0.1%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 625344k total, 571504k used, 53840k free, 65800k buffers
Swap: 524280k total, 0k used, 524280k free, 409280k cached
PID   USER PR NI VIRT  RES  SHR S %CPU %MEM   TIME+ COMMAND
19002 root 20  0 2656 1068  856 R  0.3  0.2 0:01.87 top
1     root 20  0 2872 1416 1200 S  0.0  0.2 0:02.55 init
2     root 20  0    0    0    0 S  0.0  0.0 0:00.03 kthreadd
3     root RT  0    0    0    0 S  0.0  0.0 0:00.00 migration/0
4     root 20  0    0    0    0 S  0.0  0.0 0:00.15 ksoftirqd/0
5     root RT  0    0    0    0 S  0.0  0.0 0:00.00 migration/0
6     root RT  0    0    0    0 S  0.0  0.0 0:10.01 watchdog/0
7     root 20  0    0    0    0 S  0.0  0.0 0:05.01 events/0
8     root 20  0    0    0    0 S  0.0  0.0 0:00.00 cgroup
9     root 20  0    0    0    0 S  0.0  0.0 0:00.00 khelper
10    root 20  0    0    0    0 S  0.0  0.0 0:00.00 netns
11    root 20  0    0    0    0 S  0.0  0.0 0:00.00 async/mgr
12    root 20  0    0    0    0 S  0.0  0.0 0:00.00 pm
13    root 20  0    0    0    0 S  0.0  0.0 0:01.70 sync_supers
14    root 20  0    0    0    0 S  0.0  0.0 0:00.63 bdi-default
15    root 20  0    0    0    0 S  0.0  0.0 0:00.00 kintegrityd/0
16    root 20  0    0    0    0 S  0.0  0.0 0:02.52 kblockd/0
17    root 20  0    0    0    0 S  0.0  0.0 0:00.00 kacpid
18    root 20  0    0    0    0 S  0.0  0.0 0:00.00 kacpi_notify
Nach dem Login kopieren

我们解释一下命令的输出。top 命令的输出内容是动态的,默认每隔 3 秒刷新一次。命令的输出主要分为两部分:

  • 第一部分是前五行,显示的是整个系统的资源使用状况,我们就是通过这些输出来判断服务器的资源使用状态的;

  • 第二部分从第六行开始,显示的是系统中进程的信息;

Linux pstree命令:查看进程树

pstree 命令是以树形结构显示程序和进程之间的关系,此命令的基本格式如下:

[root@localhost ~]# pstree [选项] [PID或用户名]
Nach dem Login kopieren

表 1 罗列出了 pstree 命令常用选项以及各自的含义。

表 1 pstree命令常用选项及含义
选项含义
-a显示启动每个进程对应的完整指令,包括启动进程的路径、参数等。
-c不使用精简法显示进程信息,即显示的进程中包含子进程和父进程。
-n根据进程 PID 号来排序输出,默认是以程序名排序输出的。
-p显示进程的 PID。
-u显示进程对应的用户名称。

需要注意的是,在使用 pstree 命令时,如果不指定进程的 PID 号,也不指定用户名称,则会以 init 进程为根进程,显示系统中所有程序和进程的信息;反之,若指定 PID 号或用户名,则将以 PID 或指定命令为根进程,显示 PID 或用户对应的所有程序和进程。

init 进程是系统启动的第一个进程,进程的 PID 是 1,也是系统中所有进程的父进程。

【例 1】

[root@1ocalhost ~]# pstree
init──┬──abrc-dump-oopa
├──abrtd
├──acpid
...省略部分输出...
├──rayslogd───3*[{rsyslogrd}]
#有3个rsyslogd进程存在
├──sshd───sshd───bash───pstree
#Pstree命令进程是在远程连接中被执行的
├──udevd───2*[udevd]
└──xinecd
Nach dem Login kopieren

【例 2】如果想知道某个用户都启动了哪些进程,使用 pstree 命令可以很容易实现,以 mysql 用户为例:

[root@1ocalhost ~]# pstree mysql
mysqid---6*[{mysqid}]
Nach dem Login kopieren

此输出结果显示了 mysql 用户对应的进程为 mysqid,并且 mysqid 进程拥有 5 个子进程(外加 1 个父进程,共计 6 个进程)。

Linux lsof命令:列出进程调用或打开的文件信息

我们知道,通过 ps 命令可以查询到系统中所有的进程,那么,是否可以进一步知道这个进程到底在调用哪些文件吗?当然可以,使用 lsof 命令即可。

lsof 命令,“list opened files”的缩写,直译过来,就是列举系统中已经被打开的文件。通过 lsof 命令,我们就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。

lsof 命令的基本格式如下:

[root@localhost ~]# lsof [选项]
Nach dem Login kopieren

此命令常用的选项及功能,如表 1 所示。

表 1 lsof 命令常用选项及功能
选项功能
-c 字符串只列出以字符串开头的进程打开的文件。
+d 目录名列出某个目录中所有被进程调用的文件。
-u 用户名只列出某个用户的进程打开的文件。
-p pid列出某个 PID 进程打开的文件。

【例 1】

[root@localhost ~]# lsof | more
#查询系统中所有进程调用的文件
COMMAND PID  USER  FD    TYPE  DEVICE  SIZE/OFF  NODE  NAME
init               1      root    cwd  DIR    8,3       4096        2           /
init               1      root    rtd    DIR    8,3       4096        2           /
init               1      root    txt     REG   8,3       145180    130874 /sbin/init
init               1      root    mem REG   8,3       142472    665291 /lib/ld-2.12.so
init               1      root    mem REG   8,3       58704      655087 /lib/libnss_files-2.12.so
…省略部分输出…
Nach dem Login kopieren

这个命令的输出非常多。它会按照 PID,从 1 号进程开始列出系统中所有的进程正在调用的文件名。

【例 2】

[root@localhost ~]# lsof /sbin/init
#查询某个文件被哪个进程调用
COMMAND PID USER  FD  TYPE  DEVICE  SIZE/OFF  NODE    NAME
init               1     root    txt  REG   8,3      145180     130874   /sbin/init
Nach dem Login kopieren

lsof 命令也可以反过来查询某个文件被哪个进程调用。这个例子就查询到 /sbin/init 文件是被 init 进程调用的。

相关推荐:《Linux视频教程

Das obige ist der detaillierte Inhalt vonWas ist der Befehl zum Abfragen von Prozessen unter Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!