Linux基础9(进程管理,作业管理)

应用程序:

系统硬件:

固件:(芯片+程序)(例如BIOS)(BIOS最先启动)

硬件:

Linux进程管理:

程序:一组指令集合以及参数集合,按照相应的逻辑控制计算机完成特性任务

进程:运行的程序。是操作系统上的基本单位。有生命周期,有状态。

线程:一个进程可以有多个线程,但是一个线程只能被一个进程所拥有。线程不能独立运行

程序:封闭性、静态性

进程:动态性、并发行、交互性、虚拟性

  • 操作系统以进程为单位分配系统资源

  • 每一个进程运行是独立的

  • 具有独立的地址空间,运行状态

  • 多个程序同时运行,每一个程序就是一个进程

  • Linux系统中每个进程或者线程都有独立的资源集(整套cpu,整套内存,整套i/o),每个进程进入内存前都会先虚拟出一个和真实内存一样的虚拟内存,然后通过映射机制,映射到真实内存中。

  • cpu是按照时间片来运行程序的

  • 一个进程的所有线程都运行完,这个进程才会运行完。

1、父进程和子进程:
  1. 子进程由父进程(调用fork函数)派生,子进程可以在派生子进程
  2. 父进程派生了一个子进程后处于休眠状态
  3. 子进程拥有父进程的资源,权限
  4. 子进程运行自己的程序(调用exec方法/函数)
  5. 退出时唤醒父进程,父进程也不一定一醒来就变成运行状态,说不定要等待cpu资源
2、进程的生命周期:
  • CentOS6以“init”为第一个父进程
  • CentOS6以“systemd”为第一个父进程
    在这里插入图片描述

在这里插入图片描述

等待状态;就绪状态;运行状态;阻塞状态;休眠状态;死亡状态。

3、进程的管理工具:
pstree:

进程树查看进程之间的关系
在这里插入图片描述

  • -p:可以显示PID

在这里插入图片描述

  • -u:显示用户
    在这里插入图片描述

  • -A:各进程树之间以ASCⅡ码连接

  • -U:各进程树之间以UTF-8字符连接

ps:
  • -l:较详细的列出PID的进程信息
    • F:代表这个程序的旗标(flag),4代表superuser
    • ADDR:内核参数,支出该程序在内存的哪个部分,如果是个执行的程序,一般就是 -
    • SZ:使用掉的内存大下
    • WCHAN:程序当前的状态
    • TTY:登陆者的终端机位置
    • TIME:使用掉CPU的时间
    • CMD:所下达的指令名称
  • -a:在这个终端下有多少进程
  • -x:通常与a一起使用,可以列出比较完整的进程信息
  • -u:以用户为主的进程状态
    • VSZ:该进程使用掉的虚拟内存量
    • RSS:该进程占用的固定的内存量
  • -A:显示所有进程,相同与-e
  • -e:显示所有进程,相同于-A
  • -f:列出更为完整的信息
pgrep:

筛选进程(通过匹配程序名,来匹配进程)

在这里插入图片描述

  • -l:同时显示PID和进程名

在这里插入图片描述

  • -o:匹配出来多个进程时,显示出最小的进程号
  • -n:匹配出来多个进程时,显示出最大的进程号
kill:

(不能带进程名字)

  • 不带参数默认是15

  • -0:只查看进程

  • -9:强制杀死进程

  • -w:等待进程死亡

  • -l:列出已知信号

    • 1:终端断线
    • 2:中断(同CTRL+C)
    • 3:退出(同CTRL+\)
    • 15:(终止)
    • 9:(强制终止)—>(只有9信号才可以无条件终止进程,其他的信号进程都有权忽略)
    • 18:继续(fg/bg命令)
    • 19:暂停(同CTRL+Z)

killall(可以带名字):杀死所有同名进程

htop:

实时监测,比top更强大,可以理解为top的升级版

要用epel源下载

vmstat:

监测工具(相比top,可以看到整个机器的cpu,i/o,内存的使用情况)

  • 一般vmstat要用两个数字参数来完成,第一个是采样的时间间隔(s),第二个是采样次数。

  • 如果swap分区启用了,说明内存条不够用了,不能直接加内存条,查看进程,把不用的、占用内存大的进程杀掉。

  • -v:显示vmstat版本信息

  • -d:显示各个磁盘相关统计信息

  • -D:显示磁盘总体信息

  • -p:显示指定磁盘分区统计信息

  • -t:将时间一块打印出来

  • vmstat各个项对应的意思

    • r:等待执行的任务数(当这个值超过了cpu个数,就会出现cpu瓶颈)
    • b:等待i/o的进程数
    • swpd:正在使用虚拟的内存大小(值大于0就表示物理内存不够用了)
    • free:空闲内存大小(物理内存)
    • si:每秒从交换区写入内存的大小
    • so:每秒从内存写到交换区的大小
    • bi:每秒读取的块数(读磁盘)
    • bo:每秒写入的块数(写磁盘)
    • in:每秒中断数(值越大,由内核消耗的cpu时间会越多)
    • cs:每秒上下文切换次数(同上)
    • us:用户进程执行消耗cpu的时间
    • sy:系统进程消耗cpu的时间
    • id:空闲时间(包括io等待时间)
    • wa:(等待io时间)
lsof:
  • FD:文件标识符
[root@node1 ~ 32]#lsof /etc/sysconfig/network-scripts/ifcfg-eth0--显示开启该文件的进程
[root@node1 ~ 33]#lsof -p 1432--列出进程号为1432的进程所打开的文件
[root@node1 ~ 37]#lsof -g 500--列出归属组ID为500的进程(也可以为组名)
[root@node1 ~ 39]#lsof -u lxw--列出归属用户lxw的进程(也可以为UID)
[root@node1 ~ 41]#lsof +d /etc--显示目录下被进程打开的文件
[root@node1 ~ 42]#lsof +D /etc--同上,但会搜索目录下的目录,时间较长
[root@node1 ~ 43]#lsof -d cwd--显示使用FD为cwd的进程
[root@node1 ~ 45]#lsof -i :55--显示符合条件的进程
4、程序优先级(0-139):

越小越大

  • 0-99:有效实时优先级(无法调整,操作系统自己调整)

  • 100-139:非有效实时优先级——>静态优先级(可以调整,通过调整nice值)

  • PR:静态优先级-100(rt是0-99之间的进程)PR-20=NI

  • PRI:PRI+40=0-139

5、调整nice值(-20-19):

值越小,优先级越高

  • 在top命令中,按r进行调整优先级

  • renice 调整后的nice值 PPID

  • htop:选中相应的进程,F7减小nice值(增大优先级),F8加大nice值(减小优先级)

6、进程在前后台运行:
  • 在前台一次只能运行一个作业

  • 在后台可以运行多个作业

  • 把作业放到后台去,用**&**

  • jobs:查看后台作业

  • 作业要在对应终端上查看,不能跨终端查看。

  • fg %编号——把后台作业提到前端来(ctrl+z放到后台,并暂停;ctrl+c直接终止作业)

  • bg %编号——把后台作业运行起来

  • ctrl+z:把作业挂起

  • kill %编号:先停止,在杀死作业

注意把输出结果放在垃圾桶,要不然作业将在后台执行,但是输出结果在前台显示,但是不影响前台作业执行。

后台任务无法通过ctrl+c/CTRL+z进行控制,必须调到前台,在对其进行控制

7、一次查找多个进程

在这里插入图片描述

8、/proc

是一个伪文件系统,只存在内存之中,而不占用外存空间,/prco下的文件基本都是只读的

/proc/cpuinfo:cpu信息

/proc/meninfo:内存信息

/proc/devices:已经加载的设备

/proc/filesystems:当前内核支持的文件系统

/proc/modules:所有加载到内核的模块列表

/proc/partitions:分区中的块分配信息

/proc/uptime:系统已经运行了多久

proc/swaps:交换空间的使用情况

/proc/version:Linux内核版本和gcc版本

/proc/driver:驱动信息

/proc/fs:文件系统的信息

/proc/net:网卡设备信息

/pro/vmstat:虚拟内存统计信息

/proc/diskstats:磁盘信息

/proc/#:进程信息

9、/sys

/sys/devices:全局设备结构体系,包含所有被发现的注册在各种总线上的各种物理设备

/sys/dev:该目录下有字符设备(block)和块设备(char)两个字目录

/sys/module:所有被载入kernel的模块(.ko文件)

/sys/fs:描述系统中所有的文件系统

/sys/kernel:存放内核中所有可调整的参数

s:所有加载到内核的模块列表

/proc/partitions:分区中的块分配信息

/proc/uptime:系统已经运行了多久

proc/swaps:交换空间的使用情况

/proc/version:Linux内核版本和gcc版本

/proc/driver:驱动信息

/proc/fs:文件系统的信息

/proc/net:网卡设备信息

/pro/vmstat:虚拟内存统计信息

/proc/diskstats:磁盘信息

/proc/#:进程信息

9、/sys

/sys/devices:全局设备结构体系,包含所有被发现的注册在各种总线上的各种物理设备

/sys/dev:该目录下有字符设备(block)和块设备(char)两个字目录

/sys/module:所有被载入kernel的模块(.ko文件)

/sys/fs:描述系统中所有的文件系统

/sys/kernel:存放内核中所有可调整的参数

/sys/power:控制整个机器的电源状态

发布了33 篇原创文章 · 获赞 6 · 访问量 664

猜你喜欢

转载自blog.csdn.net/qq_42508901/article/details/99675070