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.