Linux進程查看及管理(2)

 Linux進程查看及管理的工具:pstree, ps, pidof, pgrep, top, htop, glances, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup

 vunt]] mstat命令:

vmstat [options] [delay [co

procs:

r:等待運行的進程的個數;

b:處于不可中斷睡眠態的進程個數;(被阻塞的隊列的長度);

memory

swpd: 交換內存的使用總量;

free:空閑物理內存總量;

buffer:用于buffer的內存總量;

cache:用于cache的內存總量;

swap:

si:數據進入swap中的數據速率(kb/s)

so:數據離開swap中的數據速率(kb/s)

io

bi:從塊設備讀入數據到系統的速率;(kb/s)

bo: 保存數據至塊設備的速率;

system

in: interrupts, 中斷速率;

cs: context switch, 進程切換速率;

cpu

us

sy

id

wa

st

 選項:

-s: 顯示內存的統計數據 

pmap命令:

pmap – report memory map of a process

 pmap [options] pid […]

-x: 顯示詳細格式的信息;

例一:顯示進程一的詳細信息

[root@localhost proc]# pmap 1 

另外一種實現:

# cat /proc/PID/maps

例一:顯示進程一的詳細信息

[root@localhost proc]# cat /proc/1/maps

glances命令:

 glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [–password] [-t refresh] [-f file] [-o output]

 內建命令:

  a  Sort processes automatically     l  Show/hide logs

  c  Sort processes by CPU%           b  Bytes or bits for network I/O

  m  Sort processes by MEM%           w  Delete warning logs

  p  Sort processes by name           x  Delete warning and critical logs

  i  Sort processes by I/O rate       1  Global CPU or per-CPU stats

  d  Show/hide disk I/O stats         h  Show/hide this help screen

  f  Show/hide file system stats      t  View network I/O as combination

  n  Show/hide network stats          u  View cumulative network I/O

  s  Show/hide sensors stats          q  Quit (Esc and Ctrl-C also work)

  y  Show/hide hddtemp stats

常用選項:

-b: Byte為單位顯示網卡數據速率;

-d: 關閉磁盤I/O模塊;

-f /path/to/somefile: 設定輸入文件位置;

-o {HTML|CSV}:輸出格式;

-m: 禁用mount模塊

-n: 禁用網絡模塊

-t #: 延遲時間間隔

-1:每個CPU的相關數據單獨顯示;

C/S模式下運行glances命令:

服務模式:

glances -s -B IPADDR

例一:監聽本機地址,端口號

[root@localhost ~]# glances -s -B 192.168.21.137
Glances server is running on 192.168.21.137:61209

IPADDR: 指明監聽于本機哪個地址

客戶端模式:

glances -c IPADDR

例一:指名監聽服務器端的地址

[root@localhost ~]# glances -c 119.75.217.109

IPADDR:要連入的服務器端地址

dstat命令:

dstat [-afv] [options..] [delay [count]]

 -c: 顯示cpu相關信息;

-C #,#,…,total

-d: 顯示disk相關信息;

-D total,sda,sdb,…

-g:顯示page相關統計數據;

-m: 顯示memory相關統計數據;

-n: 顯示network相關統計數據;

-p: 顯示process相關統計數據;

-r: 顯示io請求相關的統計數據;

-s: 顯示swapped相關的統計數據;

 –tcp

–udp

–unix

–raw

–socket

 –ipc

 –top-cpu:顯示最占用CPU的進程;

–top-io: 顯示最占用io的進程;

–top-mem: 顯示最占用內存的進程;

–top-lantency: 顯示延遲最大的進程;

例一:查看CPU 那顆CPU

[root@localhost ~]# dstat -C 1,2
You did not select any stats, using -cdngy by default.
Module dstat_cpu24 failed to load. (No counter objects to monitor)
-dsk/total- -net/total- ---paging-- ---system--
 read  writ| recv  send|  in   out | int   csw
5949B 1480B|   0     0 |   0     0 |  32    53
   0     0 |  60B  698B|   0     0 |  27    39
   0     0 |  60B  266B|   0     0 |  28    44
   0     0 |  60B  266B|   0     0 |  31    40 ^C

例二:查看最占用cpu的進程

[root@localhost ~]# dstat --top-mem 

kill命令:

 向進程發送控制信號,以實現對進程管理 

顯示當前系統可用信號:

# kill -l

# man 7 signal

例一:能使用的系統信號

[root@localhost ~]# 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

常用信號:

1) SIGHUP: 無須關閉進程而讓其重讀配置文件;

2) SIGINT: 中止正在運行的進程;相當于Ctrl+c;

9) SIGKILL: 殺死正在運行的進程;

15) SIGTERM:終止正在運行的進程;

18) SIGCONT

19) SIGSTOP 

指定信號的方法:

(1) 信號的數字標識;1, 2, 9

(2) 信號完整名稱;SIGHUP

(3) 信號的簡寫名稱;HUP 

向進程發信號:

kill [-SIGNAL] PID…

例一:終止2200 進程

[root@localhost ~]# kill 15 2200 

終止“名稱”之下的所有進程:

killall [-SIGNAL] Program

例一:終止http所有進程

[root@localhost ~]# killall -15 httpd 

Linux的作業控制

 前臺作業:通過終端啟動,且啟動后一直占據終端;

后臺作業:可以通過終端啟動,但啟動后即轉入后臺運行(釋放終端);

 如何讓作業運行于后臺?

(1) 運行中的作業

Ctrl+z

例一:運行Ctril+z 后的運行結果 把這個進程送到后臺,然后按fg命令返回

[root@localhost ~]# vim /etc/fstab
[15]+  Stopped                 vim /etc/fstab

 (2) 尚未啟動的作業

# COMMAND & 

此類作業雖然被送往后臺運行,但其依然與終端相關;如果希望送往后臺后,剝離與終端的關系:

# nohup COMMAND & 

查看所有作業:

# jobs 

作業控制:

# fg [[%]JOB_NUM]:把指定的后臺作業調回前臺;

# bg [[%]JOB_NUM]:讓送往后臺的作業在后臺繼續運行;

# kill [%JOB_NUM]:終止指定的作業; 

進程優先級調整:

靜態優先級:100-139 

進程默認啟動時的nice值為0,優先級為120; 

nice命令:

nice [OPTION] [COMMAND [ARG]…]

例一:把htop命令調整為5優先級

  4152 htop              5
  4153 ps                0
[root@localhost ~]# nice -n 5 htop 

renice命令:

renice [-n] priority pid…

例一:更改正在運行中的進程優先級 指定進程號

[root@localhost ~]# renice -n 2 4230
4230 (process ID) old priority 5, new priority 2

 查看:

ps axo pid,comm,ni

 Linux任務計劃、周期性任務執行

 未來的某時間點執行一次任務:at, batch

周期性運行某任務: cron

 電子郵件服務:

smtp: simple mail transmission protocol, 用于傳送郵件;

pop3: Post Office Protocol

imap4Internet Mail Access Protocol

 mailx – send and receive Internet mail

 MUAMail User Agent

 mailx [-s ‘SUBJECT’] username[@hostname]

郵件正文的生成:

(1) 直接給出,Ctrl+d;

(2) 輸入重定向;

[root@localhost ~]# mail -s "hi" gentoo@localhost < mail.txt

(3) 通過管道;

echo -e “How are you?\nHow old are you?” | mail 

mailx

 at命令:

 at [option] TIME

 TIME:

HH:MM [YYYY-mm-dd]

noon, midnight, teatime

tomorrow

now+#{minutes,hours,days, OR weeks}

例一:指定3分鐘以后執行命令

[root@localhost ~]# at now+3minutes 

常用選項:

-q QUEUE:

-l: 列出指定隊列中等待運行的作業;相當于atq

-d: 刪除指定的作業;相當于atrm

-c: 查看具體作業任務;

-f /path/from/somefile:從指定的文件中讀取任務;

例一:查看具體作業任務

[root@localhost ~]# at -c 3

例二:指定文件讀取任務

[root@localhost ~]# vim at.task
You have new mail in /var/spool/mail/root
[root@localhost ~]# at -f at.task now+10minutes
job 4 at Sat May 27 11:10:00 2017

注意:作業的執行結果以郵件通知給相關用戶;

 batch命令:

讓系統自行選擇空閑時間去執行此處指定的任務;

 周期性任務計劃:cron

相關的程序包:

cronie: 主程序包,提供了crond守護進程及相關輔助工具;

cronie-anacroncronie的補充程序;用于監控cronie任務執行狀況;如cronie中的任務在過去該運行的時間點未能正常運行,則anacron會隨后啟動一次此任務;

crontabs:包含CentOS提供系統維護任務;

 確保crond守護處于運行狀態:

CentOS 7:

systemctl status crond

…running…

CentOS 6:

service crond status

 計劃要周期性執行的任務提交給crond,由其來實現到點運行。

系統cron任務:系統維護作業

/etc/crontab

用戶cron任務:

crontab命令

 系統cron任務

# Example of job definition:

# .—————- minute (0 – 59)

# |  .————- hour (0 – 23)

# |  |  .———- day of month (1 – 31)

# |  |  |  .——- month (1 – 12) OR jan,feb,mar,apr …

# |  |  |  |  .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name  command to be executed

 例如:晚上910分運行echo命令;

10 21 * * *  gentoo /bin/echo “Howdy!”

 時間表示法:

(1) 特定值;

給定時間點有效取值范圍內的值;

(2) *

給定時間點上有效取值范圍內的所有值;

表示“每”;

(3) 離散取值:,

#,#,#

(4) 連續取值:

#-#

(5) 在指定時間范圍上,定義步長:

/#: #即為步長

 例如:每3小時echo命令;

0 */3 * * * gentoo /bin/echo “howdy!”

 用戶cron

crontab命令定義,每個用戶都有專用的cron任務文件:/var/spool/cron/USERNAME

 crontab命令:

crontab [-u user] [-l | -r | -e] [-i]

-l: 列出所有任務;

-e: 編輯任務;

-r: 移除所有任務;

-i:同-r一同使用,以交互式模式讓用戶有選擇地移除指定任務;

 -u user: root可運行,代為為指定用戶管理cron任務;

例一:列出所有任務

[gentoo@localhost root]$ crontab -l
*/3 * * * * /bin/echo"helo"
[gentoo@localhost root]$

 注意:運行結果以郵件通知給相關用戶;

(1) COMMAND > /dev/null

(2) COMMAND &> /dev/null

 對于cron任務來講,%有特殊用途;如果在命令中要使用%,則需要轉義;不過,如果把%放置于單引號中,也可以不用轉義;

sleep命令:

sleep NUMBER[SUFFIX]… 

SUFFIX:

s: , 默認

m:

h: 小時

d:  

原創文章,作者:kang,如若轉載,請注明出處:http://www.www58058.com/77037

(0)
kangkang
上一篇 2015-09-27
下一篇 2015-10-01

相關推薦

  • iptables基本知識

    1)Linux下的防火墻概念 a、一般談到Linux下的防火墻,我們都會首先想到iptables,其實更確切的叫法應該是Netfilter/iptables,iptables和Netfilter其實是存在差別的。 b、盡管它們經常被用來相互替換使用,Netfilter是用來實現Linux內核中防火墻的Linux內核空間程序代碼段,它要么被直接編譯進內核,要么…

    Linux干貨 2016-07-16
  • ?awk

    awk

    Linux干貨 2016-09-24
  • Nginx七層反代服務器 (Blog 20)

    http反代、fastcgi反代

    Linux干貨 2017-12-20
  • Linux用戶、組管理和正則表達式的基礎命令

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其他用戶均沒有任何權限 [root@localhost skel]# cp -r /etc/skel /home/tuser1 [root@localhost skel]# ls -al /home/tuser1 total 12 drwxr-xr-x.…

    Linux干貨 2017-07-20
  • PS進程命令常用選項參數詳解

    PS命令是什么 ps命令能夠給出當前系統中進程的快照。它能捕獲系統在某一時間的進程狀態。如果想要不斷更新查看這個狀態,可以配合watch命令或使用top命令。ps命令支持三種使用的語法格式 UNIX 風格:選項可以組合在一起,并且選項前必須有”-“連字符。 BSD 風格 :選項可以組合在一起,但是選項前不能有”-&#822…

    2017-07-09
  • Linux磁盤管理進階

    Linux磁盤管理進階 dd命令 SWAP與移動介質 磁盤配額 RAID dd命令 dd – convert and copy a file Copy a file, converting and formatting according&…

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