操作系统实验1 Shell编程

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,但是也没有任何对应信息的显示,初步判断是因为没有对应的权限,因而连查看的情形都不许有吧…

你可能感兴趣的:(操作系统实验1 Shell编程)