Administrator systemu Linux - zarządzanie procesami
Poniżej przedstawiono typowe polecenia używane w zarządzaniu procesami - bg, fg, nohup, ps, pstree, top, kill, killall, free, uptime, nice.
Pracuj z procesami
Quick Note: Process PID in Linux
W Linuksie każdy działający proces otrzymuje numer PID lub numer identyfikacyjny procesu. Ten PID to sposób, w jaki CentOS identyfikuje określony proces. Jak już omówiliśmy, systemd jest pierwszym uruchomionym procesem , któremu nadano PID równy 1 w CentOS.
Pgrep służy do pobierania Linux PID dla danej nazwy procesu.
[root@CentOS]# pgrep systemd
1
[root@CentOS]#
Jak widać, polecenie pgrep zwraca bieżący PID z systemd.
Podstawowy proces CentOS i zarządzanie zadaniami w CentOS
Podczas pracy z procesami w systemie Linux ważne jest, aby wiedzieć, jak podstawowe procesy pierwszego planu i tła są wykonywane w wierszu poleceń.
fg - Przenosi proces na pierwszy plan
bg - Przenosi proces w tło
jobs - Lista bieżących procesów podłączonych do powłoki
ctrl+z - Kombinacja klawiszy Control + Z, aby uśpić bieżący proces
& - Rozpoczyna proces w tle
Zacznijmy używać polecenia powłoki sleep .sleeppo prostu zrobi tak, jak jest nazwana, spać przez określony czas: spać .
[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 ~]$
Teraz przenieśmy pierwszą pracę na pierwszy plan -
[root@CentOS ~]$ fg 1
sleep 10
Jeśli podążasz dalej, zauważysz, że zadanie na pierwszym planie utknęło w twojej powłoce. Teraz uśpijmy proces, a następnie włączmy go ponownie w tle.
- Hit control + z
- Wpisz: bg 1, wysyłając pierwszą pracę w tle i uruchamiając ją.
[root@CentOS ~]$ fg 1
sleep 20
^Z
[1]+ Stopped sleep 20
[root@CentOS ~]$ bg 1
[1]+ sleep 20 &
[root@CentOS ~]$
nohup
Podczas pracy z powłoki lub terminala warto zauważyć, że domyślnie wszystkie procesy i zadania podłączone do powłoki kończą się, gdy powłoka jest zamknięta lub użytkownik się wyloguje. Podczas korzystania z nohup proces będzie kontynuowany, jeśli użytkownik wyloguje się lub zamknie powłokę, do której jest podłączony.
[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 Command
Plik psPolecenie jest powszechnie używane przez administratorów do badania migawek określonego procesu. ps jest powszechnie używany z grep do odfiltrowania określonego procesu do analizy.
[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
W powyższym poleceniu widzimy wszystkie procesy korzystające z interpretera Pythona . Do wyników dołączono również nasze polecenie grep, które szukało ciągu znaków python .
Poniżej przedstawiono najpopularniejsze przełączniki wiersza poleceń używane z ps .
Przełącznik | Akcja |
---|---|
za | Wyklucza ograniczenia tylko procesów raportowania dla bieżącego użytkownika |
x | Pokazuje procesy niepodłączone do terminala lub powłoki |
w | Formatuje szerokie wyświetlanie danych wyjściowych |
mi | Pokazuje środowisko po poleceniu |
-mi | Wybiera wszystkie procesy |
-o | Sformatowane wyjście zdefiniowane przez użytkownika |
-u | Pokazuje wszystkie procesy określonego użytkownika |
-DO | Pokazuje wszystkie procesy według nazwy lub identyfikatora procesu |
--sortować | Sortuje procesy według definicji |
Aby zobaczyć wszystkie procesy używane przez użytkownika nobody -
[root@CentOS ~]$ ps -u nobody
PID TTY TIME CMD
1853 ? 00:00:00 dnsmasq
[root@CentOS ~]$
Aby zobaczyć wszystkie informacje o procesie 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 ~]$
Zobaczmy, które procesy zużywają najwięcej pamięci -
[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 ~]$
Zobacz wszystkie procesy według centów użytkownika i formatu, wyświetlając niestandardowe dane wyjściowe -
[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 Command
pstreejest podobny do ps, ale nie jest często używany. Wyświetla procesy w bardziej uporządkowanej formie drzewa.
[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
Całkowity wynik z pstree może przekroczyć 100 linii. Zwykle ps poda bardziej przydatne informacje.
góra Polecenie
topjest jednym z najczęściej używanych poleceń podczas rozwiązywania problemów z wydajnością w systemie Linux. Jest to przydatne do tworzenia statystyk w czasie rzeczywistym i monitorowania procesów w systemie Linux. Poniżej przedstawiono domyślne wyjście polecenia top po wywołaniu z wiersza poleceń.
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
Typowe klawisze skrótu używane podczas uruchamiania na górze ( dostęp do klawiszy skrótu uzyskuje się po naciśnięciu klawisza, gdy top działa w powłoce).
Komenda | Akcja |
---|---|
b | Włącza / wyłącza pogrubienie w górnym menu |
z | Zmienia schemat kolorów |
l | Cyklicznie średni kurs obciążenia |
m | Cyklicznie średni nagłówek pamięci |
t | Nagłówek informacji o zadaniu |
godz | Menu pomocy |
Shift + F. | Dostosowuje sortowanie i pola wyświetlania |
Poniżej przedstawiono typowe przełączniki wiersza poleceń dla top .
Komenda | Akcja |
---|---|
-o | Sortuje według kolumny (można poprzedzić - lub +, aby posortować rosnąco lub malejąco) |
-u | Pokazuje tylko procesy od określonego użytkownika |
-re | Aktualizuje czas opóźnienia top |
-O | Zwraca listę kolumn, w których u góry można zastosować sortowanie |
Sortowanie ekran opcji w górę, przedstawione za pomocą Shift + F . Ten ekran umożliwia dostosowanie górnych opcji wyświetlania i sortowania.
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
u góry , pokazując procesy dla użytkownika rdc i posortowane według użycia pamięci -
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
Wyświetlanie prawidłowych górnych pól (skondensowane) -
[centos@CentOS ~]$ top -O
PID
PPID
UID
USER
RUID
RUSER
SUID
SUSER
GID
GROUP
PGRP
TTY
TPGID
kill Command
Plik killpolecenie służy do zabijania procesu z powłoki poleceń za pośrednictwem jego PID. Po zabiciu procesu, musimy podać sygnał do wysłania. Sygnał pozwala jądru wiedzieć, jak chcemy zakończyć proces. Najczęściej używanymi sygnałami są -
SIGTERMjest implikowane, ponieważ jądro informuje proces, że powinien się zatrzymać, gdy jest to bezpieczne. SIGTERM daje procesowi możliwość bezpiecznego wyjścia i wykonania operacji bezpiecznego wyjścia.
SIGHUPwiększość demonów uruchomi się ponownie po wysłaniu SIGHUP . Jest to często używane w procesach, gdy wprowadzono zmiany w pliku konfiguracyjnym.
SIGKILLponieważ SIGTERM jest równoważne z żądaniem zamknięcia procesu. Jądro potrzebuje opcji zakończenia procesu, który nie będzie spełniał żądań. Gdy proces jest zawieszony, opcja SIGKILL jest używana do jawnego zamykania procesu.
Aby wyświetlić listę wszystkich sygnałów, które można wysłać za pomocą opcji kill, można użyć opcji -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]#
Użycie SIGHUP do ponownego uruchomienia systemu.
[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]#
pkillpozwoli administratorowi na wysłanie sygnału zabicia według nazwy procesu.
[root@CentOS]# pgrep ping
19450
[root@CentOS]# pkill -9 ping
[root@CentOS]# pgrep ping
[root@CentOS]#
killallzabije wszystkie procesy. Uważaj, używając funkcji killall jako root, ponieważ spowoduje to zabicie wszystkich procesów dla wszystkich użytkowników.
[root@CentOS]# killall chrome
darmowe polecenie
freejest dość prostym poleceniem, często używanym do szybkiego sprawdzenia pamięci systemu. Wyświetla całkowitą ilość używanej pamięci fizycznej i pamięci wymiany.
[root@CentOS]# free
total used free shared buff/cache available
Mem: 1879668 526284 699796 10304 653588 1141412
Swap: 3145724 0 3145724
[root@CentOS]#
niezłe polecenie
nicepozwoli administratorowi ustawić priorytet planowania procesu pod względem wykorzystania procesora. Przyjemność to w zasadzie sposób, w jaki jądro planuje przedziały czasu procesora dla procesu lub zadania. Domyślnie zakłada się, że proces ma równy dostęp do zasobów procesora.
Najpierw użyjmy top, aby sprawdzić zgodność aktualnie uruchomionych procesów.
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
Chcemy skupić się na kolumnie NICE przedstawionej przez NI . Zakres uprzejmości może wynosić od -20 do dodatniej 19. -20 oznacza najwyższy podany priorytet.
nohup nice --20 ping www.google.com &
renice
renice pozwala nam zmienić bieżący priorytet procesu, który już działa.
renice 17 -p 30727
Powyższe polecenie obniży priorytet naszego polecenia procesu ping .