要想讓進程運行起來计维,必須要有一個程序立由。
所以進程:就是一堆的命令+參數+執(zhí)行的程序
kill (就是干掉進程给赞。讓他停止運行)
-1 -HUP 加載服務的配置舀武,主進程不會重新啟動,但是子進程會被干掉骏啰,重新拉起新的子進程
-9 強制殺死节吮,謹慎使用。(比如我正在往磁盤寫數據器一,然后你強制殺掉了進程课锌,就會導致進程的中斷,而導致數據不完整祈秕,更可能會導致程序啟動不起來)
成為孤兒進程之后渺贤,就不能在提供服務了。
-15 正常停止進程信號请毛,如果進程還有任務在處理志鞍,那么則處理完成后,進程會自動退出方仿。
pkill +進程名字 pkill httpd
killall killall httpd
問題:在linux中輸入如下命令"(while :; do uptime; sleep 1; done) &" 固棚,新開一個終端查看該進程的狀態(tài),并嘗試終止該進程仙蚜。
輸入之后此洲,會出現一秒一次的動態(tài)進程。不能暫停委粉。也找不到它的pid呜师。所以只能pkill -9 -t pts/0 ,直接把登錄終端的用戶給強制踢出。
后臺進程
通常進程都是在終端的前臺運行贾节,但是一旦關閉終端汁汗。進程也會隨之結束。那么這個時候栗涂,我們希望它能在后臺運行知牌。達到就算我們退出了終端,他也能正常的運行
(就像qq的最小化斤程。我最小化之后角寸,就把它放在了后臺,然后并不影響我在前臺做其他的事。)
為啥要把進程放在后臺呢?
因為當我們在傳輸一個大數據的時候,需要時間打却,而這個時候我們剛好要去吃飯施掏,就可以直接把它放著,但是電腦會在一段時間不用之后亮曹,進入到一個休眠的狀態(tài)橄杨,這個時候,會斷網而導致進程中斷照卦,而導致Linux數據的傳輸失敗式矫。
怎么解決?
例如:查看日志記錄tail -f /var/log/messages
古老的辦法:tail -f /var/log/messages & (放在了后臺)
jobs (查看后臺作業(yè))
fg 數字 (回到前臺)
然后在ctrl +c 退出役耕。
但是這樣做采转,會出現在你登錄一個窗口會退出時。會把信息顯示到你的前臺瞬痘。
然后出了一個辦法:tail -f /var/log/messages &>>/tmp/1.txt &
將執(zhí)行的后臺的結果追加到一個文件中故慈。然后執(zhí)行。這樣不會出現在出現在前臺提示框全。
現在的神器高科技:
screen 原理圖()
screen -S wget_mysql (創(chuàng)建一個窗口察绷,指定名稱)
進入窗口執(zhí)行任務,不管是傳輸還是什么
使用ctrl+a+d (平滑的退出)津辩,相當于將窗口掛在了后臺拆撼。但是如果你使用了exit命令,相當于你退出了窗口喘沿,就再也進不去了
screen -list 查看正在運行的screen有哪些
screen -r wget_mysql 或screen -r IP號 重新進去到窗口闸度。
進程的優(yōu)先級?
就是優(yōu)先享受資源蚜印。比如排隊買票的時候莺禁,都是老人,軍人優(yōu)先晒哄。
為啥要有優(yōu)先級睁宰?
很簡單,我需要得到別人不同的待遇寝凌。cpu在同一時間只能處理一個任務柒傻,而它的任務過多,或者時間過長较木,我在輸入自己想輸入的命令時就會排隊红符,比如ssh,進入遠程的窗口。那么我如果沒有優(yōu)先待遇预侯,就會很難得到回復致开。
在啟動進程時,為不同的進程使用不同的調度策略萎馅。
nice 值越高:表示優(yōu)先級越低 +19 該進程容易將cpu的使用量讓給其他進程先使用
nice 值越低:表示優(yōu)先級越低 -19 該進程不傾向將cpu的使用讓出
低 正常 高
+20 0 -20
那如何配置進程的優(yōu)先級双戳?
nice指定程序的優(yōu)先級。語法格式 nice -n 優(yōu)先級數字 進程名稱
nice -n -5 vim & 直接配置優(yōu)先級
ps aux |grep vim 查看優(yōu)先級renice命令修改一個正在運行的進程優(yōu)先級糜芳。語法格式 renice -n 優(yōu)先級數字 進程pid
ps -ef |grep ssh 過濾出自己想要調整的進程
renice -n -20 26259 修改優(yōu)先級
ps axo pid,command,nice |grep ssh 過濾只查看的內容
退出重新登錄飒货,就會使得父進程分配一個優(yōu)先級。 23750 sshd: root@pts/1 -20 26259 /usr/sbin/sshd -D -20
如何處理假死的現象峭竣?
平均負載:
平均負載是指單位時間內塘辅,系統(tǒng)處于 可運行狀態(tài)R 和 不可中斷狀態(tài)D 的平均進程數,也就是平均活躍進程數皆撩,
平均負載其實就是單位時間內的活躍進程數扣墩。 ( 可運行狀態(tài)R + 不可中斷狀態(tài)D )
理想的平均負載?
每一個cpu上都剛好運行著一個進程扛吞,這樣每個cpu都得到充分利用呻惕。而判定平均負載,首先要知道自己的系統(tǒng)有幾個cpu喻粹。通過top 1 獲取蟆融。。也可以grep "model name"/proc/cpuinfo
當你在4守呜,2型酥,1核的cpu上,平均負載如果是2查乒,意味著弥喉?
在4個cpu系統(tǒng)上,意味著有百分之五十點空閑
在2個cpu系統(tǒng)上玛迄,意味著有百分之百的剛好完全占用
在1個cpu系統(tǒng)上由境,意味著有一半的進程競爭不到cpu,導致電腦卡
怎么看平均負載蓖议?
要三個值一起看
1.如果三個值相差不大虏杰,證明沒問題
2.如果1分鐘的值遠小于15分鐘。 證明負載在減小
3.如果1分鐘的值遠大于15分鐘勒虾。證明負載在這個時候突然上升
也可以通過計算的方法:
出現負載之后的檢查流程:
1.uptime看看負載的情況 ( 超過了 cpu的核心 )
2.top看是cpu的使用率高 還是 wa等待高 還是內核態(tài)占用cpu高 纺阔、軟中斷高 、nice優(yōu)先級進程占用cpu修然、
3.top看是哪個進程
4.追蹤這個進程的情況笛钝。
5.看看是否存在異常日志质况。
平均負載和cpu的使用率有啥關系
CPU 密集型進程,使用大量 CPU 計算會導致平均負載升高玻靡,此時這兩者是一致的结榄; ( 視頻的轉碼 加密 計算圓周率 )
I/O 密集型進程,等待 I/O 也會導致平均負載升高囤捻,但 CPU 使用率不一定很高臼朗; wa
大量的 CPU 進程調度也會導致平均負載升高,此時的 CPU 使用率也會比較高最蕾。
cpu密集進程依溯,用戶進程飆升。
[root@fanxiaolei ~]# stress --cpu 1 --timeout 600 (模擬大量用戶進程訪問瘟则,造成us飆升)
然后通過top查看。
watch -d uptime (如果負載過高枝秤,會高亮顯示)
mpstat -P ALL 5 (查看cpu的使用率變化情況)
(表示監(jiān)控所有cpu醋拧,數字5是,5秒輸出一組數據)
pidstat -u 5 1 (查看哪個進程導致的cpu使用率高)
I/O 密集型進程
[root@fanxiaolei ~]# stress --io 1 --timeout 600
大量的cpu 進程的調度
[root@fanxiaolei ~]# stress -c 4 --timeout 600