我的命令解釋器是bash的shell.After在我的OS(百分之OS)開口端,我已經執行以下命令:在Linux中,sh -c「ps -l」是什麼意思?
場景1
$sh -c "ps -l"
UID PID PPID TIME CMD
3038 2577 2504 00:00:00 bash
3038 2992 2577 00:00:00 ps
場景2
$sh
$ps -l
UID PID PPID TIME CMD
3038 2577 2504 00:00:00 bash
3038 3005 2577 00:00:00 sh
3038 3006 3005 00:00:00 ps
觀察ps
的PID和PPID。
在場景1中,我在sh
shell上執行ps -l
命令。所以它的父應該是sh
,即它的PPID應該是sh
的PID。但是ps -l
命令列表它的父項是bash
。我不明白到底發生了什麼。我瞭解方案1和方案2之間的差異。但是,當我在另一個操作系統執行相同的命令(Ubuntu的),我在情景讓ps -l
下相同的房源爲低於3和場景4,:
場景3
$sh
$ps -l
UID PID PPID TIME CMD
3038 2577 2504 00:00:00 bash
3038 2991 2577 00:00:00 sh
3038 2992 2991 00:00:00 ps
方案4
$sh
$ps -l
UID PID PPID TIME CMD
3038 2577 2504 00:00:00 bash
3038 3005 2577 00:00:00 sh
3038 3006 3005 00:00:00 ps
在這裏,在這兩個風光arios,我得到ps
CMD的PID爲sh
的PID。到底發生了什麼。我的解釋錯了嗎?