
答案1
預設情況下,ps
僅顯示附加到目前終端 (tty) 的進程:在您的情況下,您的 shell 和ps
它本身(都在pts/2
)。您需要解除此限制才能看到sleep
;例如
ps -e
請參閱man ps
參考資料 以了解可用於過濾進程的許多選項。
答案2
問題是當我創建第二個終端並輸入“ps”時,沒有
sleep
進程。
對於一些(不是全部)互動式 shell,sleep
可能是一個內建的 shell 調用,例如睡覺(3)(正如cd
shell 內建呼叫一樣目錄(2))。
當這種情況發生時,你將看不到任何sleep
過程因為沒有。那麼過程就是睡覺(3)-ing 是你的Unix外殼;你甚至可以編寫自己的 shell 解釋器(查看窗扇一個簡單但有點錯誤的例子)。
許多 Linux shell 都是開源軟體(或自由軟體),所以請研究他們的源代碼,看看他們是否確實調用睡覺(3)或者睡覺(3)-或甚至適當地民意調查(2)等等...-另請參閱時間(7)和選擇圖(2)。閱讀更多關於系統調用(2)並想想你的 shell 所做的事情(或用追蹤(1)或者追蹤(1)或調試器)。
許多 Linux 發行版都有GNU bash就像通常的互動式 shell 一樣。但你可以安裝桀騁或者魚或者英語作為您的登入 shell(使用chsh(1))。
我個人的偏好是zsh
(自動完成Debian 上的設施非常出色)。
考慮讀一些教科書關於作業系統和/或編寫您自己的程式碼Unix外殼作為練習,或擴展一些現有的(例如,透過添加sleep
內建的,如果沒有內建的)。