進程管理
1、程序與進程的區別
程序:保存在硬盤、光盤等介質中的可執行代碼和數據;是靜態保存的代碼
進程:在CPU及內存中運行的程序代碼; 是動態執行的代碼;
父、子進程:每個進程可以創建一個或多個進程
2、查看進程信息
1)、ps命令
用途:查看靜態的進程統計信息
格式:ps aux ==>顯示系統所有進程
ps -elf ==>以長格式顯示
2)、top命令
用途:查看動態的進程排名信息
格式:top
3)、pgrep命令
用途:根據特定條件查詢進程PID信息
[root@localhost ~]# pgrep "init" 1 [root@localhost ~]# pgrep -l "log" 2538 syslogd 2541 klogd 3221 login [root@localhost ~]# pgrep -l -U teacher -t tty1 27483 bash 27584 vim
4)、pstree命令
用途:以樹型結構顯示各進程間的關系
格式:pstree [-aup]
3、進程的不同啟動方式
1)手工啟動
前台啟動:用戶輸入命令直接執行程序
後台啟動:在命令行尾加入“&”符號(即把這個命令放在後台執行,執行後,會顯示一個後台任務順序號和一個PID號)
[root@localhost ~]# ls -l & [1] 28453 ==>後台任務序號為1(這個要記住,因為喚醒時要用到),PID號為28453
2)調度啟動
使用at命令,設置在某個特定的時間,執行一次任務
使用crontab命令,設置按固定的周期(如每天、每周等)重復執行預先計劃好的任務
3)、進程的前後台調度ctrl+Z : 將當前進程掛起,即調入後台並停止執行
jobs :查看處於後台的任務列表
fg : 將處於後台的進程恢復到前台運行,需指定任務序號
4)、終止進程的運行
Ctrl + C :中斷正在執行的命令
kill、killall : kill 用於終止指定PID號的進程
killall 用於終止指定名稱的所有進程
-9選項用於強制終止
下面是我使用top命令獲取當前正在運行的進程(部分)
這裡有兩條top的進程,是因為我打開了兩個terminal,然後都運行了top命令,若我現在要將另一個終端的top命令殺掉,則如下:
[root@localhost ~]# kill 3792 ==>此時另一個額終端將退出top命令
若殺掉所有正在打開的文本文件:killall -9 geidt
終止進程的運行——pkill命令
[linuxidc@localhost ~]$ w | grep -v "root" ==>查看除root用戶外哪些用戶在使用終端 11:17:38 up 1:18, 3 users, load average: 0.14, 0.05, 0.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT linuxidc :0 - 10:01 ?xdm? 18.56s 0.22s /usr/bin/gnome- linuxidc pts/1 :0.0 11:17 0.00s 0.02s 0.01s w linuxidc pts/2 :0.0 11:17 10.00s 0.01s 0.01s bash [linuxidc@localhost ~]$
上述pts有2個,是因為我打開了兩個terminal,並且都是以linuxidc用戶登錄的,現在我要停止pts/1裡的所有進程:
[linuxidc@localhost ~]$ pkill -9 -t pts/1 ==>這個命令一旦運行,則pts/1這個終端將立即關閉
再次查看時只有一個pts/2了:
[linuxidc@localhost ~]$ w | grep -v "root" 11:22:13 up 1:22, 2 users, load average: 0.09, 0.12, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT linuxidc :0 - 10:01 ?xdm? 18.56s 0.22s /usr/bin/gnome- linuxidc pts/2 :0.0 11:17 00.00s 0.01s 0.00s w [linuxidc@localhost ~]$