Linux管理者-プロセス管理

プロセス管理で使用される一般的なコマンドは次のとおりです– bg、fg、nohup、ps、pstree、top、kill、killall、free、uptime、nice。

プロセスの操作

Quick Note: Process PID in Linux

Linuxでは、実行中のすべてのプロセスにPIDまたはプロセスID番号が割り当てられます。このPIDは、CentOSが特定のプロセスを識別する方法です。すでに説明したように、systemdは、CentOSで開始されPIDが1の最初のプロセスです。

Pgrep 指定されたプロセス名のLinuxPIDを取得するために使用されます。

[root@CentOS]# pgrep systemd 
1 
[root@CentOS]#

ご覧のとおり、pgrepコマンドはsystemdの現在のPIDを返します。

CentOSの基本的なCentOSプロセスとジョブ管理

Linuxでプロセスを操作するときは、基本的なフォアグラウンドおよびバックグラウンドプロセスがコマンドラインでどのように実行されるかを知ることが重要です。

  • fg −プロセスを前面に出します

  • bg −プロセスをバックグラウンドに移動します

  • jobs −シェルに接続されている現在のプロセスのリスト

  • ctrl+z −現在のプロセスをスリープ状態にするためのControl + zキーの組み合わせ

  • & −バックグラウンドでプロセスを開始します

シェルコマンドsleepの使用を開始しましょう。sleep名前のとおり、定義された期間スリープします:sleep

[root@CentOS ~]$ jobs

[root@CentOS ~]$ sleep 10 & 
[1] 12454 

[root@CentOS ~]$ sleep 20 & 
[2] 12479

[root@CentOS ~]$ jobs 
[1]-  Running                 sleep 10 & 
[2]+  Running                 sleep 20 &

[cnetos@CentOS ~]$

それでは、最初の仕事を前面に出しましょう-

[root@CentOS ~]$ fg 1 
sleep 10

フォローしていると、フォアグラウンドジョブがシェルでスタックしていることに気付くでしょう。それでは、プロセスをスリープ状態にしてから、バックグラウンドで再度有効にしてみましょう。

  • コントロール+ zを押す
  • タイプ:bg 1、最初のジョブをバックグラウンドに送信して開始します。
[root@CentOS ~]$ fg 1 
sleep 20 
^Z 
[1]+  Stopped                 sleep 20

[root@CentOS ~]$ bg 1 
[1]+ sleep 20 &

[root@CentOS ~]$

nohup

シェルまたはターミナルから作業する場合、デフォルトでは、シェルが閉じられるか、ユーザーがログアウトすると、シェルに接続されているすべてのプロセスとジョブが終了することに注意してください。nohupを使用する場合、ユーザーがログアウトするか、プロセスが接続されているシェルを閉じると、プロセスは引き続き実行されます。

[root@CentOS]# nohup ping www.google.com & 
[1] 27299 
nohup: ignoring input and appending output to ‘nohup.out’

[root@CentOS]# pgrep ping 
27299

[root@CentOS]# kill -KILL `pgrep ping` 
[1]+  Killed                  nohup ping www.google.com

[root@CentOS rdc]# cat nohup.out  
PING www.google.com (216.58.193.68) 56(84) bytes of data. 
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 1 ttl = 128
time = 51.6 ms 
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 2 ttl = 128
time = 54.2 ms 
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 3 ttl = 128
time = 52.7 ms

psコマンド

ザ・ psコマンドは通常、特定のプロセスのスナップショットを調査するために管理者によって使用されます。psは、分析する特定のプロセスを除外するためにgrepで一般的に使用されます。

[root@CentOS ~]$ ps axw | grep python 
762   ?        Ssl    0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork -nopid 
1296  ?        Ssl    0:00 /usr/bin/python -Es /usr/sbin/tuned -l -P 
15550 pts/0    S+     0:00 grep --color=auto python

上記のコマンドでは、Pythonインタープリターを使用するすべてのプロセスが表示されます。結果には、文字列pythonを検索するgrepコマンドも含まれていました。

以下は、psで使用される最も一般的なコマンドラインスイッチです。

スイッチ アクション
a 現在のユーザーのレポートプロセスのみの制約を除外します
バツ ttyまたはシェルに接続されていないプロセスを表示します
w 出力のワイド出力表示をフォーマットします
e コマンド後の環境を表示します
-e すべてのプロセスを選択します
-o ユーザー定義のフォーマットされた出力
-u 特定のユーザーによるすべてのプロセスを表示します
-C 名前またはプロセスIDですべてのプロセスを表示します
- ソート 定義によってプロセスをソートします

誰も使用していないすべてのプロセスを表示するには-

[root@CentOS ~]$ ps -u nobody 
PID TTY          TIME CMD 
1853 ?        00:00:00 dnsmasq 

[root@CentOS ~]$

Firewalldプロセスに関するすべての情報を表示するには-

[root@CentOS ~]$ ps -wl -C firewalld 
F   S   UID   PID   PPID   C   PRI   NI   ADDR   SZ   WCHAN   TTY   TIME      CMD
0   S     0   762      1   0    80   0     -   81786  poll_s   ?   00:00:01 firewalld 

[root@CentOS ~]$

どのプロセスが最も多くのメモリを消費しているかを見てみましょう-

[root@CentOS ~]$ ps aux  --sort=-pmem | head -10 
USER       PID   %CPU   %MEM   VSZ     RSS   TTY   STAT   START   TIME   COMMAND 
cnetos     6130   0.7   5.7   1344512 108364  ?      Sl   02:16   0:29  /usr/bin/gnome-shell 
cnetos     6449   0.0   3.4   1375872 64440   ?      Sl   02:16   0:00  /usr/libexec/evolution-calendar-factory 
root       5404   0.6   2.1   190256  39920 tty1     Ssl+ 02:15   0:27  /usr/bin/Xorg :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-iDefCt/database -seat seat0 -nolisten tcp vt1 
cnetos     6296   0.0   1.7   1081944 32136   ?      Sl   02:16   0:00  /usr/libexec/evolution/3.12/evolution-alarm-notify 
cnetos     6350   0.0   1.5   560728  29844   ?      Sl   02:16   0:01  /usr/bin/prlsga 
cnetos     6158   0.0   1.4   1026956 28004   ?      Sl   02:16   0:00  /usr/libexec/gnome-shell-calendar-server 
cnetos     6169   0.0   1.4   1120028 27576   ?      Sl   02:16   0:00  /usr/libexec/evolution-source-registry 
root       762    0.0   1.4   327144  26724   ?      Ssl  02:09   0:01  /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid 
cnetos     6026   0.0  1.4 1090832 26376      ?      Sl   02:16   0:00  /usr/libexec/gnome-settings-daemon

[root@CentOS ~]$

カスタム出力を表示して、ユーザーのセントとフォーマットですべてのプロセスを表示します-

[cnetos@CentOS ~]$ ps -u cnetos -o pid,uname,comm 
   PID    USER     COMMAND 
   5802  centos   gnome-keyring-d 
   5812  cnetos   gnome-session 
   5819  cnetos   dbus-launch 
   5820  cnetos   dbus-daemon 
   5888  cnetos   gvfsd 
   5893  cnetos   gvfsd-fuse 
   5980  cnetos   ssh-agent   
   5996  cnetos   at-spi-bus-laun

pstreeコマンド

pstreepsに似ていますが、あまり使用されません。プロセスをきちんとしたツリー形式で表示します。

[centos@CentOS ~]$ pstree 
  systemd─┬─ModemManager───2*[{ModemManager}] 
          ├─NetworkManager─┬─dhclient 
          │                └─2*[{NetworkManager}] 
          ├─2*[abrt-watch-log] 
          ├─abrtd 
          ├─accounts-daemon───2*[{accounts-daemon}] 
          ├─alsactl 
          ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon} 
          │                 └─3*[{at-spi-bus-laun}] 
          ├─at-spi2-registr───2*[{at-spi2-registr}] 
          ├─atd 
          ├─auditd─┬─audispd─┬─sedispatch 
          │        │         └─{audispd} 
          │        └─{auditd} 
          ├─avahi-daemon───avahi-daemon 
          ├─caribou───2*[{caribou}] 
          ├─cgrulesengd 
          ├─chronyd 
          ├─colord───2*[{colord}] 
          ├─crond 
          ├─cupsd

pstreeからの合計出力は100行を超える可能性があります。通常、psはより有用な情報を提供します。

トップコマンド

topLinuxのパフォーマンスの問題をトラブルシューティングするときに最もよく使用されるコマンドの1つです。Linuxでのリアルタイムの統計とプロセスの監視に役立ちます。以下は、コマンドラインから起動したときのtopのデフォルト出力です。

Tasks: 170 total,   1 running, 169 sleeping,   0 stopped,   0 zombie 
%Cpu(s):  2.3 us,  2.0 sy,  0.0 ni, 95.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
KiB Mem :  1879668 total,   177020 free,   607544 used,  1095104 buff/cache 
KiB Swap:  3145724 total,  3145428 free,      296 used.  1034648 avail Mem 
 
PID    USER     PR   NI    VIRT     RES   SHR    S  %CPU  %MEM   TIME+   COMMAND
5404   root     20   0    197832   48024  6744   S   1.3   2.6  1:13.22   Xorg
8013   centos   20   0    555316   23104  13140  S   1.0   1.2  0:14.89   gnome-terminal-
6339   centos   20   0    332336   6016   3248   S   0.3   0.3  0:23.71   prlcc
6351   centos   20   0    21044    1532   1292   S   0.3   0.1  0:02.66   prlshprof

topの実行中に使用される一般的なホットキー(topがシェルで実行されているときにキーを押すとホットキーにアクセスします)。

コマンド アクション
b トップメニューの太字の強調表示を有効/無効にします
z 配色を循環させます
l 負荷平均方位を循環させます
m メモリの平均見出しを循環させます
t タスク情報の見出し
h ヘルプメニュー
Shift + F 並べ替えと表示フィールドをカスタマイズします

以下は、topの一般的なコマンドラインスイッチです。

コマンド アクション
-o 列で並べ替えます(-または+を前に付けて、昇順または降順で並べ替えることができます)
-u 指定されたユーザーからのプロセスのみを表示します
-d トップの遅延時間を更新します
-O トップがソートを適用できる列のリストを返します

Shift + Fを使用して表示される、上部の並べ替えオプション画面。この画面では、上部の表示と並べ替えのオプションをカスタマイズできます。

Fields Management for window 1:Def, whose current sort field is %MEM 
Navigate with Up/Dn, Right selects for move then <Enter> or Left commits, 
 'd' or <Space> toggles display, 's' sets sort.  Use 'q' or <Esc> to end!
 
* PID     = Process Id             TGID    = Thread Group Id      
* USER    = Effective User Name    ENVIRON = Environment vars     
* PR      = Priority               vMj     = Major Faults delta   
* NI      = Nice Value             vMn     = Minor Faults delta   
* VIRT    = Virtual Image (KiB)    USED    = Res+Swap Size (KiB)  
* RES     = Resident Size (KiB)    nsIPC   = IPC namespace Inode  
* SHR     = Shared Memory (KiB)    nsMNT   = MNT namespace Inode
* S       = Process Status         nsNET   = NET namespace Inode  
* %CPU    = CPU Usage              nsPID   = PID namespace Inode  
* %MEM    = Memory Usage (RES)     nsUSER  = USER namespace Inode 
* TIME+   = CPU Time, hundredths   nsUTS   = UTS namespace Inode  
* COMMAND = Command Name/Line 
PPID    = Parent Process pid
UID     = Effective User Id

、ユーザーrdcのプロセスを示し、メモリ使用量でソート-

PID   USER  %MEM  PR  NI    VIRT    RES    SHR    S %CPU     TIME+    COMMAND
 6130  rdc    6.2  20   0  1349592  117160  33232  S  0.0   1:09.34    gnome-shell
 6449  rdc    3.4  20   0  1375872   64428  21400  S  0.0   0:00.43    evolution-calen
 6296  rdc    1.7  20   0  1081944   32140  22596  S  0.0   0:00.40    evolution-alarm
 6350  rdc    1.6  20   0   560728   29844   4256  S  0.0   0:10.16    prlsga
 6281  rdc    1.5  20   0  1027176   28808  17680  S  0.0   0:00.78    nautilus
 6158  rdc    1.5  20   0  1026956   28004  19072  S  0.0   0:00.20    gnome-shell-cal

有効なトップフィールドの表示(要約)-

[centos@CentOS ~]$ top -O 
PID 
PPID 
UID 
USER 
RUID 
RUSER 
SUID 
SUSER 
GID 
GROUP 
PGRP 
TTY 
TPGID

コマンドを殺す

ザ・ killcommandは、PIDを介してコマンドシェルからプロセスを強制終了するために使用されます。ときに殺す過程を、私たちは、送信する信号を指定する必要があります。このシグナルは、プロセスをどのように終了するかをカーネルに知らせます。最も一般的に使用される信号は次のとおりです。

  • SIGTERMカーネルがプロセスに安全に停止する必要があることを通知するため、これは暗黙的に示されます。SIGTERMは、プロセスを正常に終了し、安全な終了操作を実行する機会を提供します。

  • SIGHUPほとんどのデーモンは、SIGHUPが送信されると再起動します。これは、構成ファイルに変更が加えられたプロセスでよく使用されます。

  • SIGKILL以来、SIGTERMシャットダウンするプロセスを尋ねると同等です。カーネルには、要求に準拠しないプロセスを終了するオプションが必要です。プロセスがハングした場合、SIGKILLオプションを使用して、プロセスを明示的にシャットダウンします。

killで送信できるすべてのシグナルのリストには、-lオプションを使用できます-

[root@CentOS]# kill -l 
1) SIGHUP           2) SIGINT         3) SIGQUIT        4) SIGILL         5) SIGTRAP
6) SIGABRT          7) SIGBUS         8) SIGFPE         9) SIGKILL       10) SIGUSR1
11) SIGSEGV        12) SIGUSR2       13) SIGPIPE       14) SIGALRM       15) SIGTERM
16) SIGSTKFLT      17) SIGCHLD       18) SIGCONT       19) SIGSTOP       20) SIGTSTP
21) SIGTTIN        22) SIGTTOU       23) SIGURG        24) SIGXCPU       25) SIGXFSZ
26) SIGVTALRM      27) SIGPROF       28) SIGWINCH      29) SIGIO         30) SIGPWR
31) SIGSYS         34) SIGRTMIN      35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4     39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9     44) SIGRTMIN+10   45) SIGRTMIN+11   46) SIGRTMIN+12   47) SIGRTMIN+13 
48) SIGRTMIN+14    49) SIGRTMIN+15   50) SIGRTMAX-14   51) SIGRTMAX-13   52) SIGRTMAX-12 
53) SIGRTMAX-11    54) SIGRTMAX-10   55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6     59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1     64) SIGRTMAX

[root@CentOS rdc]#

SIGHUPを使用してシステムを再起動します。

[root@CentOS]# pgrep systemd 
1 
464 
500 
643 
15071

[root@CentOS]# kill -HUP 1

[root@CentOS]# pgrep systemd
1 
464 
500 
643 
15196 
15197 
15198

[root@CentOS]#

pkill管理者がプロセス名でkillシグナルを送信できるようにします。

[root@CentOS]# pgrep ping 
19450 
[root@CentOS]# pkill -9 ping 
[root@CentOS]# pgrep ping 
[root@CentOS]#

killallすべてのプロセスを強制終了します。すべてのユーザーのすべてのプロセスを強制終了するため、rootとしてkillallを使用する場合は注意が必要です。

[root@CentOS]# killall chrome

無料コマンド

freeは、システムのメモリをすばやくチェックするためによく使用される非常に単純なコマンドです。使用されている物理メモリとスワップメモリ​​の合計量が表示されます。

[root@CentOS]# free 
             total       used      free      shared      buff/cache      available 
Mem:        1879668     526284    699796     10304        653588          1141412 
Swap:       3145724          0    3145724

[root@CentOS]#

素敵なコマンド

nice管理者は、CPU使用率の観点からプロセスのスケジューリング優先度を設定できます。基本的に、カーネルがプロセスまたはジョブのCPUタイムスライスをスケジュールする方法が優れています。デフォルトでは、プロセスにはCPUリソースへの同等のアクセス権が与えられていると想定されています。

まず、topを使用して、現在実行中のプロセスの良さを確認しましょう。

PID   USER   PR   NI    VIRT    RES    SHR   S  %CPU  %MEM     TIME+    COMMAND
28    root   39   19       0      0      0   S  0.0   0.0    0:00.17    khugepaged
690   root   39   19   16808   1396   1164   S  0.0   0.1    0:00.01    alsactl]
9598  rdc    39   19  980596  21904  10284   S  0.0   1.2    0:00.27    tracker-extract
9599  rdc    39   19  469876   9608   6980   S  0.0   0.5    0:00.04    tracker-miner-a
9609  rdc    39   19  636528  13172   8044   S  0.0   0.7    0:00.12    tracker-miner-f
9611  rdc    39   19  469620   8984   6496   S  0.0   0.5    0:00.02    tracker-miner-u
27    root   25    5       0      0      0   S  0.0   0.0    0:00.00    ksmd
637   rtkit  21    1  164648   1276   1068   S  0.0   0.1    0:00.11    rtkit-daemon
1     root   20    0  128096   6712   3964   S  0.3   0.4    0:03.57    systemd
2     root   20    0       0      0      0   S  0.0   0.0    0:00.01    kthreadd
3     root   20    0       0      0      0   S  0.0   0.0    0:00.50    ksoftirqd/0
7     root   20    0       0      0      0   S  0.0   0.0    0:00.00    migration/0
8     root   20    0       0      0      0   S  0.0   0.0    0:00.00    rcu_bh
9     root   20    0       0      0      0   S  0.0   0.0    0:02.07    rcu_sched

NIが描いたNICEコラムに焦点を当てたいと思います。優しさの範囲は、-20から正の19までの範囲です。-20は、与えられた最高の優先順位を表します。

nohup nice --20 ping www.google.com &

renice

reniceを使用すると、すでに実行されているプロセスの現在の優先度を変更できます。

renice 17 -p 30727

上記のコマンドは、pingプロセスコマンドの優先度を下げます