天天看點

程序管理

程序管理

 linux中,所有程序都是init程序的後代程序,init的程序号是1,也有程序号是0的程序

程序狀态

  running 運作

  ready(runnable) 就緒

  sleep

    interruptable 使用者随時可以喚醒 可打斷睡眠

    uninterruptable 通常在等待I/O操作,非可打斷睡眠

  stop 停止  不能被排程(無外力的情況下)

  zombie 僵死 父程序處理後事

檢視程序資訊的指令

 #pstree 檢視程序樹

 #ps(process state) 快照目前與使用者相關的前台程序的資訊以顯示

    VSZ 虛拟記憶體集

    RSS 實體記憶體空間 在TOP中此項是RES

    STAT S sleep 可中斷睡眠

       R Running 運作

       D 不可中斷的睡眠

       T 停止态

       Z 僵死态

       < 高優先級的程序

       s 發起會話的程序

       N 低優先級的程序

       l 多線程的程序 MultiThread

       + 前台程序

     支援BSD的風格的指令(選項不帶-)

     a 顯示主要與終端相關的程序

     x 顯示主要與終端無關的程序

     u 顯示與使用者相關的資訊

     以上三個選項配合起來使用

      #ps aux 顯示與使用者相關的所有程序

   -e =ax 顯示所有程序資訊

   -f     顯示程序詳細資訊

      -ef 顯示所有程序的詳細資訊

   -j     以作業方式顯示

   -H     顯示程序森林

      -ejH 以作業方式顯示詳細資訊和程序樹

      -aujf 顯示程序樹

   -o      顯示使用者指定字段

   #ps axo pid,tty,cmd 顯示所有程序的程序号,終端,和程序名

   #ps efo pid uid     顯示所有程序的詳細資訊中程序号和使用者ID

     Attention

        watch  周期性的顯示指令執行情況

           -n 指定周期,機關秒

           -n 1

           -n .5 0.5s

         watch -n .5 `指令`

   pgrep (process grep)

      -U 查找與某一使用者相關的程序

      -G 查找與某一組相關的程序

      -t 查找終端程序

      -P 查找父程序為PPID的程序

   pgrep pattern 顯示符合pattern的程序号

   pidof 查找某一正在運作程序的pid

程序通信

  1.共享記憶體空間

  2.傳遞信号 signal 可互相傳遞

       #kill -l 顯示信号

       #man 7 singal 顯示信号

    signal:

     1)SIGHUP     通知某個程序重讀配置檔案

     2)SIGINT    類似ctrl+c 使程序終止

     9)SIGKILL   殺死某一程序,不計後果,其結果是其子程序很成為無處可去的程序

     15)SIGTERM  殺死某一程序,但給予一定時間處理必要工作

     18)SIGCONT  外力喚醒程序(Stop态的程序)

     19)SIGSTOP  終止

       Attention:序号不僅表示其索引順序,也同樣可以通過序号引用信号

       #kill -SIGHUP PID 将信号SIGHUP發送給pid為PID的程序

 same as #kill -1      PID

      #killall process_name 殺死所有process_name程序

      #pkill -SIGNAL  pattern  查找程序通過名字或者其他屬性

程序優先級

  動态優先級

  靜态優先級

       程序資訊中的nice值即表示優先級 -20到19對赢優先級的100到139 數值越大優先級越小

       普通使用者隻能提高nice值也就是隻能降低自己的優先級

       程序建立時,nice被指定為0對應120

       #nice 程序還未運作,設定初始nice值

         #nice -n num 程序名

       #renice 程序已啟動

         #renice num PID(數字)

       #ps -efo nice,comm|cmd,pid 列印所有程序的nice值,程序名和程序号

作業job

  1.前台作業/程序

       跟使用者相關,執行開始之後,結束之前始終占據指令提示符的程序

  2.背景做緊/程序

       執行開始後,立即釋放指令提示符,無論程序結束與否

     前台-->背景,ctrl+z挂起不執行了

     背景-->前台,fg

    3.jobs 檢視背景作業清單

        #fg 不帶任何參數 調回jobs清單中帶+号的那個作業

        #fg [%]jnum jnum是作業清單每行第一個顯示的數字

       希望程序送到背景繼續執行

         1.#bg [%]jum

         2.kill %num 此處的%不能省略 因為kill num 表示殺死pid為num的程序

       前台發起程序,前台終端退出,則程序終止

        #nohup 程序名 使程序脫離跟終端的這種從屬關系,即使終端關閉,也可工作

      #command & 将command直接送入背景執行,最好非互動的指令

   4.top   same as windows下的任務管理器 每隔5秒重新整理

           "1" 展開|收起 各個cpu狀況資訊(最少有2個cpu才可以)

           k,kill某個程序

         字段含義

              load average num1 num2 num3

                  load average 平均負載,平均等待隊列時間長度

                  num1          過去1分鐘平均隊列長度

                  num2          過去5分鐘平均隊列長度

                  num3          過去15分鐘平均隊列長度

          #top -d(delay 延遲) num  機關秒 延遲多少秒重新整理

          #top -b -n 3

             -b 工作在批處理模式下

             -n 在批處理模式下,重新整理幾次結束指令

             3  重新整理3結束指令

繼續閱讀