一 進程
- 進程 :資源管理 輪流進行 時間片格式 程序被加載到內存中運行
線程 :執行管理
進程包含線程,線程包含協程 -
進程間的通信
同一主機:pipe socket signal shm semaphore
不同主機:rpc mq(消息隊列) - realtime 0-99
非實時 100-139 nice - 進程屬性 cat /proc/pid/status
-
renice 改存在的進程優先級
nice 改新進程的優先級
nice值具有傳遞性
chrt 設置realtime的優先級 - 處理殭屍進程方法:重啓
- ps axo pid,cmd,%mem,%cpu k -%cpu 查找使用最到的cpu進程
-
pidof:確切的程序名稱
uptime:負載
iostat :監控io
vmstat :檢測系統資源變化
iftop : 帶寬
dstat : vmstat加強版
top :動態查看進程 (wa變大可能是io變大)
htop
pmap : 進程映射內存
glances ; 系統監控
nload : 網絡吞吐量
dmesg : 分析內核產生的信息
9.lsof : 查找進程開啓的設備與文件
實驗一 : 恢復刪除文件
進程必須存在
lsof | grep (找到pid)
cd /proc/pid/fd 找到deleted
cat $num >
10.
fuser :借文件找到進程
實驗一:卸載時/home系統提示device is busy
umount /home
fuser -uvm /home
fuser -kim /home
umount
11.
kill :信號 pid
-1 重啓 (不過沒啥用 還容易死)
-9 殺死
-15 正常結束
-0 判斷進程是否正常
-18 讓後臺任務變運行
-19 相當於ctrl -z
-2 信號捕捉 相當於ctrl c
killall : 接cmd
二 計劃任務
1. at (僅執行1次的任務的命令)
atd服務支持(獨立bash,atd管理)
/etc/at.deny 此下的用戶不可使用at
-c
-l
-d
可以脫機運行
atq
atrm
2.batch 系統空閒時運行的命令(cpu負載小於0.8)
3.crontab(循環執行)
/etc/cron.deny 此下的用戶不可使用crontab
建立計劃任務記錄在/var/spool/cron
執行的每次任務記錄在/var/log/cron
crontab : -e
-l
-r
格式:
定義的path
分鐘 小時 日期 月 周 執行的命令
(最好寫絕對路徑)
crontab讀取的配置文件
/etc/crontab
/etc/cron.d/*
/var/spool/cron/*
4.
& 放置到後臺的任務
fg:後臺拿到前臺
bg:在後臺的任務變運行
nohup : 脫機管理 不支持內部命令
三
腳本編程
1.echo的問題
-n 不換行輸出
"`ifconfig`" :用引號將格式轉正常
-e:\t 製表符
\c 不換行
\n 換行
\a 響鈴
2.取6位隨機數
cat /etc/urandom | tr -dc '0-9' |head -c 6
3.邏輯運算
等腰三角形:計算空白數量
計算符號數量
確定循環幾次
4.while read
5.shift
6.continue
break
7.select
8.函數
return
9.fork
10.trap
11.數組
關聯數組
12.變量賦值
13.eval
14.expect 非交互模式