Linux進程管理

來源:互聯網
上載者:User

一、進程的概念

  1、進程和程式的區別

    1)程式是靜態概念,本身作為一種軟體資源長期儲存,而進程是程式的執行過程,它是動態概念,有一定的生命週期,是動態產生和消亡的

    2)程式和進程無一一對應關係,一個程式可以由多個進程共用;另一方面,一個進程活動中可以順序地執行若干程式

  2、父進程與子進程

    1)子進程是由一個進程所產生的進程,產生這個子進程的進程稱為父進程

    2)在Linux系統中,使用系統調用fork建立進程。fork複製的內容包括父進程的資料和堆棧段以及父進程的進程環境

    3)父進程終止,子進程自然終止

  3、前台進程和後台進程

    1)在Shell提示處輸入命令後,建立一個子進程,運行命令,Shell等待命令退出,然後返回到對使用者給出提示符。這條命令與Shell非同步運行,即在前台運行,使用者在它完成之前不能執行其他命令  

[root@bogon ~]# find /etc -name init/etc/kdump-adv-conf/kdump_initscripts/init/etc/webmin/init/etc/init/etc/sysconfig/init[root@bogon ~]#

    2)在Shell提示處輸入命令後,若後隨一個&,Shell建立的子進程運行此命令,但不等待命令退出,而直接返回到對使用者給出提示。這條命令與Shell同步運行,即在後台運行,後台進程必須是非互動。

[root@bogon ~]# find /etc -name init > /tmp/init.find &[1] 1656[root@bogon ~]# 

    1656為處理該命令的子進程ID

  4、進程狀態

    1)就緒:進程已經分配到資源,但因為其他進程正佔用CPU,所以暫時不能運行而等待分配CPU的狀態

    2)等待:因等待某種事件而暫時不能啟動並執行狀態

    3)運行:進程分配到CPU,正在處理器上運行

  5、查看所有登入使用者資訊 w

[root@bogon ~]# w 22:05:30 up 56 min,  2 users,  load average: 0.00, 0.00, 0.00USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHATroot     tty1     -                21:10   54:31   0.05s  0.05s -bashroot     pts/0    192.168.0.101    21:11    0.00s  0.09s  0.01s w[root@bogon ~]# 

    1)JCPU:以終端號區分,該終端所有相關的進程執行時,所消耗的CPU時間會顯示在這裡

    2)PCPU:CPU執行程式耗費的時間

    3)WHAT:使用者正在執行的操作

    4)load average:分別顯示系統在過去的1、5、15分鐘內的平均負載程度

    5)FROM:顯示使用者從何處登入

    6)IDEL:使用者閑置時間

    7)查看個別使用者登入資訊:w 使用者名稱

  6、查看系統中的進程 ps

    常用選項:

    a:顯示所有使用者的進程

    u:顯示使用者名稱和啟動時間

    x:顯示沒有控制終端的進程

    e:顯示所有進程,包括沒有控制終端的進程

    l:長格式顯示

    w:寬行顯示

    1)查看隸屬於自己的進程

[root@bogon ~]# ps  PID TTY          TIME CMD 1581 pts/0    00:00:00 bash 1606 pts/0    00:00:00 ps[root@bogon ~]#

    2)查看隸屬於自己進程的詳細資料ps -u or -l  

[root@bogon ~]# ps -uWarning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQUSER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDroot      1473  0.0  0.0   2004   484 tty2     Ss+  21:24   0:00 /sbin/mingettyroot      1475  0.0  0.0   2004   480 tty3     Ss+  21:24   0:00 /sbin/mingettyroot      1477  0.0  0.0   2004   480 tty4     Ss+  21:24   0:00 /sbin/mingettyroot      1479  0.0  0.0   2004   480 tty5     Ss+  21:24   0:00 /sbin/mingettyroot      1481  0.0  0.0   2004   508 tty6     Ss+  21:24   0:00 /sbin/mingettyroot      1552  0.0  0.1   8016  1652 tty1     Ss+  21:24   0:00 -bashroot      1581  0.0  0.1   6736  1612 pts/0    Ss   21:30   0:00 -bashroot      1607  2.0  0.1   6548  1040 pts/0    R+   21:33   0:00 ps -u[root@bogon ~]#

    3)查看系統中指定進程資訊

[root@bogon ~]# ps -le | grep sshd5 S     0  1331     1  0  80   0 -  2131 -      ?        00:00:00 sshd4 S     0  1579  1331  0  80   0 -  2903 -      ?        00:00:00 sshd[root@bogon ~]#
[root@bogon ~]# ps -ef | grep sshdroot      1331     1  0 21:24 ?        00:00:00 /usr/sbin/sshdroot      1579  1331  0 21:30 ?        00:00:00 sshd: root@pts/0 root      1624  1581  0 21:46 pts/0    00:00:00 grep sshd[root@bogon ~]#

  7、kill—殺死進程

    1)關閉進程:kill 進程號

    2)kill -9 進程號(強行關閉)

    3)kill -l 進程號(重啟進程)

    4)關閉圖形程式 xkill

    5)結束所有進程 killall 進程名稱

    6)尋找服務進程號 pgrep 服務名稱

    7)關閉進程:pkill 進程名稱

  8、指定程式的運行優先順序

    1)nice 指定程式的運行優先順序

    格式:nice -n command

    例如:nice -5 myprogram

    2)renice 改變一個正在啟動並執行進程的優先順序

    格式:renice n pid

    例如:renice -5 777

    3)優先順序取值範圍(-20,19)

  9、nohup

    使進程在使用者退出登入後仍舊繼續執行,nohup命令將執行後的資料資訊和錯誤資訊預設儲存到檔案nohup.out中

    格式: nohup program &

[root@bogon ~]# nohup find /etc -name init* > /root/find.init.20121225 &

  10、進程的掛起和恢複

    1)進程的中止(掛起)和終止

      掛起:Ctrl+Z

      終止:Ctrl+C

    2)進程的恢複

      恢複到前台繼續運行 fg

      恢複到後台繼續運行 bg

    3)查看被掛起的進程 jobs

[root@bogon ~]# jobs[1]+  Stopped                 find / -name inittab[root@bogon ~]# 

    調到前台執行:fg 編號

[root@bogon ~]# fg 1find / -name inittab/etc/webmin/inittab/etc/inittab/backup/etc/inittab

    調到後台執行 bg 編號

[root@bogon ~]# bg 1

  11、top

    進程狀態顯示和進程式控制制,每5秒鐘自動重新整理一次(動態顯示)

    常用選項:(在top執行後使用)

    d:指定重新整理的時間間隔

    c:顯示真箇命令列而不僅僅顯示命令名

    u:查看指定使用者的進程

    k:終止執行中的進程

    h or ?:獲得協助

    r:重新設定進程優先順序

    W:將當前設定寫入~/.toprc檔案中

 

二、計劃任務

  1、計劃任務的命令

    1)at  安排作業在某一時刻執行一次

      安排一個或多個命令在指定時間運行一次

      at的命令格式及參數:

      at [-f 檔案名稱] 時間

      at命令指定時間的方式:

      絕對計時方法:

        midnight  noon  teatime

        hh:mm [today]

        hh:mm: tomorrow

        hh:mm 星期

        hh:mm MM/DD/YY

      相對計時方法:

        now + n minutes

        now + n hours

        now + n days

      指定在今天下午18:00執行某命令,假設現在時間是下午15:00,2013年1月2日

      命令格式如下:

      at 6:00pm

      at 18:00

      at 18:00 today

      at now + 3 hours

      at now + 180 minutes

      at 18:00 2.1.13

      at 18:00 1/2/13

      互動方式執行:比如在5分鐘後把/etc/motd 中的內容廣播出去

[root@localhost ~]# at now +5 minutesat> /usr/bin/wall < /etc/motdat> <EOT>job 1 at 2013-01-01 21:01[root@localhost ~]#

    輸入完命令後,按Ctrl+d儲存,時間一到,就會把內容廣播出去了

    使用命令檔案方式

    把要執行的命令寫在指令檔at.script中,然後使用下面的命令

[root@localhost ~]# at -f at.script 21:20 1/2/13job 2 at 2013-01-02 21:20[root@localhost ~]# 

    at -l or atq 查看隊列中的任務

[root@localhost ~]# at -l2       2013-01-02 21:20 a root[root@localhost ~]# 

 

[root@localhost ~]# atq2       2013-01-02 21:20 a root[root@localhost ~]# 

    at -d or atrm 刪除隊列中的任務

[root@localhost ~]# at -d 2[root@localhost ~]# 

    產生的計劃任務存放在:/var/spool/at

      

    at 設定檔

    作用:限制哪些使用者可以使用at命令

    /etc/at.allow

    /etc/at.deny

    2)batch  安排作業在系統負載不重時執行一次

      安排一個或者多個命令在系統負載較輕時執行一次(一般情況下負載較輕是指平均負載降到0.8以下)

      使用方法同at

    3)cron  安排周期性啟動並執行作業

      用於產生cron進程所需要的crontab檔案

      crontab的命令格式

      crontab {-l|-r|-e}

      -l  顯示當前的crontab

      -r  刪除當前的crontab

      -e  使用編輯器編輯當前的crontab檔案

      crontab檔案格式:

        分鐘 小時 天 月 星期 命令/指令碼

        minute hour day-of-month month-of-year day-of-week commands

  

        minute  一小時鐘的哪一分鐘[0~59]

        hour  一天中的哪個小時[0~23]

        day-of-month  一月中的哪一天[1~31]

        month-of-year  一年中的哪一月[1~12]

        day-of-week  一周中的哪一天[0~6]

        commands  執行的命令

        

                  分鐘  小時  天  月  星期  命令/指令碼

每天淩晨4點執行:          0   4     *    *  * 

每周二和周五下午6點執行:      0   18   *        *       2,5(逗號分隔不連續的值)

1月到3月每周二和周五下午6點執行:   0     18       *        1-3  2,5   (連續的值用-串連)

                  */2(每隔2分鐘)       

      crontab檔案建好以後可以到/var/spool/cron目錄中確認

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.