Rumah >Operasi dan penyelenggaraan >operasi dan penyelenggaraan linux >Apakah arahan untuk menanyakan proses di bawah Linux?

Apakah arahan untuk menanyakan proses di bawah Linux?

青灯夜游
青灯夜游asal
2022-04-13 16:04:5022797semak imbas

Perintah untuk bertanya proses: 1. perintah ps, yang boleh melihat maklumat terperinci semua proses yang sedang berjalan dalam sistem, dengan sintaks "ps aux" atau "ps -le" 2. arahan atas, yang boleh memantau status berjalan proses dalam masa nyata , sintaks "pilihan atas" 3. Perintah pstree boleh melihat pokok proses dan memaparkan hubungan antara program dan proses dalam struktur pokok.

Apakah arahan untuk menanyakan proses di bawah Linux?

Persekitaran pengendalian tutorial ini: sistem CentOS 6, komputer Dell G3.

Proses ialah atur cara atau perintah yang sedang dilaksanakan Setiap proses ialah entiti yang sedang berjalan, mempunyai ruang alamat sendiri dan menduduki sumber sistem tertentu.

Sama ada anda seorang pentadbir sistem Linux atau pengguna biasa, memantau status berjalan proses sistem dan menamatkan beberapa proses di luar kawalan tepat pada masanya adalah rutin harian.

Walaupun arahan digunakan untuk pengurusan proses di Linux, tujuan utama pengurusan proses adalah sama, iaitu untuk melihat program dan proses yang berjalan dalam sistem, menentukan status kesihatan pelayan, dan menamatkan secara paksa proses yang tidak perlu.

Jadi apakah arahan untuk menanyakan proses di bawah Linux? Artikel berikut akan berkongsi dengan anda beberapa arahan proses pertanyaan Linux.

Perintah ps Linux: Lihat proses yang sedang dijalankan

arahan ps ialah arahan yang paling biasa digunakan untuk memantau proses Anda boleh melihat sistem melalui ini arahan Maklumat terperinci tentang semua proses yang dijalankan dalam .

Format asas arahan ps adalah seperti berikut:

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

Pilihan:

  • a: Paparkan semua proses dalam terminal, kecuali ketua sesi;

  • u: Memaparkan pengguna dan penggunaan memori proses itu; ;

  • -l: memaparkan maklumat yang lebih terperinci dalam format panjang; 🎜>

    Seperti yang anda lihat, arahan ps sedikit berbeza Beberapa pilihannya tidak boleh ditambah dengan "-", seperti arahan "ps aux", di mana "aux" adalah pilihan, tetapi "-. " tidak boleh ditambah di hadapan.
  • Jika anda melaksanakan arahan "man ps", anda akan mendapati bahawa bantuan arahan ps mempunyai banyak format yang tersedia untuk disesuaikan dengan sistem seperti UNIX yang berbeza, yang menyusahkan untuk diingati. Oleh itu, saya cadangkan anda hanya menghafal beberapa pilihan tetap. Contohnya:

  • "ps aux" boleh melihat semua proses dalam sistem; system , dan anda juga boleh melihat PID dan keutamaan proses proses induk proses; >

  • Tiga arahan ini sudah memadai.

[Contoh 1]

  • Jadual 1 menyenaraikan maksud khusus setiap lajur dalam maklumat output di atas.

    tr >
    Maksud maklumat keluaran perintah 1 ps
    Tajuk Maksud
    USER Pengguna mana yang mencipta proses ini.
    PID ID proses.
    %CPU Peratusan sumber CPU yang diduduki oleh proses semakin tinggi peratusan yang diduduki, lebih banyak sumber yang digunakan oleh proses.
    %MEM Peratusan memori fizikal yang diduduki oleh proses semakin tinggi peratusan yang diduduki, lebih banyak sumber yang digunakan oleh proses.
    VSZ Saiz memori maya yang diduduki oleh proses ini, dalam KB.
    RSS Saiz memori fizikal sebenar yang diduduki oleh proses ini, dalam KB.
    TTY Di terminal mana proses sedang berjalan. Antaranya, tty1 ~ tty7 mewakili terminal konsol tempatan (terminal yang berbeza boleh ditukar melalui kekunci pintasan Alt F1 ~ F7), tty1 ~ tty6 ialah terminal antara muka aksara tempatan, dan tty7 ialah terminal grafik. pts/0 ~ 255 mewakili terminal maya, biasanya terminal sambungan jauh Sambungan jauh pertama menduduki pts/0, dan sambungan jauh kedua menduduki pts/1, yang meningkat mengikut urutan.
    STAT Status proses. Keadaan biasa adalah seperti berikut:
      -D: Keadaan tidur yang tidak boleh dikejutkan, biasanya digunakan untuk situasi I/O.
    1. -R: Proses sedang berjalan.

    2. -S: Proses dalam keadaan tidur dan boleh dikejutkan.
    3. -T: Keadaan berhenti, yang mungkin dijeda di latar belakang atau proses dalam keadaan nyahpepijat.

    4. -W: Keadaan interaksi memori (tidak sah bermula dari 2.6 kernel).

      -X: Proses mati (tidak sepatutnya muncul).

      -Z: proses zombi. Proses telah ditamatkan, tetapi sebahagian daripada program masih dalam ingatan. -<: Keutamaan tinggi (status berikut berlaku dalam format BSD).

      [root@localhost ~]# ps aux
      -N: Keutamaan rendah.
      #查看系统中所有的进程
      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]
      …省略部分输出…

      -L: Dikunci dalam ingatan.

      表 1 ps命令输出信息含义
      表头 含义
      USER 该进程是由哪个用户产生的。
      PID 进程的 ID。
      %CPU 该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
      %MEM 该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
      VSZ 该进程占用虚拟内存的大小,单位为 KB。
      RSS 该进程占用实际物理内存的大小,单位为 KB。
      TTY 该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。
      STAT 进程状态。常见的状态有以下几种:
      1. -D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
      2. -R:该进程正在运行。
      3. -S:该进程处于睡眠状态,可被唤醒。
      4. -T:停止状态,可能是在后台暂停或进程处于除错状态。
      5. -W:内存交互状态(从 2.6 内核开始无效)。
      6. -X:死掉的进程(应该不会出现)。
      7. -Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。
      8. -<:高优先级(以下状态在 BSD 格式中出现)。
      9. -N:低优先级。
      10. -L:被锁入内存。
      11. -s:包含子进程。
      12. -l:多线程(小写 L)。
      13. - :位于后台。
      START 该进程的启动时间。
      TIME 该进程占用 CPU 的运算时间,注意不是系统时间。
      COMMAND 产生此进程的命令名。
      -s: Mengandungi proses kanak-kanak. -l: berbilang benang (huruf kecil L). -: Terletak di latar belakang.
    MULA Masa permulaan proses.
    MASA Proses ini mengambil masa pengkomputeran CPU, sila ambil perhatian bahawa ia bukan masa sistem.
    COMMAND Nama arahan yang menjana proses ini.

    【例 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
    …省略部分输出…

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

    表 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

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

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

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

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

    top 命令的基本格式如下:

    [root@localhost ~]#top [选项]

    选项:

    • -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

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

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

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

    Linux pstree命令:查看进程树

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

    [root@localhost ~]# pstree [选项] [PID或用户名]

    表 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

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

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

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

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

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

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

    lsof 命令的基本格式如下:

    [root@localhost ~]# lsof [选项]

    此命令常用的选项及功能,如表 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
    …省略部分输出…

    这个命令的输出非常多。它会按照 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

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

    相关推荐:《Linux视频教程

Atas ialah kandungan terperinci Apakah arahan untuk menanyakan proses di bawah Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Apakah keadaan proses linux?Artikel seterusnya:Apakah keadaan proses linux?