操作系統實驗1Shell編程

NO IMAGE

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,但是也沒有任何對應信息的顯示,初步判斷是因為沒有對應的權限,因而連查看的情形都不許有吧…

相關文章

網絡身份認證——Kerberos配置及認證

Problem_2MajorityProblem

計算機網絡實驗3:網絡設備基本配置

操作系統實驗5簡易文件管理系統