程序的管理是運維的基本功之一,對如何玩轉shell十分關鍵
$$ $bashpid 都可以,他們的區別如下指令碼
$ echo $$ $bashpid | cat -
11656
31528
$ echo $$ $bashpid
11656
11656
$ echo $$ | while
read line; do
echo
$line $$ $bashpid; done
11656
11656
31497
$ while
read line; do
echo
$line $$ $bashpid; done
<<< $$
11656
11656
11656
$ppid
pstree -p
基本資訊
ps -p
top -p
除錯該程序
strace -p
gdb program
/proc/
下面幾個方法:
ps -ef | grep *** | grep -v grep | awk ''
ps -ef | grep -w [g]*** | awk ''
pgrep -x ***
ps -c *** -o pid
ps [[ -d /proc/]]
kill -0
kill -0 返回為0,說明給的程序傳送訊號成功
,意味著
1. 程序存在
2. 許可權允許
$? 表示上乙個命令的返回碼,返回碼範圍:[0-255]
一般用 0 表示成功,非0的返回碼,bash有一些特殊含義
- 1: 一般錯誤
- 2: shell內建命令用法錯誤
- 126: 呼叫的命令不可執行
- 127: 「命名不存在」
- 128+n: 致命錯誤訊號「n」
- 130: control-c終止
- 255: exit的狀態碼不合法
parallel -j5 wget ***url
xargs –n 1 –p 6 wget ***url
grep超大日誌加速cat biglog | parallel --pipe grep pattern
改寫for loopdoit
() {} export
-f doit; cat list | parallel doit
```#### 傳引數
```bash
seq 5 | parallel echo prefix_{}
"se-preview-section-delimiter">
像cat | sh一樣parallel -j 50
< jobs_to_run
2 程序管理
1 程序控制塊pcb 我們知道,每個程序在核心中都有乙個程序控制塊 pcb 來維護程序相關的資訊,linux核心的程序控制塊是task struct結構體。usr src linux headers 3.16.0 30 include linux sched.件中可以檢視struct task st...
linux程序管理(2)
程序家族樹 在task struct資料結構中,我們可以通過parent和children等域,如獲得當前程序的父程序 struct task struct my parent current parent 而在linux系統中,如前面所述,是儲存在乙個雙向鍊錶中的,所以可以通過以下方法獲得前乙個程...
linux程序管理2
1.後台執行作業 root lly sleep 100 2 5611 root lly sleep 1000 3 5612 root lly ps ef grep sleep root 5608 5577013 32 pts 000 00 00 sleep 1000 root 5611 557701...