程序概述
具有某種標明任務的程式在一個資料集合上的一次具體執行過程
每一個程序都有一個獨立的程序号(Process ID,PID),系統通過調用程序号來排程操控程序
系統的原始程序是systemd 。PID總是1,是系統中第一個啟動的程序
一個程序可以産生另一個程序。除了systemd 以外,所有的程序都有父程序
檢視程序PS
ps [option] 前面不加-的就是不加
• a 顯示所有包括所有終端的程序
• x 顯示所有包括不連接配接終端的程序(如守護程序)
• u 顯示程序所有者的資訊
• p 顯示指定程序ID的資訊 後面跟PID
• -e 顯示所有程序
• -f 顯示程序的父程序
因為-e包含-f,是以-e和-f連用分不清哪個是父程序,是以如果想看父程序,就單獨用-f
• -l 以長清單的方式顯示資訊
• -o 屬性,… 顯示定制的資訊(ps -o tty,pid或者是ps -o tty -o pid)這就是顯示順序
• pid、comm、%cpu、%mem、state、tty…
• pstree可以用來以樹狀的方式表現程序的父子關系
ps的一般用法是ps aux | grep
搜尋程序ps aux | grep XXX
按預定的模式:pgrep
• pgrep –U root 檢視使用者root運作的程序的程序号
• pgrep –G redhat 檢視組redhat運作的程序的程序号
按确切的程式名稱:pidof
• pidof bash
通過管道來搜尋(上面的按預定和按确切程式的不常用)
• ps aux | grep XXX 最重要的
ps aux | grep root
控制程序
kill
用于向指定程序号發送特定信号
文法:kill [-signal]
• kill -l:列出所有可以由kill傳遞的訊号
• man 7 signal:顯示信号的詳細清單
• -15,TERM(預設)-整潔終止
預設為15(終結),把這個程序要做的事兒做完再死
• -9,KILL-立即終止
killall
根據程序名來發送標明信号
文法:killall [-signal]
比如我yum安裝一個軟體包的時候給它通過ctrl+z打斷了,如果我再敲同樣的指令的時候會有如下的提示,告訴我有安裝還沒退出,目前安裝無法開始。需要等它退出才能繼續
Another app is currently holding the yum lock; waiting for it to exit...
The other application is: yum
Memory : 97 M RSS (457 MB VSZ)
Started: Sat Jul 6 13:55:48 2019 - 01:44 ago
State : Traced/Stopped, **pid: 13041**
這時可以通過kill掉這個程序來解決這個問題
ps aux | grep yum 可以看到關于yum的程序,我記住一個程序号,比如為15177,
我通過kill -15 15177 殺不死。但是通過kill -9 15177可以殺死。像yum中斷這種,它已經中斷了,無法再繼續完成它的任務後再被殺死,是以-15是殺不死它的,必須要通過-9
❉killall後面還是加-9或-15。但是killall後面加的不是pid,而是程序名
如果有一個程序A,它依賴于B,那麼即使殺死B,A還會重新生成B。但一般都不會平白無故殺死一個程序,都是在一個程序嚴重占用系統資源的時候殺死它
★killall -9 systemd 執行不了,因為執行這個權限是systemd給的,是以不能殺掉這個程序
前台程序與背景程序
程序描述:
預設情況下,一個指令執行後,此指令将獨占shell,并拒絕其他輸入。我們稱之為前台程序。反之,則稱為背景程序。比如qq,最小化以後就是背景狀态。前台的不一定是運作的,也可能是僵屍。背景的不代表不是運作的
對每一個終端,都允許多個背景程序
對前台/背景程序的控制與排程,被稱為任務控制
将一個前台程序放入背景
• & 将一個程序直接丢入背景,在背景還是在運作的
killall -15能殺死
想讓控制台能正常寫别的指令行就ctrl+d
• ctrl + z:将一個正在運作的前台程序暫時停止,并丢入背景
killall -15殺不死它,隻能用killall -9
前台運作的時候可以通過ctrl+z打斷,但背景運作的通過ctrl+z打斷不了,隻能通過kill給它發送結束信号才能結束
背景程序的控制
• jobs 列出系統作業号和名稱
• fg [%作業号] 将背景中的指令調至前台繼續運作
• bg [%作業号] 将在背景暫停的指令恢複在背景運作
• kill [%作業号] 給對應的作業發送終止信号
如果讓程式始終在背景執行,即使關閉目前的終端也執行(之前的&做不到),這時候需要nohup。該指令可以在你退出帳戶/關閉終端之後繼續運作相應的程序
nohup &