Linux进程理解(2)

本文详细介绍了Linux系统中查看进程的方法(文件系统、top命令和ps命令),解释了fork系统调用的工作原理,讨论了进程的不同状态(包括僵尸进程和孤儿进程),以及如何通过nice值调整进程优先级。此外,还讲解了环境变量的概念、常用变量及查看和设置方法。
摘要由CSDN通过智能技术生成

查看进程

1.文件系统查看

  Linux中进程信息保存在/proc目录下,子目录是以进程PID命名.

2.命令查看

  • top命令

top工具就像是Windows中的任务资源管理器,在这里我们可以查看各种进程和设备资源状况.

  • ps命令

ps命令为Linux中查看进程状态的命令,通常使用ps -aux或是ps -ajx.使用ps命令搭配管道和grep指令,我们可以很方便地对进程进行查看.

3.系统调用

  除了命令外,我们在编写代码时候,有时候也许要对进程进行控制,这种时候我们就可以使用系统调用getpid()/获取当前进程pid,getppid()获取当前进程父进程pid.另外这里引出一个系统调用fork.

fork

  fork()函数,一开始学习fork()可能会觉得比较反直觉,我用下面的一段代码来体现:

#include <stdio.h>
#include <sys/types.h>
#include <stdio.h>
int main()
{
	printf("我是父进程,我的pid:%d\n",getpid());
	pid_t id = fork();
	if(id==0)
		printf("我是子进程,我的pid:%d,父进程的pid:%d\n",getpid(),getppid());
	else if(id<0)
		return 1;
	while(1)
	{
		printf("我是父进程,我的pid:%d\n",getpid());
		sleep(1);
	}
	return 0;
}

通过这段代码,我们可以发现这里的id同时有两个返回值.fork()对子进程返回0,对父进程返回子进程返回子进程pid.

正因如此,我们在使用了fork()之后,我们通常是要使用if()进行分流,以便让父进程和子进程对应不同的执行流.

进程状态

进程状态概览

  • R(running)–运行状态
  • S(sleeping)–睡眠状态
  • D(disksleep)–磁盘休眠状态
  • T(stopping)–停止状态
  • t(tracing stop)–跟踪停止状态
  • x(dead)–死亡状态
  • Z(zombie)–僵尸状态

僵尸进程

  • 僵尸进程是一种比较特殊的状态,当进程退出,但是父进程并没有及时读取子进程退出时就会出现僵尸进程.
  • 僵尸进程会等待父进程回收数据,所以会一直维持僵尸状态.
  • 进程在内核的体现是PCB.
  • 那么僵尸进程就会一直占用PCB–内存泄漏.

孤儿进程

  • 和前文提到的僵尸进程相反,孤儿进程是父进程提前退出,导致子进程没有进程来维护,成为孤儿进程.
  • 孤儿进程会被pid=1进程(init)领养,又该进程来回收.

进程优先级

  • cpu往往需要同时调度多个进程,cpu资源分配的先后顺序就是进程优先级.
  • 有高优先级的进程有优先执行的权利,良好的设置进程优先级可以很好地改善多任务情景系统性能.
  • 把不重要的进程绑定到指定的cpu上,也可以改善性能.

nice值

在Linux系统命令行中使用ps -l命令后可以看到PRI(priority)NI(nice)两栏数据.

  • PRI就是进程优先级.(越低优先级越高)
  • NI是PRI的修正值,通常情况下,我们直接修改PRI会破坏环境,导致系统不稳定.所以我们可以使用NI
    来修正PRI数据,真实的进程优先级为PRI+NI.
  • NI的取值范围是-20–19.一共40个档位.

环境变量

概念

环境变量是我们系统运行环境的一些参数.

常见的一些环境变量

  • 环境变量采用大写的风格.
  • PATH
  • HOME
  • SHELL

查看环境变量的方法

查看环境变量使用指令echo $NAME.

相关命令

  • echo:显示某个环境变量的值.
  • export:设置一个新的环境变量.
  • env:显示所有的环境变量.
  • unset:清楚环境变量.
  • set:显示本地定义的shell变量和环境变量.

  终于把前置的知识讲完了,下一篇开进程地址空间.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值