2017-3-15 實驗目的 1.掌握編寫Linux shell指令碼程式的基本方法 2.通過編寫Linux shell指令碼程式對程式有更深刻的理解 實驗內容 [基本要求] 編寫一個shell指令碼程式,功能是輸入一個數字,給出系統中以該數字為pid的程式詳情,將詳情輸出到一個檔案中。 [具體要求] 執行指令碼程式時,將數字作為一個輸入; 要有基本註釋
3.實驗報告 (1) 要求1:ps aux 命令在unix環境下基本能得到足夠多的程式資訊 我搜尋了一下,基本上如果要求輸出程式的詳細資訊,ps命令已經足夠了,如果想要某個程式的路徑,也可以使用ls -l /proc/$PID/exe這一命令 要求2:如果沒有得到以該數字為PID的程式程式,那麼命令會報錯,此時用[ $? –eq 0 ]該判斷檢測即可,若返回0 則成功,其餘都是失敗 要求3:提供了相應選單使得使用者可以輸入程式號,以及決定是否要終止程式 要求4:新增了一個功能:允許使用者終結程式 (2)設計思路 ps –aux 能夠輸入所有的當前程式情況,但是我們不知道使用者需要看的是哪個程式,因而我們可以使用awk命令先擷取第一行,然後在根據使用者輸入的PID找到對應行的結果並輸出 另外在shell語言下,kill -9 $pid 可以幫助我們直接結束程式
(4)【重要】實驗中遇到的問題及解決辦法 1.無法顯示對應PID的資訊:奇怪的是,刪除之前程式碼中 read –p pid 這個問題就解決了,查詢了一下,read –p 功能相當於echo –n,這個會不會對輸入的pid情況有所影響我還沒搞清… 2.if語句無法執行,或者sh test.sh的時候經常說我的else附近語法錯誤[ line 24: syntax error near unexpected token 'fi' ] 查詢之後發現問題在於我的文字編譯環境是notepad++ 的windows環境,在隱藏的符號中,windows換行符是CF LF,而unix環境下是LF,切換文字環境之後問題解決。 3. 有些PID不能被kill,但是也沒有任何對應資訊的顯示,初步判斷是因為沒有對應的許可權,因而連檢視的情形都不許有吧…