linux实验报告
学院:数理与信息工程学院
专业:
学号:
姓名:
教师:
上交时间: 2015年 1 月 5 日
实验二:
1.打通路径,将你的主目录加到环境变量PATH中。
2. 写一个shell脚本,提示用户输入姓名:
Please enter your name:
接收输入后,例如输入“John”,输出:
Welcome to Linux, John!
要求输入时姓名紧跟在“name:”后面,保持同一行。
3. 1)编写一段shell程序,提示用户输入两个数,判断这两个数是否相等,相等则输出equal,否则输出not equal。
并输出当前进程的进程号。
2)同样是上面的程序,使用输入重定向的方式,从一个文件data中提供两个数,判断是否相等。
请写出运行的命令。
3)修改上面的程序,用参数的方式提供两个数,判断是否相等。
4. 编写一个shell脚本,判断/etc/passwd文件中有无某个用户名,例如John,要是有,输出“John is a user of the system.”,否则输出“John is not a user of the system.”。
要求提供的用户名在该脚本运行时作为参数提供。
5. 编写一段shell程序完成:根据从键盘输入的学生成绩,显示相应的成绩标准(90以上为excellent,80以上为Good,70以上为Medium,60以上为Passed,低于60为Failed)。
要求程序运行时提示用户输入成绩,可以循环判断成绩。
提示:此题用case语句。
匹配一个字符可用?。
例如匹配70-79可用7?。
实验三:进程管理
1. 通过下列命令了解系统进程相关的信息:
ps –ef
ps –aux
Pstree
用top命令查看进程动态信息
2. 用ps –ef查看系统进程信息,写出任意三个守护进程的名字。
3. 编写一个C程序,循环100次,每隔一秒输出“hello, n.”, n为每次循环次数。
在前台运行该程序,在运行过程中把它挂起,用jobs命令查看其信息;将其恢复至前台继续运行,并将其终止。
4. vi一个在前台运行,一个在后台运行;通过另一个终端用top命令查看。
用kill 命令杀死在后台执行的a.out。
把前台执行的a.out进程挂起,接着让其在后台运行,让其到前台运行;在另一个终端上把该进程杀死。
5. 编写一段C程序完成:父进程创建两个子进程,每个子进程都在屏幕上输出
自己的进程号,父进程输出自己的进程号和两个子进程的进程号。
6. 编写一段C程序完成:父进程创建一个子进程后等待,子进程将当前目录下的文件以长格式输出,父进程等子进程结束后输出“child task complete!”。
7. 请fork一个子进程,子进程循环输出5次“I am child process, my pid is”,后面跟着其进程号,每隔一秒打印一次。
父进程循环输出5次”I am father process, my pid is ” ,后面跟着其进程号,也是每隔一秒输出一次。
要求(1)异步的方法,即处理器随机给不同的进程;
(2)同步的方法,父进程等待子进程5次全部打印输出后才执行自己的输出语句。
实验四:
1. 在当前目录下编辑一个新文件a,写入一行内容。
为a分别创建一vi a 个硬链接b和符号链接c。
将a删除,试试b和c能否再访问;为某个目录创建一个符号链接,看看是否有效。
2、编写一个C程序,创建一个新文件,权限为0664。
并接受键盘上的输入,
回车作为结束。
将输入写入该文件。
查看该文件的内容是否是键盘的输入。
新建文件名以参数形式提供。
3. cat程序在没有参数时,将输入的内容输出。
模cl拟cat程序,用系统调用read 和write写一个mycat程序,将输入复制到输出,即从键盘上面接受输入,并将键入的内容输出到显示器上。
4. 实现mv程序的部分功能,编写一个mymv程序,运行格式为mymv a b, 将当前目录下的文件a重命名为b。
并打通路径,让当前用户在任何目录下都可以使用mymv。
5. 用系统调用stat实现一个程序,输出一个文件的最近访问时间,最近修改时间和最近修改inode时间。
文件名以参数形式提供。
提示:#include<time.h>中的ctime函数可以将一个time_t类型的时间转成我们平
时看到的年月日格式的字符串。
man ctime查看用法。
6. 实现输入重定向<。
要求写一个C程序,在程序中将标准输入定向为同一目录下的infile文件,用scanf从该文件中读取一个整数,并将读取的输出。
Infile中的内容为55。
7. 实现输出重定向>。
要求写一个C程序,在程序中执行”ls –l”,并将执行结果输出到一个新文件outfile中。