Quản trị viên Linux - Quản lý quy trình

Sau đây là các lệnh phổ biến được sử dụng với Process Management – ​​bg, fg, nohup, ps, pstree, top, kill, killall, free, uptime, hay.

Làm việc với các quy trình

Quick Note: Process PID in Linux

Trong Linux, mọi tiến trình đang chạy đều được cấp một PID hoặc Số ID tiến trình. Đây PID là cách CentOS xác định một quy trình cụ thể. Như chúng ta đã thảo luận, systemd là quy trình đầu tiên được bắt đầu và cung cấp PID là 1 trong CentOS.

Pgrep được sử dụng để lấy Linux PID cho một tên quy trình nhất định.

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

Như đã thấy, lệnh pgrep trả về PID hiện tại của systemd.

Quy trình CentOS cơ bản và Quản lý công việc trong CentOS

Khi làm việc với các quy trình trong Linux, điều quan trọng là phải biết các quy trình nền trước và nền cơ bản được thực hiện như thế nào tại dòng lệnh.

  • fg - Đưa quá trình lên tiền cảnh

  • bg - Quá trình chuyển sang nền

  • jobs - Danh sách các quy trình hiện tại được đính kèm với shell

  • ctrl+z - Tổ hợp phím Control + z để ngủ quá trình hiện tại

  • & - Bắt đầu quá trình trong nền

Hãy bắt đầu sử dụng lệnh shell sleep .sleepchỉ đơn giản là sẽ làm như nó được đặt tên, ngủ trong một khoảng thời gian xác định: ngủ .

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

Bây giờ, hãy đưa công việc đầu tiên lên phía trước -

[root@CentOS ~]$ fg 1 
sleep 10

Nếu bạn đang theo dõi, bạn sẽ nhận thấy công việc tiền cảnh bị mắc kẹt trong trình bao của bạn. Bây giờ, hãy đặt quá trình ở chế độ ngủ, sau đó bật lại nó ở chế độ nền.

  • Nhấn điều khiển + z
  • Nhập: bg 1, gửi công việc đầu tiên vào nền và bắt đầu nó.
[root@CentOS ~]$ fg 1 
sleep 20 
^Z 
[1]+  Stopped                 sleep 20

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

[root@CentOS ~]$

nohup

Khi làm việc từ shell hoặc terminal, cần lưu ý rằng theo mặc định, tất cả các tiến trình và công việc được gắn vào shell sẽ kết thúc khi đóng shell hoặc người dùng đăng xuất. Khi sử dụng nohup , quy trình sẽ tiếp tục chạy nếu người dùng đăng xuất hoặc đóng shell mà quy trình được đính kèm.

[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

Lệnh ps

Các pslệnh thường được quản trị viên sử dụng để điều tra ảnh chụp nhanh của một quy trình cụ thể. ps thường được sử dụng với grep để lọc ra một quá trình cụ thể để phân tích.

[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

Trong lệnh trên, chúng ta thấy tất cả các quá trình sử dụng trình thông dịch python . Cũng đi kèm với kết quả là lệnh grep của chúng tôi, tìm kiếm chuỗi python .

Sau đây là các công tắc dòng lệnh phổ biến nhất được sử dụng với ps .

Công tắc điện Hoạt động
a Chỉ loại trừ các ràng buộc của các quy trình báo cáo cho người dùng hiện tại
x Hiển thị các quy trình không được gắn với tty hoặc shell
w Định dạng hiển thị đầu ra rộng của đầu ra
e Hiển thị môi trường sau lệnh
-e Chọn tất cả các quy trình
-o Đầu ra được định dạng do người dùng xác định
-u Hiển thị tất cả các quy trình của một người dùng cụ thể
-C Hiển thị tất cả các quy trình theo tên hoặc id quy trình
--sort Sắp xếp các quy trình theo định nghĩa

Để xem tất cả các quy trình đang được sử dụng bởi không ai -

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

[root@CentOS ~]$

Để xem tất cả thông tin về quá trình 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 ~]$

Hãy xem quy trình nào đang tiêu tốn nhiều bộ nhớ nhất -

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

Xem tất cả các quy trình theo centos người dùng và định dạng, hiển thị đầu ra tùy chỉnh -

[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

lệnh pstree

pstreetương tự như ps nhưng không thường được sử dụng. Nó hiển thị các quy trình theo kiểu cây gọn gàng hơn.

[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

Tổng sản lượng từ pstree có thể vượt quá 100 dòng. Thông thường, ps sẽ đưa ra nhiều thông tin hữu ích hơn.

lệnh hàng đầu

toplà một trong những lệnh thường được sử dụng nhất khi khắc phục sự cố hiệu suất trong Linux. Nó hữu ích cho các số liệu thống kê thời gian thực và giám sát quá trình trong Linux. Sau đây là đầu ra mặc định của đầu khi được hiển thị từ dòng lệnh.

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

Các phím nóng thường được sử dụng khi đang chạy trên cùng ( các phím nóng được truy cập bằng cách nhấn phím khi trên cùng đang chạy trong vỏ của bạn).

Chỉ huy Hoạt động
b Bật / tắt đánh dấu đậm trên menu trên cùng
z Chu kỳ bảng màu
l Xoay tiêu đề trung bình tải
m Xoay tiêu đề trung bình của bộ nhớ
t Tiêu đề thông tin công việc
h Danh sách trợ giúp
Shift + F Tùy chỉnh các trường sắp xếp và hiển thị

Sau đây là các công tắc dòng lệnh phổ biến cho hàng đầu .

Chỉ huy Hoạt động
-o Sắp xếp theo cột (có thể thêm dấu - hoặc + để sắp xếp tăng dần hoặc giảm dần)
-u Chỉ hiển thị các quy trình từ một người dùng được chỉ định
-d Cập nhật thời gian trễ hàng đầu
-O Trả về danh sách các cột mà trên cùng có thể áp dụng sắp xếp

Sắp xếp tùy chọn màn hình trong đầu, trình bày sử dụng Shift + F . Màn hình này cho phép tùy chỉnh các tùy chọn hiển thị và sắp xếp hàng đầu .

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

trên cùng , hiển thị các quy trình cho rdc người dùng và được sắp xếp theo mức sử dụng bộ nhớ -

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

Hiển thị các trường trên cùng hợp lệ (cô đọng) -

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

lệnh giết

Các killlệnh được sử dụng để giết một tiến trình từ trình bao lệnh thông qua PID của nó. Khi giết một tiến trình, chúng ta cần chỉ định một tín hiệu để gửi. Tín hiệu cho phép hạt nhân biết cách chúng ta muốn kết thúc quá trình. Các tín hiệu được sử dụng phổ biến nhất là -

  • SIGTERMđược ngụ ý vì hạt nhân cho phép một quá trình biết rằng nó sẽ sớm dừng lại khi thấy an toàn. SIGTERM tạo cơ hội cho quá trình thoát ra một cách duyên dáng và thực hiện các thao tác thoát an toàn.

  • SIGHUPhầu hết các daemon sẽ khởi động lại khi được gửi SIGHUP . Điều này thường được sử dụng trên các quy trình khi các thay đổi đã được thực hiện đối với tệp cấu hình.

  • SIGKILLSIGTERM tương đương với việc yêu cầu một quá trình ngừng hoạt động. Kernel cần một tùy chọn để kết thúc một quá trình sẽ không tuân thủ các yêu cầu. Khi một quá trình bị treo, tùy chọn SIGKILL được sử dụng để tắt quá trình một cách rõ ràng.

Để có danh sách tắt tất cả các tín hiệu có thể được gửi với tùy chọn kill , bạn có thể sử dụng tùy chọn -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]#

Sử dụng SIGHUP để khởi động lại hệ thống.

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

pkillsẽ cho phép các quản trị viên để gửi một kill tín hiệu bằng tên quá trình.

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

killallsẽ giết tất cả các quá trình. Hãy cẩn thận khi sử dụng killall dưới dạng root, vì nó sẽ giết tất cả các quy trình của tất cả người dùng.

[root@CentOS]# killall chrome

Lệnh miễn phí

freelà một lệnh khá đơn giản thường dùng để kiểm tra nhanh bộ nhớ của hệ thống. Nó hiển thị tổng dung lượng bộ nhớ vật lý và bộ nhớ hoán đổi đã sử dụng.

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

[root@CentOS]#

Lệnh tốt

nicesẽ cho phép quản trị viên đặt mức ưu tiên lập lịch của một quy trình về cách sử dụng CPU. Sự thú vị về cơ bản là cách hạt nhân sẽ lên lịch các lát thời gian CPU cho một quá trình hoặc công việc. Theo mặc định, nó được giả định là tiến trình được cấp quyền truy cập bình đẳng vào tài nguyên CPU.

Đầu tiên, hãy sử dụng top để kiểm tra tính tốt đẹp của các quy trình hiện đang chạy.

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

Chúng tôi muốn tập trung vào cột NICE do NI mô tả . Phạm vi độ đẹp có thể nằm trong khoảng từ -20 đến dương 19. -20 thể hiện mức độ ưu tiên cao nhất.

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

Lại đẹp

renice cho phép chúng tôi thay đổi mức độ ưu tiên hiện tại của một quy trình đang chạy.

renice 17 -p 30727

Lệnh trên sẽ giảm mức độ ưu tiên của lệnh xử lý ping của chúng ta .