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.
SIGKILLvì SIGTERM 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 .