Linux系統管理常用命令

系統管理工具

  • 進程的分類:

CPU-Bound:CPU密集型,非交互。特別消耗CPU的,加密解密,壓縮解壓

IO-Bound:IO密集型,交互。大量的硬盤讀寫,例如復制文件

  • Linux系統狀態的查看及管理工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup
  • pstree命令:

pstree – display a tree of processes 顯示進程的樹狀結構

  • ps: process state 進程狀態。

ps – report a snapshot of the current processes 顯示進程的當前狀態

Linux系統各進程的相關信息均保存在/proc/PID目錄下 的各文件中

 

 

每個進程都有唯一編號,每個數字的文件夾都對應著一個進程的編號。

[root@localhost ~]# ls /proc/

1 ????15 ???1822 ?2042 ?274 ?419 ?540 ?619 ??991 ?????????iomem ????????sched_debug

10 ???1532 ?1823 ?2044 ?275 ?426 ?542 ?639 ??992 ?????????ioports ??????schedstat

1005 ?1547 ?1878 ?2070 ?276 ?427 ?546 ?654 ??993 ?????????irq ??????????scsi

1011 ?1554 ?1883 ?2134 ?277 ?428 ?565 ?657 ??999 ?????????kallsyms ?????self

1012 ?1555 ?1889 ?2148 ?278 ?429 ?566 ?675 ??acpi ????????kcore ????????slabinfo

1072 ?16 ???1897 ?2168 ?279 ?487 ?567 ?7 ????asound ??????keys ?????????softirqs

 

 

pstree 不加 -p選項只顯示進程的名稱,加 -p可以顯示出進程的編號

[root@localhost ~]# pstree

[root@localhost ~]# pstree -p

pstree顯示進程的名稱

[root@localhost /etc/selinux]# pstree

init─┬─NetworkManager─┬─dhclient

│ ???????????????└─{NetworkManager} 表示線程

 

進程:一個進程肯定有一個線程,一個進程也可以有多個線程。

進程相當于一個項目組,承擔了一個工作,項目簡單一個人能夠完成,項目成員就一個人,就變現為一個線程,項目比較復雜,如果一個人干不了,需要多個人共同協作,這時候就表現為多個線程。進程和線程的關系相當于項目組合項目成員的關系。 一個人,就是一個線程,多個人,就是多個線程,每個線程相當于一個人。每個人和其他項目小組中的同一個小組中的其他人之間互相之間可以協作完成一些任務,各自是獨立運行的,這就是多線程。

多進程和多線程是兩碼事。進程和進程之間是相互隔斷的。

進程和進程之間相當于兩個項目小組之間的關系,各干各的活。一個進程里面多個線程之間因為為了完成同一個任務,只不過每個人扶著其中的一小部分工作,相互之間有協作關系。

 

線程:

 

在Linux中有些服務就是多線程的,但是不是必須的,可以調整。

[root@localhost ~]# service httpd start

[root@localhost ~]# pstree -p

init(1)─┬─NetworkManager(1654)─┬─dhclient(1718)

│ ?????????????????????└─{NetworkManager}(1719)

├─httpd(4573)─┬─httpd(4576)

│ ????????????├─httpd(4577)

│ ????????????├─httpd(4578)

│ ????????????├─httpd(4579)

│ ????????????├─httpd(4580)

│ ????????????├─httpd(4581)

│ ????????????├─httpd(4582)

│ ????????????└─httpd(4583)

一個主進程8個子進程。也可以以線程的方式。一個主進程,在開若干個子進程,每個子進程中在開若干個線程

[root@localhost ~]# vim /etc/sysconfig/httpd

[root@localhost ~]# service httpd restart

[root@localhost ~]# pstree -p

HTTPD=/usr/sbin/httpd.worker 去掉注釋

每個線程是可以獨立工作的。線程和線程之間,在同一個進程中是共享內存空間的。如果一個線程錯故障了,可能會影響統一進程中的其他線程,因為是共享內存空間的

 

顯示某個用戶的進程

pstree -p ding

 

在CnetOS7中查看某個進程的子進程:

[root@localhost ~]# pstree -ps 1

[root@localhost ~]# pstree -ps 992

systemd(1)───sshd(992)─┬─sshd(1532)───bash(1555)

└─sshd(8251)───bash(8259)───pstree(8884)

只看和指定進程的父子關系,顯示出上級進程、下級進程的關系。在6上不支持

 

 

高亮顯示:

[root@localhost ~]# pstree -psH 992

 

 

ps默認只顯示當前終端中運行的進程,就是當前用戶開啟的進程

 

 

查看進程進程ps

  • ps [OPTION]…
  • 支持三種選項:

UNIX選項 ?如-A -e 必須有一個 dash( – )開頭的

BSD選項 如a 伯克利大學流派,沒有 ( – )

GNU選項 如–help 兩個( – )

?

  • 選項:默認顯示當前終端中的進程

a 選項包括所有終端中的進程

x 選項包括不鏈接終端的進程

u 選項顯示進程所有者的信息

f 選項顯示進程樹,相當于 –forest

k|–sort ?屬性 對屬性排序,屬性前加- 表示倒序

o 屬性… 選項顯示定制的信息 pid、cmd、%cpu、%mem

L 顯示支持的屬性列表

 

顯示所有終端開啟的進程

[root@localhost ~]# ps a

PID TTY ?????STAT ??TIME COMMAND

1555 pts/0 ???Ss+ ???0:00 -bash

8259 pts/1 ???Ss ????0:00 -bash

8750 pts/2 ???Ss ????0:00 bash

8832 pts/2 ???S+ ????0:00 vim a

9021 pts/1 ???R+ ????0:00 ps a

顯示和終端無關的進程,開機的時候就已經啟動了,和終端無關

[root@localhost ~]# ps ax

PID TTY ?????STAT???TIME COMMAND

1 ? ???????Ss ????0:05 /usr/lib/systemd/systemd

2 ? ???????S ?????0:00 [kthreadd]

3 ? ???????S ?????0:00 [ksoftirqd/0]

5 ? ???????S< ????0:00 [kworker/0:0H]

顯示進程誰在運行。把進程的運行身份顯示出來

[root@localhost ~]# ps aux

USER ???????PID %CPU %MEM ???VSZ ??RSS TTY ?????STAT START ??TIME COMMAND

root ?????????1 ?0.0 ?0.4 128164 ?4940 ? ???????Ss ??03:10 ??0:05 /usr/lib/systemd/systemd –switched-root –syst

root ?????????2 ?0.0 ?0.0 ?????0 ????0 ? ???????S ???03:10 ??0:00 [kthreadd]

 

USER用戶

PID

%CPU 占用的CPU

%MEM 占用的內存

VSZ 占的虛擬內存是多大。 虛擬內存是操作系統承諾分配給應用程序的內存。包括物理上的內存和swap上的內存。

RSS 占的實際內存是多大,真正分配給應用程序的內存

TTY 終端

STAT 狀態

START 什么時候開始運行的

TIME 時間片的累積值

COMMAND 正在執行的程序

類似于ps aux的,不如aux多

[root@localhost ~]# ps -ef

UID ????????PID ??PPID ?C?STIME TTY ?????????TIME CMD

root ?????????1 ?????0 ?0 03:10 ? ???????00:00:05 /usr/lib/systemd/systemdroot ?????????2 ?????0 ?0 03:10 ? ???????00:00:00 [kthreadd]

root ?????????3 ?????2 ?0 03:10 ? ???????00:00:00 [ksoftirqd/0]

 

C:表示CPU的利用率

 

-e 類似于 -A,等價的

?

 

顯示進程樹

[root@localhost ~]# ps auxf

父進程被殺死,子進程就沒了

 

挑一部字段分顯示

[root@localhost ~]# ps axo pid,cmd,%cpu

PID CMD ????????????????????????%CPU

1 /usr/lib/systemd/systemd — ?0.0

2 [kthreadd] ??????????????????0.0

3 [ksoftirqd/0] ???????????????0.0

 

默認按照PID進行顯示,按照cpu利用率排序

[root@localhost ~]# ps axo pid,cmd,%cpu –sort %cpu 長格式

PID CMD ????????????????????????%CPU

1 /usr/lib/systemd/systemd — ?0.0

[root@localhost ~]# ps axo pid,cmd,%cpu k %cpu 短格式

PID CMD ????????????????????????%CPU

1 /usr/lib/systemd/systemd — ?0.0

注意:在CentOS6上按照內存排序會有問題

 

關閉圖形界面

[root@localhost ~]# ps axo pid,cmd,%cpu,%mem k %mem

PID CMD ????????????????????????%CPU %MEM

657?/usr/bin/python -Es /usr/sb ?0.0 ?2.7

9588?/usr/bin/gnome-shell ???????25.0 ?5.8

[root@localhost ~]# free -h

total ???????used ???????free ?????shared ?buff/cache ??available

Mem: ??????????976M ???????305M ???????283M ????????10M ???????387M ???????462M

Swap: ?????????2.0G ???????3.9M ???????2.0G

[root@localhost ~]# init 3

[root@localhost ~]# free -h

total ???????used ???????free ?????shared ?buff/cache ??available

Mem: ??????????976M ???????194M ???????396M ????????10M ???????385M ???????575M

Swap: ?????????2.0G ???????3.9M ???????2.0G

[root@localhost ~]# ps axo pid,cmd,%cpu,%mem k %mem

PID CMD ????????????????????????%CPU %MEM

798 /sbin/dhclient -d -q -sf /u ?0.0 ?1.5

657?/usr/bin/python -Es /usr/sb ?0.0 ?2.7

 

顯示支持的屬性列表

[root@localhost ~]# ps L

%cpu ????????%CPU

%mem ????????%MEM

 

ps常見選項

  • -C cmdlist 指定命令,多個命令用“ , ”分隔
  • -L 顯示線程
  • -e: 顯示所有進程,相當于-A
  • -f: 顯示完整格式程序信息
  • -F: 顯示更完整格式的進程信息
  • -H: 以進程層級格式顯示進程相關信息
  • -u userlist ?指定有效的用戶ID或名稱
  • -U userlist 指定真正的用戶ID或名稱
  • -g gid或groupname ?指定有效的gid或組名稱
  • -G gid或groupname ?指定真正的gid或組名稱
  • -p pid 顯示指pid的進程
  • –ppid pid ?顯示屬于pid的子進程
  • -M ?顯示SELinux信息,相當于Z

 

-C 顯示指定程序的名稱。相當于過濾

[root@localhost ~]# ps -C bash

PID TTY ?????????TIME CMD

4430 pts/1 ???00:00:00 bash

5217 pts/2 ???00:00:00 bash

5268 tty2 ????00:00:00 bash

細節:

終端A:

[root@localhost ~]# vim sl.sh

[root@localhost ~]# chmod +x sl.sh

[root@localhost ~]# cat sl.sh

#!/bin/bash

sleep 300

[root@localhost ~]# ./sl.sh

終端B:

[root@localhost ~]# ps -C sl.sh

PID TTY ?????????TIME CMD

5594 pts/1 ???00:00:00 sl.sh

如果不寫#!/bin/bash,再次執行

[root@localhost ~]# ps -C sl.sh

PID TTY ?????????TIME CMD

不寫 #!/bin/bash或者直接使用bash運行的程序,ps 中的 -C選項無法查詢出來

[root@localhost ~]# bash sl.sh

[root@localhost ~]# w 在bash上面運行的

root ????pts/1 ???172.18.0.100 ????23:41 ???3.00s ?0.47s ?0.00s bash sl.sh

 

 

混用的時候可能會產生沖突

 

[root@localhost ~]# ps -C sl.sh,vim,init axo pid,cmd,%mem

PID CMD ????????????????????????%MEM

1 /sbin/init ??????????????????0.1

2 [kthreadd] ??????????????????0.0

3 [migration/0] ???????????????0.0

 

-C sl.sh,vim,init不起作用

 

[root@localhost ~]# ps -C sl.sh,vim,init o pid,cmd,%mem

PID CMD ????????????????????????%MEM

1 /sbin/init ??????????????????0.1

5236 vim a ???????????????????????0.4

5296 vim abc ?????????????????????0.4

5572 vim abc ?????????????????????0.4

5884 /bin/bash ./sl.sh ???????????0.1

 

顯示線程

[root@localhost ~]# ps -Lef

root ??????5730 ?????1 ??5730 ?0 ???1 00:59 ? ???????00:00:00 /usr/sbin/httpd.worker

apache ????5851 ??5730 ??5851 ?0 ??27 01:00 ? ???????00:00:00 /usr/sbin/httpd.worker

……

 

-F 顯示更完整格式的進程信息

[root@localhost ~]# ps -eF

UID ????????PID ??PPID ?C ???SZ ??RSS PSR STIME TTY ?????????TIME CMD

root ?????????1 ?????0 ?0 ?4838 ?1556 ??0 Dec15 ? ???????00:00:02 /sbin/init

root ?????????2 ?????0 ?0 ????0 ????0 ??0 Dec15 ? ???????00:00:00 [kthreadd]

root ?????????3 ?????2 ?0 ????0 ????0 ??0 Dec15 ? ???????00:00:00 [migration/0]

 

PPID ?C

SZ

RSS

PSR 內核,進程是運行在哪個CPU上的

STIME TTY ?????????TIME CMD

運行的進程會在內核間切換

 

  • -u userlist ?指定有效的用戶ID或名稱,生效的用戶
  • -U userlist 指定真正的用戶ID或名稱,發起進程執行者的身份

 

例如普通用戶執行passwd命令。發起程序的運行者是普通用戶,生效的用戶是root

-u看到的是生效的用戶

 

互斥的選項:ps -C passwd -u root

 

 

顯示指定pid的進程。進程和進程編號,屬性的組合

[root@localhost ~]# ps -p 992 o pid,cmd,%cpu

PID CMD ????????????????????????%CPU

992 /usr/sbin/sshd -D ???????????0.0

 

[root@localhost ~]# ps -C passwd o pid,cmd,%cpu

PID CMD ????????????????????????%CPU

 

顯示屬于pid的子進程

[root@localhost ~]# ps –ppid 5730

PID TTY ?????????TIME CMD

5851 ? ???????00:00:00 httpd.worker

 

ps輸出屬性

  • VSZ: Virtual memory SiZe,虛擬內存集,線性內存。承諾分配的虛擬內存,不是真的分配
  • RSS: ReSident Size, 常駐內存集,真正分配的內存
  • STAT:進程狀態

R:running

S: interruptable sleeping 可喚醒的休眠

D: uninterruptable sleeping 不可喚醒的休眠

T: stopped 暫停的,可以喚醒

Z: zombie 僵死的

+: 前臺進程

l: 多線程進程

L:內存分頁并帶鎖

N:低優先級進程

<: 高優先級進程

s: session leader,會話(子進程)發起者

 

ps

  • ni: nice值
  • pri: priority 優先級
  • psr: processor ?CPU編號
  • rtprio: 實時優先級
  • 示例:

ps axo pid,cmd,psr,ni,pri,rtprio

  • 常用組合:

aux

-ef

-eFH

-eo?pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm

axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm [挑一些字段來顯示]

 

查看優先級

[root@localhost ~]# ps axo pid,cmd,ni

PID CMD ?????????????????????????NI

1 /usr/lib/systemd/systemd — 0

2 [kthreadd] ?????????????? 0

3 [ksoftirqd/0] ???????????? 0

值越大優先級越差

 

查看進程優先級和CPU利用率

[root@localhost ~]# ps axo pid,cmd,ni,%cpu

[root@localhost ~]# ps axo pid,cmd,ni,%cpu

PID CMD ?????????????????????????NI %CPU

1 /usr/lib/systemd/systemd — ??0 ?0.6

 

調整優先級

[root@localhost ~]# renice -n -20 2543

2543 (process ID) old priority 0, new priority -20

[root@localhost ~]# ps axo pid,cmd,%cpu,ni

2543 ping 172.18.0.100 ???????????0.0 -20

 

-n選項也可以不加

[root@localhost ~]# renice -10 2543

2543 (process ID) old priority -20, new priority -10

[root@localhost ~]# renice 10 2543

2543 (process ID) old priority -10, new priority 10

 

指定以多少優先級運行命令

[root@localhost ~]# nice -n -5 ping 172.18.0.100

 

[root@localhost ~]# ps -axo pid,cmd,%cpu,ni

2639 ping 172.18.0.100 ???????????0.0 ?-5

 

 

renice是程序已經運行起來,后期去調整,nice是運行命令的時候就指定運行的優先級

 

[root@localhost ~]# nice -5 ping 172.18.0.100

[root@localhost ~]# ps -axo pid,cmd,%cpu,ni

2693 ping 172.18.0.100 ???????????0.0 ??5

2701 sleep 60 ????????????????????0.0 ??0

2702 ps -axo pid,cmd,%cpu,ni ?????0.0 ??0

 

 

[root@localhost ~]# nice -11 ping 172.18.0.100

[root@localhost ~]# ps -axo pid,cmd,%cpu,ni

2703 ping 172.18.0.100 ???????????0.0 ?11

 

[root@localhost ~]# nice –11 ping 172.18.0.100

[root@localhost ~]# ps -axo pid,cmd,%cpu,ni

2714 ping 172.18.0.100 ???????????0.0 -11

 

[root@localhost ~]# which nice

/usr/bin/nice

[root@localhost ~]# rpm -qf /usr/bin/nice

coreutils-8.22-18.el7.x86_64

 

查看pri的優先級

[root@localhost ~]# nice -n 10 ping 127.0.0.1

[root@localhost ~]# ps axo pid,cmd,%cpu,ni,%mem,pri

2828 ping 127.0.0.1 ??????????????0.0 ?10 ?0.1 ??9

 

[root@localhost ~]# nice -n -10 ping 127.0.0.1

[root@localhost ~]# ps axo pid,cmd,%cpu,ni,%mem,pri

2830 ping 127.0.0.1 ??????????????0.0 -10 ?0.1 ?29

 

終端A:[root@localhost ~]# nice -n 10 ping 127.0.0.1

終端B:[root@localhost ~]# nice -n -10 ping 127.0.0.1

[root@localhost ~]# ps axo pid,cmd,%cpu,ni,%mem,pri

2895 ping 127.0.0.1 ??????????????0.0 -10 ?0.1 ?29

2896 ping 127.0.0.1 ??????????????0.0 ?10 ?0.1 ??9

[root@localhost ~]# ps -C ping o pid,cmd,ni,%cpu,pri

PID CMD ?????????????????????????NI %CPU PRI

2940 ping 127.0.0.1 ?????????????-10 ?0.0 ?29

2941 ping 127.0.0.1 ??????????????10 ?0.0 ??9

pri值越大優先級越高,nice值越小優先級越高,范圍是-20 – 19

 

[root@localhost ~]# nice -n 30 ping 127.0.0.1

[root@localhost ~]# ps -C ping o pid,cmd,ni,%cpu,pri

PID CMD ?????????????????????????NI %CPU PRI

2941 ping 127.0.0.1 ??????????????10 ?0.0 ??9

3037 ping 127.0.0.1 ??????????????19 ?0.0 ??0

 

[root@localhost ~]# nice -n -20 ping 127.0.0.1

[root@localhost ~]# ps -C ping o pid,cmd,ni,%cpu,pri

PID CMD ?????????????????????????NI %CPU PRI

2941 ping 127.0.0.1 ??????????????10 ?0.0 ??9

3039 ping 127.0.0.1 ?????????????-20 ?0.0 ?39

 

實時優先級對應于前一部分,nice對應于系統優先級的后一部分。nice優先級又被稱為動態優先級,表面上給它設置了優先級,但運行的時候會根據系統的實際情況,自動的去調整優先級。系統的內核可能會去做一個相應的微調。realtime是固定優先級,設置好之后就固定不變了

 

[root@localhost ~]# ps -C ping o pid,cmd,ni,%cpu,pri,rtprio

PID CMD ?????????????????????????NI %CPU PRI RTPRIO

2941 ping 127.0.0.1 ??????????????10 ?0.0 ??9 ?????–

3119 ping 127.0.0.1 ?????????????-20 ?0.0 ?39 ?????–

[root@localhost ~]#

 

nice優先級不對應實時優先級,nice優先級和realtime沒有任何的對應關系。

 

查看實時優先級

[root@localhost ~]# ps axo pid,cmd,ni,%cpu,pri,rtprio

PID CMD ?????????????????????????NI %CPU PRI RTPRIO

7 [migration/0] ????????????????– ?0.0 139 ????99

10 [watchdog/0] ?????????????????– ?0.0 139 ????99 看門狗,監控內核狀態的

pri值越大優先級越高。

pri的優先級和系統的優先級是反著來劃的,pri的優先級是139-0,139最大,系統優先級是0-139,0最大

 

查看有效用戶和真正用戶

[ding@localhost ~]$ passwd

Changing password for user ding.

Changing password for ding.

(current) UNIX password:

[root@localhost ~]# ps axo pid,cmd,ni,%cpu,euid,ruid euid 和 uid一樣

[root@localhost ~]# ps axo pid,cmd,ni,%cpu,uid,ruid

3275 passwd ???????????????????????0 ?0.0 ????0 ?1000

有效用戶:uid,運行進程用戶的uid

真正用戶:ruid,發起進程用戶的uid

 

ps示例

  • 查詢你擁有的所有進程:

ps -x

 

  • 顯示指定用戶名(RUID)或用戶ID的進程:

ps -fU apache 用戶名

ps -fu 48 用戶的UID

 

(RUID)真實用戶

 

  • 顯示指定用戶名(EUID)或用戶ID的進程:

ps -fu wang

ps -fu 1000

 

(EUID)有效用戶

 

  • 查看以root用戶權限(實際和有效ID)運行的每個進程:

ps -U root -u root

 

  • 列出某個組擁有的所有進程(實際組ID:RGID或名稱):

ps -fG nginx

 

 

顯示所有和終端無連接的進程

[root@localhost ~]# ps x

PID TTY ?????STAT ??TIME COMMAND

 

查詢你擁有的所有進程

[root@localhost ~]# ?ps -x 顯示的是有效用戶的進程

 

顯示指定用戶名(RUID)或用戶ID的進程

可以是UID,也可以是用戶名

[ding@localhost ~]$ ps -fu ding 程序的發起者

UID ????????PID ??PPID ?C STIME TTY ?????????TIME CMD

 

ps示例

  • 列出有效組名稱(或會話)所擁有的所有進程:

ps -fg mysql

ps -fG 27

 

  • 通過進程ID來顯示所屬的進程:

ps -fp 1234

 

  • 以父進程ID來顯示其下所有的進程,如顯示父進程為1154的所有進程:

ps -f –ppid?1234

 

  • 顯示指定PID的多個進程:

ps -fp 1204,1239,1263

 

  • 要按tty顯示所屬進程:

ps -ft pst/0

 

 

通過進程編號顯示進程的詳細信息

[root@localhost ~]# ps -fp 946

UID ????????PID ??PPID ?C STIME TTY ?????????TIME CMD

root ???????946 ?????1 ?0 16:42 ? ???????00:00:00 /usr/sbin/sshd -D

 

顯示指定進程下的子進程

[root@localhost ~]# pstree -p

systemd(1)─┬─ModemManager(581)─┬─{ModemManager}(614)

├─sshd(946)─┬─sshd(2376)───bash(2385)───pstree(3557)

│ ??????????├─sshd(2439)───bash(2445)───su(3427)───bash(3428)

│ ??????????└─sshd(2848)───bash(2853)

 

[root@localhost ~]# ps -f –ppid 946

UID ????????PID ??PPID ?C STIME TTY ?????????TIME CMD

root ??????2376 ???946 ?0 16:44 ? ???????00:00:00 sshd: root@pts/1

root ??????2439 ???946 ?0 16:46 ? ???????00:00:00 sshd: root@pts/2

root ??????2848 ???946 ?0 17:05 ? ???????00:00:00 sshd: root@pts/3

[root@localhost ~]# ps -f –ppid 2439

UID ????????PID ??PPID ?C STIME TTY ?????????TIME CMD

root ??????2445 ??2439 ?0 16:46 pts/2 ???00:00:00 -bash

 

 

ps示例

  • 以進程樹顯示系統中的進程如何相互鏈接:

ps -e –forest

 

  • 以進程樹顯示指定的進程

ps -f –forest -C sshd

ps -ef –forest | grep -v grep | grep sshd

 

  • 要顯示一個進程的所有線程,將顯示LWP(輕量級進程)以及 NLWP(輕量級進程數)列:

ps -fL -C nginx

 

  • 要列出所有格式說明符:

ps L

 

  • 查看進程的PID,PPID,用戶名和命令:

ps -eo pid,ppid,user,cmd

 

以進程樹顯示系統中的進程如何相互鏈接:

[root@localhost ~]# ps -e –forest

PID TTY ?????????TIME CMD

2 ? ???????00:00:00 kthreadd

3 ? ???????00:00:00 ?\_ ksoftirqd/0

 

 

要顯示一個進程的所有線程,將顯示LWP(輕量級進程)以及 NLWP(輕量級進程數)列

[root@localhost ~]# ps -fL -C httpd.worker

UID ????????PID ??PPID ???LWP ?C NLWP STIME TTY ?????????TIME CMD

root ??????2897 ?????1 ??2897 ?0 ???1 08:22 ? ???????00:00:00 /usr/sbin/httpd.worker

apache ????3014 ??2897 ??3014 ?0 ??27 08:22 ? ???????00:00:00 /usr/sbin/httpd.worker

apache ????3014 ??2897 ??3016 ?0 ??27 08:22 ? ???????00:00:00 /usr/sbin/httpd.worker

apache ????3014 ??2897 ??3017 ?0 ??27 08:22 ? ???????00:00:00 /usr/sbin/httpd.worker

apache ????3014 ??2897 ??3018 ?0 ??27 08:22 ? ???????00:00:00 /usr/sbin/httpd.worker

 

 

 

ps示例

  • 自定義格式顯示文件系統組,ni值開始時間和進程的時間:

ps -p 1234 -o pid,ppid,fgroup,ni,lstart,etime

 

lstart:啟動時間

 

  • 使用其PID查找進程名稱:

ps -p 1244 -o comm=

  • 要以其名稱選擇特定進程,顯示其所有子進程

ps -C sshd,bash

  • 查找指定進程名所有的所屬PID,在編寫需要從std輸出或文件讀取PID的腳本時這個參數很有用:

ps -C httpd,sshd -o pid=

  • 檢查一個進程的執行時間 ?ps -eo comm,etime,user | grep nginx

 

查看進程名稱

[root@localhost ~]# ps -p 1 -o comm=

init

[root@localhost ~]# ps -p 1 -o comm=

systemd

 

顯示進程編號

[root@localhost ~]# ps -C httpd,sshd -o pid=

2017

2380

2808

[root@localhost ~]# ps -C httpd.worker -o pid=

2897

3014

查看一個進程的執行時間 etime:執行時間

[root@localhost ~]# ps -eo comm,etime,user | grep httpd

httpd.worker ?????????07:33 root

httpd.worker ?????????07:28 apache

 

ps示例

  • 查找占用最多內存和CPU的進程:

ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | head ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%cpu | head

-%cpu表示倒序

 

  • 顯示安全信息: ps -eM ps –context
  • 使用以下命令以用戶定義的格式顯示安全信息

ps -eo euser,ruser,suser,fuser,f,comm,label

  • 使用watch實用程序執行重復的輸出以實現對就程進行實時的監視,如下面的命令顯示每秒鐘的監視:

watch -n 1 ‘ps -eo pid,ppid,cmd,%mem,%cpu –sort=%mem | head’

 

查看占用內存最大的進程

[root@localhost ~]# ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem

PID ??PPID CMD ????????????????????????%MEM %CPU

1694 ??1475 /usr/bin/gnome-shell ???????15.9 ?0.1

1915 ?????1 /usr/libexec/evolution-cale ?6.0 ?0.0

2126 ??1915 /usr/libexec/evolution-cale ?5.9 ?0.0

 

每秒排序一次,顯示前10個內存占用最高的進程

 

[root@localhost ~]# dd if=/dev/zero of=/dev/null bs=1G

 

[root@localhost ~]# watch -n 1 ‘ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%mem | head’

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90334

(0)
無言勝千言無言勝千言
上一篇 2017-12-18
下一篇 2017-12-18

相關推薦

  • cat用法

    用法:cat [選項] [文件]… 將[文件]或標準輸入組合輸出到標準輸出。 -A, –show-all 等價于 -vET -b, –number-nonblank 對非空輸出行編號 -e 等價于 -vE -E, –show-ends 在每行結束處顯示 $ -n, –number 對輸出的所有行編號…

    2017-04-02
  • linux 文件管理類命令及功能用法

    第一題:Linux上的文件管理類命令都有哪些,其常用的使用方法及相關示例演示。 文件管理類的命令有: cd,ls,touch,mldir,cp,mv,rm,rmdir,pwd,tree 使用方法 (1),cd命令用來切換工作目錄至dirname。其中dirName表示法可為絕對路徑或相對路徑。 常用格式: cd #進入用戶家目錄 cd~ #進入用戶家目錄 c…

    Linux干貨 2017-07-09
  • 任務計劃1

    at.allow :優先級高,有此文件,deny無效,只有此文件中的用戶可使用at at.deny:優先級低,此文件中的用戶拒絕,不在此文件允許 如果都沒有,全都拒絕普通用戶     [root@localhost ~]# rpm -q  at at-3.1.13-22.el7.x86_64 [root@localhost ~]…

    Linux干貨 2017-05-15
  • N25-第三周作業

    N25第三周作業 博客作業 1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@ip-172-31-25-9 ~]# who|awk '{print $1}'|sort -u ec2-user [root@ip-172-31-25-9&n…

    Linux干貨 2017-02-06
  • Linux程序包管理之RPM

    Linux程序包管理之RPM RPM概念 rpm是什么 RPM 是Ret Hat Package Manager(RPM軟件包管理器)的縮寫,遵循GPL協議,可以運行在各種Linux上,公認的行業標準。 rpm干什么 對于終端用戶來說 簡化了Linux系統的安裝、卸裝、更新和升級的過程,用命令完成 對于開發者來說 RPM允許把軟件編碼包裝成源代碼和程序包提供…

    Linux干貨 2016-11-22
  • 從新開始,堅持記錄

    從新開始,從心開始,記錄自己的學習,不逼自己一把,永遠不知道自己的潛力。

    Linux干貨 2016-12-05
欧美性久久久久