linux上的進程查看及管理工具: pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup,nice,renice,killall。。。 linux開機時,會啟動第一個進程,由這個進程去啟 ...
linux上的進程查看及管理工具:
pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup,nice,renice,killall。。。
linux開機時,會啟動第一個進程,由這個進程去啟動別的進程,這個第一個進程在centos5,6,7上實現的都不一樣。
- centos5:Sysv init:串列通過腳本去啟動別的進程,速度慢
- centos6:upstart:參考ubuntu的upstart,並行啟動腳本,速度快
- centos7:systemd:參考mac啟動的過程,速度更快
這個第一個進程:/sbin/init
在centos7上執行pstree:可以看到父進程是systemd
# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─2*[VBoxClient───VBoxClient]
├─2*[VBoxClient───VBoxClient───{VBoxClient}]
├─VBoxClient───VBoxClient───2*[{VBoxClient}]
├─VBoxService───7*[{VBoxService}]
├─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}]
ps命令:顯示當前時間點進程的狀態
ps命令為什麼能知道所有進程的狀態呢?我們知道進程是由內核管理的。每個進程對應內核來說,就是某個變數,內核把這個變數的信息存放在/proc/進程ip/目錄下,ps命令就是讀這些目錄下的文件,來取得所有進程的狀態的。
內核參數:linux哲學是一切皆文件,所以內核參數也是文件。
- 可設置其參數值,而改變內核的允許特性的參數存放在:/proc/sys目錄下。
- 狀態變數:用於保存內核中的所有進程的信息,僅用於查看,存放在:/proc/進程id目錄下。
查看/proc/1下的文件(也就是1號進程,也就是systemd進程),每個文件存放的是內核參數的值
# pwd
/proc/1
# ls
attr cmdline environ io mem ns pagemap sched stack task
autogroup comm exe limits mountinfo numa_maps patch_state schedstat stat timers
auxv coredump_filter fd loginuid mounts oom_adj personality sessionid statm uid_map
cgroup cpuset fdinfo map_files mountstats oom_score projid_map setgroups status wchan
clear_refs cwd gid_map maps net oom_score_adj root smaps syscall
查看文件comm的內容:發現是啟動1號進程的命令。
# cat comm
systemd
查看文件maps的內容:
此進程使用的堆(heap)所占用的內容空間是:55f9ef4c6000-55f9ef643000
此進程使用的棧(stack)所占用的內容空間是:7ffd27f9e000-7ffd27fbf000
此進程使用的動態庫(/usr/lib64/ld-2.17.so)所占用的內容空間是:7f13ece84000-7f13ece85000
# cat maps
55f9ed91b000-55f9eda7c000 r-xp 00000000 fd:00 67757678 /usr/lib/systemd/systemd
55f9ef4c6000-55f9ef643000 rw-p 00000000 00:00 0 [heap]
7f13ea4ac000-7f13ea4b0000 r-xp 00000000 fd:00 33700674 /usr/lib64/libuuid.so.1.3.0
7f13ece84000-7f13ece85000 rw-p 00022000 fd:00 33637191 /usr/lib64/ld-2.17.so
7ffd27f9e000-7ffd27fbf000 rw-p 00000000 00:00 0 [stack]
直接用cat等命令去看文件里的內容太累了,所以有了各種各樣的工具來幫助人去查看這些信息,ps就是其中的一個。
進程啟動的方式:
- 系統啟動時,自動啟動的:與終端無關
- 用戶通過終端啟動:與終端有關
ps常用選項:
查看與終端有關的進程:a
TTY:終端設備號
TIME:占用cpu的時間總和
# ps a PID TTY STAT TIME COMMAND 5705 pts/0 Ss+ 0:00 bash 5901 pts/1 Ss+ 0:00 bash 5961 pts/2 Ss 0:00 bash 6062 pts/2 S 0:00 su - root 6073 pts/2 S+ 0:00 -bash 6171 pts/3 Ss 0:00 -bash 14173 pts/3 R+ 0:00 ps a
查看與終端無關的進程:x
由於與終端無關,所以TTY出沒有終端設備號
COMMAND:這個進程是由那個程式啟動的。由中括弧的,是內核啟動的線程
# ps x PID TTY STAT TIME COMMAND 2 ? S 0:00 [kthreadd] 3 ? S 0:00 [ksoftirqd/0] 5 ? S< 0:00 [kworker/0:0H] 3793 ? Ssl 0:00 /usr/sbin/libvirtd
顯示所有進程:
ps ax
以用戶的角度顯示進程的信息:u
所有aux經常一起使用,顯示的結果是以列PID排序的。
USER:啟動進程的user
PID:進程號
%CPU:累計cpu使用時間
%MEM:使用記憶體比率
VSZ:占用的虛擬記憶體大小
RSS:常駐記憶體大小(不能放到swap和磁碟上的關鍵內容)
STAT:進程的狀態
R:running(運行中)
S:interruptable sleeping(休眠中,但可以被喚醒)
D:unterruptable sleeping(休眠中,但不可以被喚醒)
T:Stoped(停止了)
Z:zombie(僵屍進程,父親進程沒有回收它)。
+:前臺進程
l:啟動了多線程的進程
N:低優先順序進程
<:高優先順序進程
s:session leader:在bash里運行了很多別的線程,所有bash就成了session leader;所以只要結束了session leader進程,則在它裡面啟動的進程就全被結束掉。
Ss 08:05 0:00 -bash
START:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 128272 6928 ? Ss 08:00 0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0.0 0.0 0 0 ? S 08:00 0:00 [kthreadd] root 13 0.0 0.0 0 0 ? S 08:00 0:00 [kdevtmpfs] root 14 0.0 0.0 0 0 ? S< 08:00 0:00 [netns] root 15 0.0 0.0 0 0 ? S 08:00 0:00 [khungtaskd] dbus 3048 0.0 0.1 70204 4328 ? Ssl 08:00 0:05 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation rpc 3049 0.0 0.0 73648 1380 ? Ss 08:00 0:00 /sbin/rpcbind -w avahi 3068 0.0 0.0 62144 400 ? S 08:00 0:00 avahi-daemon: chroot helper libstor+ 3069 0.0 0.0 8576 824 ? Ss 08:00 0:00 /usr/bin/lsmd -d ys 4771 0.0 0.0 317316 3880 ? Sl 08:01 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login gdm 4779 0.0 0.1 452196 4236 ? Sl 08:01 0:00 ibus-daemon --xim --panel disable gdm 4782 0.0 0.0 375868 3524 ? Sl 08:01 0:00 /usr/libexec/ibus-dconf ys 4788 0.0 0.2 818940 9444 ? Ssl 08:01 0:00 /usr/libexec/gnome-session-binary --session gnome-classic gdm 4789 0.0 0.3 464772 13420 ? Sl 08:01 0:00 /usr/libexec/ibus-x11 --kill-daemon ys 4804 0.0 0.0 59024 968 ? S 08:01 0:00 dbus-launch --sh-syntax --exit-with-session
顯示所有進程:-e
帶-的是BSD風格的選項,不帶-的是UNIX的風格。
# ps -e PID TTY TIME CMD 1 ? 00:00:03 systemd 2 ? 00:00:00 kthreadd 3 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 kworker/0:0H 7 ? 00:00:00 migration/0
和-e一起使用的還有-f:顯示詳細信息
PPID:父進程
C:CPU占用的百分比
STIME:運行啟動的時間
TIME:累計CPU運行時間
# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 08:00 ? 00:00:04 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0 0 08:00 ? 00:00:00 [kthreadd]
還有個-F和-f類似
PSR:運行在那個cpu核心上。
# ps -eF UID PID PPID C SZ RSS PSR STIME TTY TIME CMD root 1 0 0 32068 6928 0 08:00 ? 00:00:04 /usr/lib/systemd/systemd --switched-root --system --deserialize root 2 0 0 0 0 0 08:00 ? 00:00:00 [kthreadd] root 3 2 0 0 0 0 08:00 ? 00:00:00 [ksoftirqd/0]
按父,子進程層級方式顯示:-H
# ps -eFH UID PID PPID C SZ RSS PSR STIME TTY TIME CMD gdm 4779 1 0 113049 4236 0 08:01 ? 00:00:00 ibus-daemon --xim --panel disable gdm 4782 4779 0 93967 3524 0 08:01 ? 00:00:00 /usr/libexec/ibus-dconf
自定義要顯示的列。列於列之間用逗號分隔:o
# ps axo pid,command PID COMMAND 1 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
BSD風格:ps -eo
# ps -eo pid,command | head -3 PID COMMAND 1 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 2 [kthreadd]
常用列:pid,ni(nice),priority(優先順序),psr(運行在哪個核心上),pcpu(cpu的利用率),stat(狀態),comm(啟動的程式),tty(跟哪個終端相關),ppid(父進程id),rtprio(實時優先順序)
nice:取值是-20到19,值越小優先順序越高。作用是把自己的優先順序降低(普通用戶不能提高自己的優先順序),讓別的進程先執行,很禮讓,所有叫nice。但管理員可以提高進程的優先順序。
pgrep,pkill命令
pgrep:根據進程的各個列的值,挑選出想查看哪些進程的信息。
pkill:根據進程的各個列的值,挑選出想給哪些進程發信號。
常用選項:
根據effictive user去查看進程:-u uid(或者用戶名)
根據實際user去查看進程:-U uid(或者用戶名)
# pgrep -U postfix 4322 14862 # id postfix uid=89(postfix) gid=89(postfix) groups=89(postfix),12(mail) # pgrep -U 89 4322 14862 # pgrep -u postfix 4322 14862 [root@localhost 1]# pgrep -u 89 4322 14862
根據terminal查看進程:-t
顯示進程名:-l
# pgrep -lU postfix 4322 qmgr 14862 pickup
顯示完整格式的進程名:-a
# pgrep -aU postfix 4322 qmgr -l -t unix -u 14862 pickup -l -t unix -u
顯示其進程號下麵的子進程:-P
root 3781 1 0 28189 4312 0 08:01 ? 00:00:00 /usr/sbin/sshd -D root 6163 3781 0 41301 6116 0 08:05 ? 00:00:00 sshd: root@pts/3 # pgrep -aP 3781 6163 sshd: root@pts/3
根據字元串去查看ps出來的結果:
ps key
查看有【ssh】字樣的進程。
# pgrep ssh -a 3781 /usr/sbin/sshd -D 5023 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic" 6163 sshd: root@pts/3
ps nginx
;ps httpd
等
pidof命令
根據進程名字,找到pid。
# pidof sshd
6163 3781
top命令
類似windows的任務查看器,動態變化。
不帶參數top,是按CPU列逆序排序,占用cpu最高的進程在最上面。
# top
top - 15:55:33(當前時間) up 7:54(運行時長), 5 users(登錄的用戶數), load average(平均負載,等待運行的隊列長度): 0.00(1分鐘), 0.01(5分鐘), 0.05(15分鐘)
Tasks(多少個進程): 231 total, 3 running, 228 sleeping, 0 stopped, 0 zombie
%Cpu(s)(cpu占用百分比): 0.3 us(用戶空間的進程占cpu的百分比), 0.7 sy(內核空間的進程占cpu的百分比), 0.0 ni(調整nice的百分比), 99.0 id(空閑百分比), 0.0 wa(等待io的百分比), 0.0 hi(處理硬體終端的百分比), 0.0 si(處理軟體終端的百分比), 0.0 st(被虛擬化軟體進程偷走的百分比)
KiB Mem(物理記憶體) : 3880620 total, 2183580 free, 737500 used, 959540 buff/cache(緩衝/緩存)
KiB Swap(交換分區): 4063228 total, 4063228 free, 0 used. 2813008 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5078 ys 20 0 3025948 199132 68308 R 1.7 5.1 10:32.60 gnome-shell
1524 root 20 0 0 0 0 S 0.3 0.0 0:10.56 xfsaild/dm-0
uptime
命令能顯示top命令結果的第一行:
# uptime
16:38:27 up 8:37, 5 users, load average: 0.07, 0.04, 0.05
VIRT:虛擬記憶體集;RES:常駐記憶體集;SHR:共用記憶體空間;S:當前狀態;TIME+:運行時長
預設是按照%CPU列逆序排序的,可以改變排序的列:
- 按記憶體排序:交互輸入M
- 按CPU排序:交互輸入T
- 按執行時長排序:交互輸入T
在TOP執行時,可以交互輸入的命令列表:
h:顯示幫助
l,t,m :顯示/非顯示第一行,第二行,第三行
d or s:調整刷新間隔
k:殺死指定的進程
q:退出top
Z,B,E,e Global: 'Z' colors; 'B' bold; 'E'/'e' summary/task memory scale
l,t,m Toggle Summary: 'l' load avg; 't' task/cpu stats; 'm' memory info
0,1,2,3,I Toggle: '0' zeros; '1/2/3' cpus or numa node views; 'I' Irix mode
f,F,X Fields: 'f'/'F' add/remove/order/sort; 'X' increase fixed-width
L,&,<,> . Locate: 'L'/'&' find/again; Move sort column: '<'/'>' left/right
R,H,V,J . Toggle: 'R' Sort; 'H' Threads; 'V' Forest view; 'J' Num justify
c,i,S,j . Toggle: 'c' Cmd name/line; 'i' Idle; 'S' Time; 'j' Str justify
x,y . Toggle highlights: 'x' sort field; 'y' running tasks
z,b . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
u,U,o,O . Filter by: 'u'/'U' effective/any user; 'o'/'O' other criteria
n,#,^O . Set: 'n'/'#' max tasks displayed; Show: Ctrl+'O' other filter(s)
C,... . Toggle scroll coordinates msg for: up,down,left,right,home,end
k,r Manipulate tasks: 'k' kill; 'r' renice
d or s Set update interval
W,Y Write configuration file 'W'; Inspect other output 'Y'
q Quit
top命令的常用選項:
- 指定刷新時間的間隔:-d #
- 以批次方式顯示:-b
- 顯示多少批次後就退出top命令:-n #
以批次方式顯示,顯示2批次後,自動退出top,刷新間隔是1秒。
# top -b -n 2 -d 1
htop命令
top命令的升級版,在預設repo里沒有,在epel里。
選項和top基本相同。
子命令:大部分和top相同,下麵幾個是htop獨有的。
F1獲取子命令的幫助信息。
- 查看某個進程打開的所有文件:l(小寫L)
- 查看某個進程發起的系統調用都有哪些:s
- 此父子層級方式顯示:t或F5
- 將選定的進程綁定到某幾個cpu核心上:a。(進程預設是可以運行在任意核心上的)
vmstat命令
vmstat [options][delay [count]]
查看記憶體的統計數據
delay:控制每幾秒種顯示一次
count:顯示幾次
每2秒種顯示一次,一共顯示3次:
# vmstat 2 3
查看一次就退出:
# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 2254396 3148 954228 0 0 145 16 88 90 1 1 98 0 0
procs:進程個數
- r:等待運行的進程個數;cpu上等待運行的任務隊列的長度
- b:處於不可中斷睡眠狀態的進程的個數;被阻塞的任務隊列的長度。
memory:
- swpd:交換記憶體的使用量。這裡如果是0,說明物理記憶體夠用,說明處於健康狀態;如果這裡的值過大,就說明物理記憶體嚴重不足。spwd是利用磁碟模擬記憶體,所以速度非常慢。
- free:空閑的物理記憶體總量。
- buff:用於buffer的記憶體總量
- cache:用於cache的記憶體總量
swap:
- si:數據從物理記憶體進入swap的速率(單位:kb/s)
- so:數據從swap離開,返回到物理記憶體的速率(單位:kb/s)
可以通過swpd和swap的so來判斷當前物理記憶體是否夠用:如果swpd里有值,而且so的值很大,則說明物理記憶體不夠,頻繁需要從swap換進換出;如果swpd里有值,而so的值不大,則還可以忍受。
io:
- bi:從塊設備讀入系統的速率(單位:kb/s)
- bo:保存數據到塊設備的速率(單位:kb/s)
system:
- in:interrupts,中斷產生的速率(每秒產生多少個中斷)
- cs:context switch:進程來回切換的速率。如果此值過萬,則說明要運行的進程過多,cpu處理不過來了,需要加cpu。
cpu:
- us(user space):用戶空間的進程使用cpu的百分比
- sy(system): 內核空間的進程使用cpu的百分比
- id(idle): cpu處於空閑時間的百分比
- wa(wait): 等待io完成的cpu百分比
- st(stolen):被虛擬化技術偷走的時間百分比
常用選項:
查看記憶體使用的彙總信息:-s
# vmstat -s 3880164 K total memory 707772 K used memory 861212 K active memory 523236 K inactive memory 2164936 K free memory 3148 K buffer memory 1004308 K swap cache 4063228 K total swap 0 K used swap 4063228 K free swap 4633 non-nice user cpu ticks 3335 nice user cpu ticks 4878 system cpu ticks 1343696 idle cpu ticks 576 IO-wait cpu ticks 0 IRQ cpu ticks 353 softirq cpu ticks 0 stolen cpu ticks 941197 pages paged in 112819 pages paged out 0 pages swapped in 0 pages swapped out 763048 interrupts 860345 CPU context switches 1582090142 boot time 17373 forks
pmap命令
顯示指定進程的記憶體映射表
pmap [options] pid [...]
pmap pid=cat /proc/pid/maps
常用選項:
顯示詳細信息:-x
RSS:常駐記憶體大小
Dirty:臟數據大小
Mode:讀,寫,執行的許可權
# pmap -x 1 1: /usr/lib/systemd/systemd --switched-root --system --deserialize 22 Address Kbytes RSS Dirty Mode Mapping 000055bb2ebd1000 1412 1168 0 r-x-- systemd 000055bb2ef31000 140 132 132 r---- systemd 000055bb2ef54000 4 4 4 rw--- systemd 000055bb2f8fb000 1520 1464 1464 rw--- [ anon ] 00007f173c000000 164 12 12 rw--- [ anon ] 00007f173c029000 65372 0 0 ----- [ anon ] 00007f1744000000 164 12 12 rw--- [ anon ] 00007f1744029000 65372 0 0 ----- [ anon ] 00007f174aeb2000 4 0 0 ----- [ anon ] 00007f174aeb3000 8192 8 8 rw--- [ anon ] 00007f174b6b3000 4 0 0 ----- [ anon ] 00007f174b6b4000 9024 840 840 rw--- [ anon ] 00007f174c11c000 16 8 0 r-x-- libuuid.so.1.3.0 00007f174c120000 2044 0 0 ----- libuuid.so.1.3.0
glances命令
用python研發的命令,在base倉庫里沒有,在epel里。
和top和htop差不多。
特點是支持c/s模式:可以在沒有server的登錄用戶時,使用這種方式,監視server的各種信息。
server端:glances -s -B 本機某個網卡的ip地址
client端:glances -c 伺服器的ip地址
dstat命令
需要安裝,在base倉庫里。
功能很強大,上面命令能查看的,dstat基本都能查看。
# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
不使用任何參數就是使用:-cdngy
c:total-cpu-usage;d:dsk/total;n:net/total;g:paging;y:system
查看tcp各種狀態下的連接的數量:
# dstat --tcp ----tcp-sockets---- lis act syn tim clo 13 1 0 0 0
查看最消耗cpu的進程是誰:--top-cpu
# dstat --top-cpu -most-expensive- cpu process VBoxClient 0.0 VBoxlient 0.2
查看最消耗磁碟io的進程是誰:--top-bio
# dstat --top-bio ----most-expensive---- block i/o process systemd 36k 18k
查看最消耗記憶體的進程是誰:--top-mem
# dstat --top-mem --most-expensive- memory process gnome-shell 192M
延遲最大的進程是誰:--top-latency
# dstat --top-latency --highest-total-- latency process rcu_sched 292 ksoftirqd/2 9115
還有很多類似--top-xxx的選項
--tcp,--udp,--raw,--socket,--ipc
kill命令
給進程發送信號。
有3種辦法標識信號:
1,信號的數字標識
2,信號的完整名稱:SIGHUP
3,信號的簡寫名稱:HUP
查看有哪些信號:-l
# 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 # kill -l 1 HUP # kill -l 2 INT
發送信號方法:
# kill -1 pid # kill -SIGHUP pid # kill -HUP pid
常用信號解釋:
1)SIGHUP:無需關閉進程,讓其從新讀配置文件
2)SIGINT:終止正在運行的進程,相當於ctrl+c
9)SIGKILL:立即無條件終止正在運行的進程
15)SIGTERM:終止正在運行的進程。(進程打開的文件描述符等,關閉後,在結束自己)
18)SIGCONT:讓後臺運行的進程,回到前臺運行。
19)SIGSTOP:讓前臺的進程去後臺運行。
killall命令
根據進程的名字,終止進程,所以符合名字的進程都會被終止。
# killall httpd
調整進程運行的優先順序
通過調整進程的nice值調整進程的優先順序。只要管理員能調低nice值。
nice:取值是-20到19,值越小優先順序越高。
用戶空間的進程的優先順序範圍是:100~139,對應nice值-20~19。也就是說nice為-20的進程的優先順序是100。優先順序數字越小則越優先,niec值越小則越優先。
進程啟動時,nice值是0,所以優先順序是120.可以在啟動時修改進程的nice值:
顯示的15,其實是115,把前面的1省略了。
# nice -n -5 htop
# ps axo pid,priority,ni,comm | grep 344
344 15 -5 htop
進程啟動後,也可以修改其nice:renice -n NICE pid ...
顯示的20,其實是120,把前面的1省略了。
# ps axo pid,priority,ni,comm | grep 344
344 15 -5 htop
# renice -n 0 344
344 (process ID) old priority -5, new priority 0
# ps axo pid,priority,ni,comm | grep 344
344 20 0 htop
Linux 系統作業控制
系統作業也叫job。
前臺作業:通過終端啟動,且啟動後一直占據終端。
後臺作業:可以通過終端啟動,但啟動後轉入後臺運行,釋放終端。
那麼如何讓作業,轉入後臺呢?
運行中的作業:輸入ctrl+z之後,作業轉入後臺,但不是運行狀態,而是停止狀態。
尚未啟動的作業:
command &
這種方法雖然能讓作業進入後臺運行,但依然依附於終端,一旦終端被終止,它也被終止了。
尚未啟動的作業:
nohup command &
讓作業進入後臺運行,且脫離終端。即使終端被終止,它也不會被終止。
查看後臺的所有作業:jobs
那麼如何讓轉入後臺的作業,返回到前臺終端呢?
fg 作業號
,就讓指定的作業號的作業恢復到前臺運行。
直接執行fg,則是讓有加號的作業恢復到前臺執行
# jobs
[1] Stopped htop
[2]- Stopped top
[3]+ Stopped dstat
# fg 1#回覆htop命令到前臺執行
終止指定的作業:
kill %作業號
註意必須有%號
# kill %3 [3]+ Stopped dstat # jobs [1] Stopped htop [2]- Stopped top [3]+ Terminated dstat
c/c++ 學習互助QQ群:877684253
本人微信:xiaoshitou5854