Linux Admin - Prozessverwaltung

Im Folgenden sind die allgemeinen Befehle aufgeführt, die mit Process Management verwendet werden: bg, fg, nohup, ps, pstree, top, kill, killall, free, uptime, nice.

Mit Prozessen arbeiten

Quick Note: Process PID in Linux

Unter Linux erhält jeder laufende Prozess eine PID oder Prozess-ID-Nummer. Mit dieser PID identifiziert CentOS einen bestimmten Prozess. Wie bereits erwähnt, ist systemd der erste Prozess, der gestartet wird und in CentOS eine PID von 1 erhält.

Pgrep wird verwendet, um die Linux-PID für einen bestimmten Prozessnamen abzurufen.

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

Wie zu sehen ist, gibt der Befehl pgrep die aktuelle PID von systemd zurück.

Grundlegendes CentOS-Prozess- und Jobmanagement in CentOS

Bei der Arbeit mit Prozessen unter Linux ist es wichtig zu wissen, wie grundlegende Vordergrund- und Hintergrundprozesse in der Befehlszeile ausgeführt werden.

  • fg - Den Prozess in den Vordergrund stellen

  • bg - Verschieben Sie den Prozess in den Hintergrund

  • jobs - Liste der aktuellen Prozesse, die an die Shell angehängt sind

  • ctrl+z - Strg + Z-Tastenkombination, um den aktuellen Prozess zu beenden

  • & - Starten Sie den Prozess im Hintergrund

Beginnen wir mit dem Shell-Befehl sleep .sleepwird einfach tun, wie es heißt, für einen definierten Zeitraum schlafen : schlafen .

[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 ~]$

Lassen Sie uns nun den ersten Job in den Vordergrund stellen -

[root@CentOS ~]$ fg 1 
sleep 10

Wenn Sie mitmachen, werden Sie feststellen, dass der Vordergrundjob in Ihrer Shell steckt. Lassen Sie uns nun den Prozess in den Ruhezustand versetzen und im Hintergrund wieder aktivieren.

  • Treffersteuerung + z
  • Geben Sie Folgendes ein: bg 1, senden Sie den ersten Job in den Hintergrund und starten Sie ihn.
[root@CentOS ~]$ fg 1 
sleep 20 
^Z 
[1]+  Stopped                 sleep 20

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

[root@CentOS ~]$

nohup

Wenn Sie von einer Shell oder einem Terminal aus arbeiten, sollten Sie beachten, dass standardmäßig alle an die Shell angehängten Prozesse und Jobs beendet werden, wenn die Shell geschlossen wird oder sich der Benutzer abmeldet. Bei Verwendung von nohup wird der Prozess weiter ausgeführt, wenn sich der Benutzer abmeldet oder die Shell schließt, an die der Prozess angehängt ist.

[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 Befehl

Das psDer Befehl wird häufig von Administratoren verwendet, um Snapshots eines bestimmten Prozesses zu untersuchen. ps wird häufig mit grep verwendet , um einen bestimmten zu analysierenden Prozess herauszufiltern.

[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

Im obigen Befehl sehen wir alle Prozesse, die den Python- Interpreter verwenden. Zu den Ergebnissen gehörte auch unser Befehl grep, der nach der Zeichenfolge Python suchte .

Im Folgenden sind die häufigsten Befehlszeilenoptionen aufgeführt, die mit ps verwendet werden .

Schalter Aktion
ein Schließt Einschränkungen nur der Berichtsprozesse für den aktuellen Benutzer aus
x Zeigt Prozesse an, die nicht an ein tty oder eine Shell angehängt sind
w Formatiert eine breite Ausgabeanzeige der Ausgabe
e Zeigt die Umgebung nach dem Befehl an
-e Wählt alle Prozesse aus
Benutzerdefinierte formatierte Ausgabe
-u Zeigt alle Prozesse eines bestimmten Benutzers an
-C Zeigt alle Prozesse nach Name oder Prozess-ID an
--Sortieren Sortiert die Prozesse per Definition

Um alle Prozesse zu sehen, die vom Niemand- Benutzer verwendet werden -

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

[root@CentOS ~]$

So zeigen Sie alle Informationen zum Firewall- Prozess an:

[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 ~]$

Mal sehen, welche Prozesse am meisten Speicher verbrauchen -

[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 ~]$

Zeigen Sie alle Prozesse nach Benutzer-Centos und Format an und zeigen Sie die benutzerdefinierte Ausgabe an.

[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 Befehl

pstreeist ähnlich wie ps , wird aber nicht oft verwendet. Es zeigt die Prozesse übersichtlicher an.

[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

Die Gesamtausgabe von pstree kann 100 Zeilen überschreiten. Normalerweise gibt ps weitere nützliche Informationen.

top Befehl

topist einer der am häufigsten verwendeten Befehle bei der Behebung von Leistungsproblemen unter Linux. Es ist nützlich für Echtzeitstatistiken und Prozessüberwachung unter Linux. Es folgt die Standardausgabe von top, wenn sie über die Befehlszeile aufgerufen wird.

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

Allgemeine Hotkeys, die beim Ausführen von top verwendet werden (auf Hotkeys kann durch Drücken der Taste zugegriffen werden , während top in Ihrer Shell ausgeführt wird).

Befehl Aktion
b Aktiviert / deaktiviert die Fettmarkierung im oberen Menü
z Wechselt das Farbschema
l Wechselt die durchschnittliche Überschrift der Last
m Wechselt die durchschnittliche Überschrift des Speichers
t Aufgabeninformationsüberschrift
h Hilfemenü
Umschalt + F. Passt die Sortier- und Anzeigefelder an

Im Folgenden finden Sie die allgemeinen Befehlszeilenoptionen für top .

Befehl Aktion
Sortiert nach Spalten (kann mit - oder + vorangestellt werden, um aufsteigend oder absteigend zu sortieren)
-u Zeigt nur Prozesse eines angegebenen Benutzers an
-d Aktualisiert die Verzögerungszeit von top
Gibt eine Liste von Spalten zurück, die oben sortiert werden können

Sortierung Bildschirmoptionen in oben präsentierte mit Shift + F . Dieser Bildschirm ermöglicht die Anpassung der oberen Anzeige- und Sortieroptionen.

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

oben , zeigt die Prozesse für Benutzer rdc und sortiert nach Speichernutzung -

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

Anzeigen gültiger oberer Felder (komprimiert) -

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

Befehl töten

Das killBefehl wird verwendet, um einen Prozess aus der Befehlsshell über seine PID zu beenden. Wenn das Töten eines Prozesses, müssen wir ein Signal angeben , zu senden. Das Signal teilt dem Kernel mit, wie wir den Prozess beenden möchten. Die am häufigsten verwendeten Signale sind -

  • SIGTERMDies wird impliziert, da der Kernel einem Prozess mitteilt, dass er beendet werden soll, sobald dies sicher ist. SIGTERM bietet dem Prozess die Möglichkeit, ordnungsgemäß zu beenden und sichere Beendigungsvorgänge auszuführen.

  • SIGHUPDie meisten Daemons werden neu gestartet, wenn SIGHUP gesendet wird . Dies wird häufig bei Prozessen verwendet, wenn Änderungen an einer Konfigurationsdatei vorgenommen wurden.

  • SIGKILLda SIGTERM dem Auffordern eines Prozesses zum Herunterfahren entspricht. Der Kernel benötigt eine Option, um einen Prozess zu beenden, der den Anforderungen nicht entspricht. Wenn ein Prozess hängen bleibt, wird die Option SIGKILL verwendet, um den Prozess explizit herunterzufahren.

Für eine Liste aller Signale, die mit kill gesendet werden können, kann die Option -l verwendet werden -

[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]#

Neustart des Systems mit 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]#

pkillermöglicht es dem Administrator, ein Kill- Signal mit dem Prozessnamen zu senden .

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

killallwird alle Prozesse beenden. Seien Sie vorsichtig , wenn Sie killall als root verwenden, da dadurch alle Prozesse für alle Benutzer beendet werden.

[root@CentOS]# killall chrome

freier Befehl

freeist ein ziemlich einfacher Befehl, der häufig verwendet wird, um den Speicher eines Systems schnell zu überprüfen. Es zeigt die Gesamtmenge des verwendeten physischen Speichers und des Swap-Speichers an.

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

[root@CentOS]#

netter Befehl

niceermöglicht es einem Administrator, die Planungspriorität eines Prozesses in Bezug auf die CPU-Auslastung festzulegen. Die Schönheit ist im Grunde, wie der Kernel CPU-Zeitscheiben für einen Prozess oder Job plant. Standardmäßig wird davon ausgegangen, dass der Prozess den gleichen Zugriff auf die CPU-Ressourcen erhält.

Lassen Sie uns zunächst top verwenden, um die Qualität der aktuell ausgeführten Prozesse zu überprüfen.

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

Wir möchten uns auf die von NI dargestellte NICE- Spalte konzentrieren . Der Freundlichkeitsbereich kann zwischen -20 und positiv 19 liegen. -20 steht für die höchste gegebene Priorität.

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

Renice

Mit renice können wir die aktuelle Priorität eines bereits laufenden Prozesses ändern.

renice 17 -p 30727

Der obige Befehl verringert die Priorität unseres Ping- Prozessbefehls.