Linux學習命令彙總十一——Linux進程管理、做業控制及進程命令詳解

本章Blog相關Linux知識點node


    進程(process):進程是程序的執行實例,即運行中的程序,也是程序的副本;程序放置於磁盤中,而進程放置於內存中;進程的啓動及調度均是由內核發起的。init是全部進程的父進程,而子進程是由fork()進程生成。linux

    線程(Thread):一個進程至少包括一個線程,一般將該線程稱爲主線程,因此線程是比進程更小的單位,是系統分配處理器時間資源的基本單元。一個進程要想同時在多顆CPU上運行,必須得分紅互不影響的多個執行流,然後每組單獨在各自所分配的CPU上運行,這種分化後的執行流且有着比進程更小資源分配單位稱之爲線程。ios

    程序(Program):程序只是一個普通文件,是一個機器代碼指令和數據的集合,這些指令和數據存儲在磁盤上的一個可執行映象(Executable Image)中,因此,程序是一個靜態的實體。shell

進程優先級0-139 :vim

    實時優先級:0-99 ,數字越大,優先級越高windows

    靜態優先級:100-139,數字越小,優先級越高緩存

進程nice值:bash

    指靜態優先級,下降優先級
    取值範圍:-20—19;-20對用100,19對用139
服務器

進程類型:守護進程、用戶進程網絡

    守護進程:系統啓動時運行的進程,相似windows上的開機進程(開機任務),跟終端無關

    用戶進程:用戶經過終端啓動的進程,也能夠叫前臺進程,須要注意的是,也能夠把前臺進程送日後臺,以守護模式運行。

進程狀態:

    運行態:running ,正在運行的進程就是當前進程(由current所指向的進程),而準備運行的進程只要獲得CPU就能夠當即投入運行,CPU是這些進程惟一等待的系統資源。系統中有一個運行隊列(run_queue),用來容納全部處於可運行狀態的進程,調度程序執行時,從中選擇一個進程投入運行。

    等待態:waiting,處於該狀態的進程正在等待某個事件(event)或某個資源,它確定位於系統中的某個等待隊列(wait_queue)中。Linux中處於等待狀態的進程分爲兩種:可中斷的等待狀態和不可中斷的等待狀態。處於可中斷等待態的進程能夠被信號喚醒,若是收到信號,該進程就從等待狀態進入可運行狀態,而且加入到運行隊列中,等待被調度;而處於不可中斷等待態的進程是由於硬件環境不能知足而等待。

    睡眠態:sleeping,可中斷睡眠(interruptable)、不可中斷睡眠(uninterruptable)

    中止態:stop ,不會被調度 stopped ,此時的進程暫時中止運行來接受某種特殊處理。一般當進程接收到SIGSTOP、SIGTSTP、SIGTTIN或 SIGTTOU信號後就處於這種狀態。例如,正接受調試的進程就處於這種狀態。

    僵死態:zombie,系統調用,終止進程的信息也尚未回收。顧名思義,處於該狀態的進程就是死進程,這種進程其實是系統中的垃圾,必須進行相應處理以釋放其佔用的資源。

linux運行終端:經過命令 #tty 查看

    串行終端,串行端口終端(Serial Port Terminal)是使用計算機串行端口鏈接的終端設備,一般使用/dev/ttys/#表示

    物理終端,如/dev/console

    虛擬終端,Linux中提供的虛擬終端默認有6個,其中第1個是圖形界面,第2到6個則是字符界面。能夠經過Ctrl+Alt+F(1~6)組合鍵在不一樣的虛擬終端之間進行切換,Ctrl+Alt+F7啓動圖形界面(先啓動圖形功能#startx)  ,如/dev/tty/#    

    僞終端(模擬終端),咱們一般都是經過網絡遠程對Linux服務器進行管理,這種經過遠程登陸方式所打開的終端稱爲僞終端(pts)。好比咱們經過Xshell遠程登陸到Linux系統,如:/dev/pts/1
特殊命令組合功能:

    Ctrl +c 取消當前程序

    Shift +Pageup/Pagedown  翻屏查看命令界面以前的數


進程管理命令:pstree,ps,pgrep,top,htop,vmstat,dstat


# pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-Z] [-A|-G|-U] [pid|user]   查看進程樹命令

   pstree -V

    -a  顯示進程詳細信息

    -p 顯示進程及進程號

[root@PXE ~]# pstree -a
init
  ├─crond
  ├─dbus-daemon --system
  ├─dhcpd -user dhcpd -group dhcpd
  ├─hald
  │   ├─hald-runner
  │   │   ├─hald-addon-acpi
  │   │   └─hald-addon-inpu
  │   └─{hald}
  ├─ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
  ├─sshd
  │   ├─sshd 
  │   │   └─bash
  │   └─sshd 
  │       └─bash
  │           └─pstree -a
  ├─udevd -d
  │   ├─udevd -d
  │   └─udevd -d
  └─xinetd -stayalive -pidfile /var/run/xinetd.pid

[root@PXE ~]# pstree -p
init(1)─┬─crond(1212)
        ├─dbus-daemon(1064)
        ├─dhcpd(1202)
        ├─hald(1096)─┬─hald-runner(1097)─┬─hald-addon-acpi(1141)
        │            │                   └─hald-addon-inpu(1129)
        │            └─{hald}(1098)
        ├─ntpd(1186)
        ├─sshd(1165)─┬─sshd(1249)───bash(1254)
        │            └─sshd(5379)───bash(5384)───pstree(5508)
        ├─udevd(415)─┬─udevd(1247)
        │            └─udevd(1248)
        └─xinetd(1177)

# ps [options] :顯示當前進程狀態

    a 顯示全部與終端相關的進程

    x 顯示全部與終端無關的進程

    u 顯示全部的用戶

    -H:顯示進程的層次信息

    -F:顯示額外信息

    -o :要顯示的字段,自定義顯示格式  例# ps -axo PID,COMMAND

經常使用選項

    aux  顯示全部進程的全部信息

    -ef   顯示全部進程的全部信息

    -eHF  顯示全部進程的額外信息及進程層次關係

[root@PXE ~]# ps au
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       1232  0.0  0.0   4064   544 tty1     Ss+  18:53   0:00 /sbin/mingetty /dev/tty1
root       1234  0.0  0.0   4064   544 tty2     Ss+  18:53   0:00 /sbin/mingetty /dev/tty2

[root@PXE ~]# ps aux 
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.0  19364  1560 ?        Ss   18:52   0:01 /sbin/init
root       5566  0.0  0.0 110252  1136 pts/1    R+   22:22   0:00 ps aux

#各選項涵義:
    USER:顯示運行此進程的用戶
    PID: 進程ID號
    %CPU:當前進程運行時長佔據總CPU時長的百分比
    %MEM:當前進程使用內存佔據總內存的百分比
    VSZ: 虛擬內存集,即當前進程使用的內存加上共享庫大小
    RSS: 常駐內存集,當前進程常駐內存的大小,即不能被交換出去的空間大小
    TTY: 當前進程所關聯的終端
    STAT:進程狀態
        S:睡眠
        D:不可中斷睡眠(crond守護進程)
        R:運行
        T:中止
        Z:僵死
        s:session leader(會話領導者)
        l:多線程進程
        +:前臺進程
         N:低優先級進程
         <:高優先級進程
    START:進程啓動時間
    TIME: 當前進程真正佔據CPU的時間,而不是掛錶時鐘
    COMMAND:當前進程是由哪一個命令發起的
   
[root@PXE ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 18:52 ?        00:00:01 /sbin/init
root          2      0  0 18:52 ?        00:00:00 [kthreadd]
root          3      2  0 18:52 ?        00:00:00 [migration/0]

[root@PXE ~]# ps -eHF
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN    RSS PSR STIME TTY          TIME CMD
4 S root          1      0  0  80   0 -  4841 poll_s  1560   1 18:52 ?        00:00:01 /sbin/init
1 S root          2      0  0  80   0 -     0 kthrea     0   0 18:52 ?        00:00:00 [kthreadd]
1 S root          3      2  0 -40   - -     0 migrat     0   0 18:52 ?        00:00:00 [migration/0]

[root@PXE ~]# ps axo user,pid,command    # 顯示指定的字段 user,pid,command
USER        PID COMMAND
root          1 /sbin/init
root          2 [kthreadd]
root          3 [migration/0]

#各選項涵義:
    F:當前進程的標誌位(flags),4爲管理員
    S:當前進程的狀態
    PID:當前進程ID號
    PPID:父進程ID號
    C:使用時間佔據CPU百分比
    PRI:當前優先級
    NI:當前進程的nice值
    ADDR:kernel function,指出該程序在內存的那個部分。若是是個 running的程序,通常就是 "-"
    SZ:使用掉內存大小
    WCHAN:當前程序是否在運行中,"-"表示running
    RSS:常駐內存集
    PSR:當前進程被分配給哪一個處理器
    STIME:當前進程啓動時間
    TTY:當前進程所關聯的終端
    TIME:累計在CPU上運行的時間
    COMMAND:當前進程是由哪一個命令發起的


# pgrep [-flvx] [-d delimiter] [-n|-o] [-P ppid,...] [-g pgrp,...]      只顯示符合條件的進程號  例: # pgrep bash 顯示bash進程的進程號

            [-s sid,...] [-u euid,...] [-U uid,...] [-G gid,...]
            [-t term,...] [pattern]

    -f:僅顯示與進程匹配的名字

    -o:僅顯示找到的最小(起始)進程號

    -n:僅顯示找到的最大(結束)進程號

    -l:顯示進程名稱與進程pid

    -P:指定父進程號

    -g:指定進程組

    -t:指定開啓進程的終端

    -u:指定進程的有效用戶ID

[root@PXE ~]# pgrep bash   # 顯示bash進程的進程號
1254
5384

[root@PXE ~]# pgrep named   # 顯示named進程的進程號
1297

[root@PXE ~]# pgrep -u named   # 顯示用戶爲named的進程號
1297 

[root@PXE ~]# pgrep -l ntpd  # 顯示進程名稱與進程pid
2230 ntpd


# pidof [-s] [-c] [-x] [-o omitpid] [-o omitpid..]  program [program..]   顯示運行程序的進程ID

[root@PXE ~]# pidof sshd   # 查找sshd進程的id號
1371 1244 1166

[root@PXE ~]# pidof -s sshd    # 查找sshd進程的id號,但只顯示一個
1371


# top -hv | -abcHimMsS -d delay -n iterations -p pid [, pid ...]   查看系統進程

    -d #:指定延遲時長,單位是秒
    -b:以批處理模式操做
    -n #:在批模式下,共顯示多少批

    -p pid:顯示進程號爲pid的進程

top  命令下交互命令,下列按鍵表明不一樣的功能:

    M:按內存佔用百分比排序

    P :按cpu佔用百分比排序

    T :按照累積佔用cpu時間長度排序

     

    1鍵   是否顯示各個cpu信息,輸入1鍵關閉多個cpu顯示,在輸入1鍵又打開多個cpu顯示,如此循環

    m鍵  是否顯示內存信息,輸入m鍵關閉內存信息顯示,在輸入m鍵又打開內存信息顯示,如此循環

    t鍵  是否顯示cpu和進程的統計信息,輸入t鍵關閉cpu和進程的統計信息,在輸入t鍵又打開cpu和進程的統計信息,如此循環

    l鍵  是否顯示負載信息,輸入l鍵關閉負載信息,在輸入l鍵又打開負載信息,如此循環

    s鍵 輸入時間,調整top刷新時間間隔

    k鍵 輸入進程id,停止某一個進程

    q鍵  退出top命令界面

[root@PXE ~]# top -d 10 -p 1   #顯示pid爲1的進程且10s刷新一次
top - 23:02:22 up  4:09,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 99.7%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1941304k total,   506252k used,  1435052k free,    40000k buffers
Swap:  4194300k total,        0k used,  4194300k free,   300940k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                              
     1 root      20   0 19364 1560 1248 S  0.0  0.1   0:01.41 init                                                                                  

[root@PXE ~]# top -b -d 3 -n 2   #3秒刷新一次,批次顯示,顯示2批次後退出top
top - 23:27:46 up  4:34,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 100 total,   1 running,  99 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 99.7%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1941304k total,   506540k used,  1434764k free,    40036k buffers
Swap:  4194300k total,        0k used,  4194300k free,   300948k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                               
     1 root      20   0 19364 1560 1248 S  0.0  0.1   0:01.41 init                                                                                  
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd                                                                              
     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.01 migration/0                                                                           
     4 root      20   0     0    0    0 S  0.0  0.0   0:00.01 ksoftirqd/0   

#各選項涵義:
top - 23:27:06(當前時間) up  4:34(系統運行時長),  1 users(用戶數),  load average: 0.00, 0.00, 0.00 (等待運行的隊列長度,平均負載,1分鐘,5分鐘和15分鐘)
Tasks: 106 total(總進程數),   1 running(運行), 105 sleeping(睡眠),   0 stopped(中止),   0 zombie(僵死)
Cpu(s): 0.0%us(userspace用戶空間佔用百分比),  0.0%sy(system),  0.0%ni(被nice值調整的),  99.7%id(idle空閒 ),  0.0%wa(wait等待),  0.0%hi(hardware 硬中斷佔據時間),  0.0%si(軟中斷),  0.0%st (被偷走的)
Mem:   1941304k total(總內存大小),   506540k used(使用內存),  1434764k free(空閒內存),    40036k buffers(buffer內存)
Swap:  4194300k total(總swap內存大小),   0k used,  4194300k free,   300948k cached (緩存大小)
    PID:進程id號
    USER:進程全部者的用戶名
    PR:進程優先級
    NI:nice值
    VIRT:進程使用的虛擬內存總量 
    RES:進程使用的、未被換出的物理內存大小
    SHR:共享內存大小
    S:進程狀態,包括R運行,S睡眠,T中止,D不可中斷進程,Z僵死進程
    %CPU:上次更新到如今的CPU時間佔用百分比
    %MEM:進程使用的物理內存百分比
    TIME+:進程使用的CPU時間總計


 # htop [-dChusv]   查看系統進程,爲top功能的升級版

    -d:設置刷新時間,單位爲秒;

    -C:設置界面爲無顏色;

    -u:顯示指定用戶的進程;

    -s:對指定列進行排序顯示;

圖片.png

F1:顯示幫助信息;

    U:取消全部選中的進程;

    s:顯示光標所在進程執行的系統調用;

    l:顯示光標所在進程的文件列表;

    a:綁定進程到指定的CPU;

    u:顯示指定用戶的進程;

    M:按照內存使用百分比排序,對應MEM%列;

    P:按照CPU使用百分比排序,對應CPU%列;

    T:按照進程運行的時間排序,對應TIME+列;

    K:隱藏內核線程;

    H:隱藏用戶線程;

    #:快速定位光標到PID所指定的進程上。

圖片.png

 

# vmstat [-a] [-n] [-t] [-S unit] [delay [ count]]      顯示虛擬內存信息

   vmstat [-s] [-n] [-S unit]

   vmstat [-m] [-n] [delay [ count]]

   vmstat [-d] [-n] [delay [ count]]

   vmstat [-p disk partition] [-n] [delay [ count]]

   vmstat [-f]vmstat [-V]   

例:#vmastat  1  3    每一個1秒鐘並顯示3次

    -s 顯示內存統計信息

    -d 顯示磁盤統計信息

[root@PXE ~]# vmstat -a
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 1465856  41000 306400    0    0     6     2    7    9  0  0 100  0  0    

[root@PXE ~]# vmstat -d   #顯示硬盤統計信息
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
sda    14325   4702  680386   75203   3061  30380  267544   44943      0     69
dm-0   12436      0  374954  119300  18277      0  146216  235270      0     50
dm-1    1352      0   15826   16179     54      0     432      94      0      1
dm-2    3929      0  278258   20775  15101      0  120808 3140282      0     17
dm-3     197      0    1570     656      3      0      24       2      0      0

[root@PXE ~]# vmstat -s     #顯示內存統計信息
      1941304  total memory
       475448  used memory
       217052  active memory
       143012  inactive memory


#各選項涵義:
FIELD DESCRIPTION FOR VM MODE
   Procs
       r: The number of processes waiting for run time.
       b: The number of processes in uninterruptible sleep.

   Memory
       swpd: the amount of virtual memory used.
       free: the amount of idle memory.
       buff: the amount of memory used as buffers.
       cache: the amount of memory used as cache.
       inact: the amount of inactive memory. (-a option)
       active: the amount of active memory. (-a option)

   Swap
       si: Amount of memory swapped in from disk (/s).
       so: Amount of memory swapped to disk (/s).

   IO
       bi: Blocks received from a block device (blocks/s).
       bo: Blocks sent to a block device (blocks/s).

   System
       in: The number of interrupts per second, including the clock.
       cs: The number of context switches per second.

   CPU
       These are percentages of total CPU time.
       us: Time spent running non-kernel code. (user time, including nice time)
       sy: Time spent running kernel code. (system time)
       id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
       wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
       st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.

FIELD DESCRIPTION FOR DISK MODE
   Reads
       total: Total reads completed successfully
       merged: grouped reads (resulting in one I/O)
       sectors: Sectors read successfully
       ms: milliseconds spent reading

   Writes
       total: Total writes completed successfully
       merged: grouped writes (resulting in one I/O)
       sectors: Sectors written successfully
       ms: milliseconds spent writing

   IO
       cur: I/O in progress
       s: seconds spent for I/O


#  dstat [-afv] [options..] [delay [count]]   dstat 是一個能夠取代vmstat,iostat,netstat和ifstat這些命令的多功能工具,是一個全能系統信息統計工具

    -a :至關於-cdngy

    -l :顯示負載統計量

    -m :顯示內存使用率(包括used,buffer,cache,free值)

    -r :顯示I/O統計

    -s :顯示交換分區使用狀況

    -t :將當前時間顯示在第一行

    –fs :顯示文件系通通計數據(包括文件總數量和inodes值)

    –nocolor :不顯示顏色(有時候有用)

    –socket :顯示網絡統計數據

    -–tcp :顯示經常使用的TCP統計

    -–udp :顯示監聽的UDP接口及其當前用量的一些動態數據

    -–disk-util :顯示某一時間磁盤的忙碌情況

    -–freespace :顯示當前磁盤空間使用率

    -–proc-count :顯示正在運行的程序數量

    -–top-bio :指出塊I/O最大的進程

    -–top-cpu :圖形化顯示CPU佔用最大的進程

    -–top-io :顯示正常I/O最大的進程

    -–top-mem :顯示佔用最多內存的進程

圖片.png


# kill [-s signal|-p] [--] pid...    用於實現向其餘進程發送信息

   kill -l 顯示可用的信號

經常使用格式:

    # kill -n  進程id  , 例:#kill -9 36901 

    # kill -SIG[name]  進程id , 例: # kill -SIGKILL 36901

    # kill -[name]  進程id , 例:# kill -KILL 36901

圖片.png

#注:
    1信號SIGHUP:通知程序重讀配置文件,而不用重啓程序,至關於reload
    2信號SIGINT:至關於Ctrl+c功能,結束運行的任務
    9信號SIGKILL:殺死進程
    15信號SIGTERM:終止進程 ,默認信號爲15

[root@PXE ~]# ps aux | grep ntpd
ntp        5904  0.0  0.1  30744  2152 ?        Ss   08:37   0:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
root       7161  0.0  0.0 103276   848 pts/1    S+   14:52   0:00 grep ntpd

[root@PXE ~]# kill -9 5904   # 經過數字信號強制終止ntp 進程 

[root@PXE ~]# ps aux | grep dhcpd
dhcpd      1202  0.0  0.2  48208  4084 ?        Ss   02:21   0:00 /usr/sbin/dhcpd -user dhcpd -group dhcpd
root       7165  0.0  0.0 103272   840 pts/1    S+   14:59   0:00 grep dhcpd

[root@PXE ~]# kill -KILL 1202   # 經過信號名稱強制終止ntp 進程 

[root@PXE ~]# ps aux | grep xinetd
root       1177  0.0  0.0  21716   988 ?        Ss   02:21   0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
root       7183  0.0  0.0 103272   840 pts/1    S+   15:02   0:00 grep xinetd

[root@PXE ~]# kill -SIGKILL 1177    # 經過信號全名強制終止ntp 進程


# pkill [-signal] [-fvx] [-n|-o] [-P ppid,...] [-g pgrp,...]   # 基於名稱或其它屬性來查找進程,性能與killall相似

            [-s sid,...] [-u euid,...] [-U uid,...] [-G gid,...]
            [-t term,...] [pattern]
# killall [-Z,--context pattern] [-e,--exact] [-g,--process-group] [-i,--interactive] [-q,--quiet] [-r,--regexp]    經過名字殺死某些進程
    [-s,--signal signal] [-u,--user user] [-v,--verbose] [-w,--wait] [-I,--ignore-case] [-V,--version] [--] name ...
   killall -l
# killall -SIGNAL name  殺死name應用

[root@PXE ~]# ps aux | grep named 
named      1308  0.0  0.7 216872 15280 ?        Ssl  17:07   0:00 named -u named
root       1696  0.0  0.0 103276   844 pts/0    S+   18:03   0:00 grep named

[root@PXE ~]# pkill named      #結束named進程

[root@PXE ~]# ps aux | grep named
root       1700  0.0  0.0 103272   844 pts/0    S+   18:03   0:00 grep named

[root@PXE ~]# ps aux | grep dhcpd
dhcpd      1203  0.0  0.1  48208  3588 ?        Ss   16:53   0:00 /usr/sbin/dhcpd -user dhcpd -group dhcpd
root       1707  0.0  0.0 103276   848 pts/0    S+   18:05   0:00 grep dhcpd

[root@PXE ~]# killall dhcpd     #結束dhcpd程序進程

[root@PXE ~]# ps aux | grep dhcpd
root       1710  0.0  0.0 103272   844 pts/0    S+   18:07   0:00 grep dhcpd


Linux的做業控制及nice值調整


Linux做業控制:   

    前臺做業:佔據着一個終端

    後臺做業:做業執行時不佔據終端,做業啓動後就釋放終端、

非守護進程類的程序,啓動之後都在前臺工做

    若是已經啓動:前臺-->後臺。ctrl+z把前臺做業送日後臺,做業被」中止「

    若是還沒有啓動:# COMMAND &

退出當前會話,做業也會終止,由於做業與當前終端相關,若是把做業送日後臺後,不指望做業隨終止結束而中止
    # nohup COMMAND &

如何讓送日後臺的做業繼續執行:

    # fg [%]做業號碼:將做業調回前臺繼續進行

    # bg [%]做業號碼:讓做業在調整爲優先啓動

終止做業:默認的爲最後一個進入後臺的任務

    # kill  %做業號碼:終止做業      

查看做業號:
    # jobs

[root@PXE ~]# top &    #把做業送日後臺
[1] 1907

[root@PXE ~]# vi /etc/init.d/xinetd   # 使用 crtl +z 把進程由前臺轉爲後臺
^Z
[2]+  Stopped      vim /etc/init.d/xinetd

[root@PXE ~]# find /var  -print
^Z

[root@PXE ~]# jobs
[1]   Stopped                 top
[2]-  Stopped                 vim /etc/init.d/xinetd
[3]+  Stopped                 find /var -print

[root@PXE ~]# bg %2    #把2號後臺任務調爲優先啓動
[2] vim /etc/init.d/xinetd &

[root@PXE ~]# jobs
[1]-  Stopped                 top
[2]+  Stopped                 vim /etc/init.d/xinetd
[3]   Stopped                 find /var -print

[root@www ~]# fg      # 默認取出那個 + 的工做,亦即 [2]。

[root@PXE ~]# fg %1
top
top - 20:08:11 up  3:15,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 100 total,   1 running,  98 sleeping,   1 stopped,   0 zombie
Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 99.8%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1941304k total,   313784k used,  1627520k free,    60920k buffers
Swap:  4194300k total,        0k used,  4194300k free,   145412k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                       
     1 root      20   0 19364 1556 1248 S  0.0  0.1   0:01.08 init                                                                           
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd                                                                       
     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.09 migration/0                                                                    
     4 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0                                                                    
     5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0                                                                      
     6 root      RT   0     0    0    0 S  0.0  0.0   0:00.01 watchdog/0                                                                     
     7 root      RT   0     0    0    0 S  0.0  0.0   0:00.31 migration/1    

[root@www ~]# jobs     #查看做業號
[3]+  Stopped                 find /var -print

[root@PXE ~]# kill %3       #終止3號做業

[3]+  Stopped                 find /var -print

[root@PXE ~]# jobs
[3]+  Terminated              find /var -print

[root@PXE ~]# jobs     # 3號做業已終止

[root@PXE ~]# nohup top &    #把進程調入後臺執行
[1] 2426


# renice [-n] priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]  調整運行中進程的優先級

   renice -h | -v

# nice [OPTION] [COMMAND [ARG]...]   以預先定義的nice優先級啓動進程

[root@PXE ~]# ps axo ni,pid,command | grep bash    # 只顯示pid,nice值以及command 
  0   1967 -bash
  0   2041 -bash
  0   2091 grep bash

[root@PXE ~]# renice -5 2041       # 調整nice值爲-10
2041: old priority 0, new priority -5

[root@PXE ~]# ps axo ni,pid,command | grep bash   # 2041進程nice值變爲了-5
  0   1967 -bash
 -5   2041 -bash
 -5   2096 grep bash

[root@PXE ~]# nice -n 1 ntpd   #對於未啓用的ntp進程調整nice值,增長1

[root@PXE ~]# ntpd          

[root@PXE ~]# ps axo pid,ni,command | grep ntpd   #查看ntp進程nice值 ,變爲-4
  2230  -4 ntpd
  2247  -5 grep ntpd


本章blog知識點彙總


# pstree [-a|-p]  查看進程樹命令

# ps aux  查看當前進程狀態

# ps ef  顯示全部進程的全部信息

# ps axo pid,ni,command   只顯示進程的pid,nice值,command

# pgrep pattern  只顯示符合pattern的進程

# pidof pattern  顯示運行程序的進程ID

# top    查看系統進程

# top  -d delay -n iterations -p pid [, pid ...]   查看系統進程

# htop   查看系統進程,爲top功能的升級版  

# vmstat  [delay [ count]]      顯示虛擬內存信息      

# dstat  [delay [count]]   dstat 是一個能夠取代vmstat,iostat,netstat和ifstat這些命令的多功能工具,是一個全能系統信息統計工具

# kill [-s signal|-p] [--] pid...    用於實現向其餘進程發送信息

# pkill [-signal] [-fvx] [-n|-o] [-P ppid,...] [-g pgrp,...]   # 基於名稱或其它屬性來查找進程,性能與killall相似

# killall -SIGNAL name   殺死name應用

# COMMAND &   把做業送日後臺

# fg [%]做業號碼:將做業調回前臺繼續進行

# bg [%]做業號碼:讓做業在後臺調整爲優先執行

# kill  %做業號碼:終止做業  

# jobs  查看做業號

# renice [-n] priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]  調整運行中進程的優先級

# nice [OPTION] [COMMAND [ARG]...]  #以預先的優先級啓動進程

相關文章
相關標籤/搜索