内容发布更新时间 : 2024/11/8 14:03:28星期一 下面是文章的全部内容请认真阅读。
实验四 进程及进程管理
4.1使用ps命令查看进程信息 【实验内容】
ps是基本的Linux命令,通过本实验,不仅要熟悉ps命令方法,更重要的是可以了解Linux进程的组成。 【实验原理】 ps:查看系统中的进程,Linux中可以使用ps -aux查看所有进程。其中PID代表进程ID,TTY是该进程是由哪个控制台启动的,CMD则是命令。
如果想列出更详细的信息,则可使用命令:“ps -auxw”。参数w表示加宽显示的命令行,参数w可以写多次,通常最多写3次,表示加宽3次,这足以显示很长的命令行了。 【实验内容】
在shell提示符下输入如下命令,并解释输出的结果: [root@vm root]#ps
PID TTY TIME CMD 16767 pts/1 0:00 ps 18029 pts/1 0:00 bash [root@vm root]#ps aux
PID TTY TIME CMD …
4.2使用proc文件系统查看进程信息 【实验目的】
本实验将指导学员了解proc文件系统,通过proc文件系统查询进程信息,可以扩展到修改系统参数。 【实验原理】 /proc文件系统是一个虚拟文件系统,通过文件系统接口实现对内核的访问,输出系统运行状态。它以文件系统的形式,为操作系统本身和应用进程之间的通信提供了一个界面,使应用程序能够安全,方便的获得系统当前的运行状况和内核的内部数据信息,并且可以修改某些系统的配置信息。
【实验内容】
1)认识proc文件系统的文件和目录 [root@vm root]#cd /proc [root@vm root]#ls
2)通过proc文件系统查看系统当前进行状态 [root@vm root]#cat /proc/self/status 3)查询文件句柄的当前使用情况 # cat /proc/sys/fs/file-nr 426 15252458
file-nr 文件显示了三个参数:分配的文件句柄总数、当前使用的文件句柄数以及可以分配的
最大文件句柄数。如果需要增大 /proc/sys/fs/file-max 中的值,请确保正确设置 ulimit。对于 2.4.20,通常将其设置为 unlimited。使用 ulimit 命令来验证 ulimit 设置: [root@vm root]# ulimit unlimited
4)通过proc文件系统修改内核中预定的一些变量 1)修改整个系统中文件句柄的最大数量 [root@vm root]#ls /proc/sys/fs/file-max 52458
[root@vm root]#echo 65536 >/proc/sys/fs/file-max [root@vm root]#ls /proc/sys/fs/file-max 65536
2)修改网络TTL
[root@vm root]#ls /proc/sys/net/ ipv4/ip_default_ttl 64
[root@vm root]#echo 128 >/proc/sys/net/ipv4/ip_default_ttl [root@vm root]#ls /proc/sys/net/ ipv4/ip_default_ttl 128
3)修改系统中最大进程数量
[root@vm root]#ls /proc/sys/kernel/pid_max 32768
[root@vm root]#echo 65536 >/proc/sys/kernel/pid_max [root@vm root]#ls /proc/sys/kernel/pid_max 65536
4)修改普通用户的最大RTC频率
[root@vm root]#ls /proc/sys/dev/rtc/max-user-freq 64
[root@vm root]#echo 128 >/proc/sys/dev/rtc/max-user-freq [root@vm root]#ls /proc/sys/dev/rtc/max-user-freq 128
5)其他一些信息
[root@vm root]#cat /proc/cpuinfo - CPU [root@vm root]#cat /proc/interrupts - 中断
[root@vm root]#cat /proc/ioports - 设备IO端口
[root@vm root]#cat /proc/meminfo - 内存信息(i.e. mem used, free, swap size) [root@vm root]#cat /proc/partitions - 所有设备的所有分区 [root@vm root]#cat /proc/pci - PCI设备的信息
[root@vm root]#cat /proc/swaps - 所有Swap分区的信息 [root@vm root]#cat /proc/version - Linux的版本号
4.3使用fork、exit和exec系统调用编写多进程程序 【实验目的】
本实验将通过编写fork等系统调用的程序,加深对系统进程及其控制的了解。
【实验原理】 fork后父子进程会同步运行,但父子进程的返回顺序是不确定的。设两个变量global和test来检测父子进程共享资源的情况。同时在进程退出时对exit和_exit的区别进行测试和说明。 【实验内容】
1.fork
#include
//#include
char buf[]=\
int main(void) {
int test=0,stat; pid_t pid;
if(write(STDOUT_FILENO, buf, sizeof(buf)) != sizeof(buf)) { perror(\ printf(\/* fork */
pid = fork(); /*we should check the error*/ if (pid == -1) { perror(\ exit(0); }
else if (pid == 0) {
global++; test++;
printf(\ exit(0); }
/*else be the parent*/ global+=2; test+=2;
printf(\ exit(0);
//printf(\ //_exit(0);