linux进程管理②

1、进程的生命周期

sleep:睡眠状态

  • S:可中断睡眠
    条件:硬件要求,系统资源访问,信号。
    例如:键盘输入。
  • D:不可中断睡眠
    比如:系统进程(不可中断),如中断可能会引起系统的异常 -->用户进程
  • K:可退出的睡眠

running:用户运行状态
在CPU上运行的进程或者是准备运行的进程(队列(高速缓存))
user的日常任务,kernel的日常任务

  • 运行:---->进程占用cpu时间片
  • 等待:---->等待某个条件成熟
  • 就绪:---->分配好所有资源,等待cpu时间片

stop:运行停止状态

zombie:僵死状态

  • Z: —>exit----task_struct(PID,返回状态码,父进程需要状态)
  • X: —>exit----将没有数据

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2、linux系统的进程优先级

Linux 进程调度及多任务:每个CPU(或CPU核心)在一个时间点上只能处理一个进程,通过时间片技术,Linux实际能够运行的进程(和线程数)可以超出实际可用的CPU及核心数量。Linux内核进程调度程序将多个进程在CPU核心上快速切换,从而给用户多个进程在同时运行的印象。

相对优先级 nice:由于不是每个进程都与其他进程同样重要,可告知进程调度程序为不同的进程使用不同的调度策略。常规系统上运行的大多数进程所使用的调度策略为 SCHED_OTHER (也称为SCHED_NORMAL),但还有其它一些调度策略用于不同的目的。SCHED_OTHER 调度策略运行的进程的相对优先级称为进程的 nice 值,可以有40种不同级别的nice值。

nice 值越高: 表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低: 表示优先级越高,例如-20,该进程更不倾向于让出CPU。

"进程的优先级" 0-139 — 140数
实时优先级

  • 0<------------------------------99
  • 100-139

nice优先级 : -20-19 作用是调整进程优先级,不能调整kernel,调整的是user
TOP(PR): 0-39 RT

“nice值” -20-19 作用是调整进程优先级,(不能调kernel,调整user)
调整举例
“top–PR” 0-39
top —>“r” —>“PID” —“nice值”
renice -n 10 -u apache
在这里插入图片描述

3、伪文件系统

/proc:进程信息,内存信息,磁盘信息

  • Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
  • /proc下文件基本都是只读的,除了/proc/sys目录,它是可写的(查看和修改内核的运行参数)
  • /proc下数字命令的目录就是对于PID的进程目录

我们用du -h proc/查看会发现他的文件大小都是0,但文件中是存放有内容的,是因为他并不存放到磁盘上,而是被存在内存里,所以被称为伪文件系统。

  [root@centos-node1 /]# du -h proc/
  0       proc/fs/xfs
  0       proc/fs/nfsd
  0       proc/fs
  0       proc/bus/pci/00
  ......

/sys:设备组织
sysfs是一种基于ram文件系统和proc一样。Sysfs文件系统是一个类似于proc文件系统的特殊文件系统,用于将系统中的设备组织成层次结构,并向用户模式程序提供详细的内核数据结构信息。其实,就是在用户态可以通过对sys文件系统的访问,来看内核态的一些驱动或者设备等。

[root@centos-node1 ~]# cd /
[root@centos-node1 /]# cd sys/
[root@centos-node1 sys]# ls
block  bus  class  dev  devices  firmware  fs  hypervisor  kernel  module  power
[root@centos-node1 sys]#
  • ①/sys/devices (/sys文件系统最重要的目录结构)

    [root@centos-node1 sys]# cd devices/
    [root@centos-node1 devices]# ls
    breakpoint kprobe msr platform power system uprobe
    cpu LNXSYSTM:00 pci0000:00 pnp0 software tracepoint virtual
    [root@centos-node1 devices]# ll
    total 0
    drwxr-xr-x. 3 root root 0 Apr 24 08:42 breakpoint
    drwxr-xr-x. 6 root root 0 Apr 24 08:42 cpu
    drwxr-xr-x. 4 root root 0 Apr 24 08:42 kprobe
    drwxr-xr-x. 6 root root 0 Apr 24 08:42 LNXSYSTM:00
    drwxr-xr-x. 5 root root 0 Apr 24 08:42 msr
    drwxr-xr-x. 45 root root 0 Apr 24 08:42 pci0000:00
    drwxr-xr-x. 10 root root 0 Apr 24 08:42 platform
    drwxr-xr-x. 9 root root 0 Apr 24 08:42 pnp0
    drwxr-xr-x. 5 root root 0 Apr 24 08:42 power
    drwxr-xr-x. 3 root root 0 Apr 24 08:42 software
    drwxr-xr-x. 10 root root 0 Apr 24 08:42 system
    drwxr-xr-x. 3 root root 0 Apr 24 08:42 tracepoint
    drwxr-xr-x. 4 root root 0 Apr 24 08:42 uprobe
    drwxr-xr-x. 21 root root 0 Apr 24 08:42 virtual

    • ②/sys/dev
      该目录下存放有字符设备和块设备两个子目录

      [root@centos-node1 sys]# cd dev
      [root@centos-node1 dev]# ls
      block char
      [root@centos-node1 dev]# cd block/
      [root@centos-node1 block]# ls
      11:0 253:0 253:1 8:0 8:1 8:2
      [root@centos-node1 block]# ll
      total 0
      lrwxrwxrwx. 1 root root 0 Apr 24 08:42 11:0 -> …/…/devices/pci0000:00/0000:00:11.0/0000:02:05.0/ata4/host4/target4:0:0/4:0:0:0/block/sr0

  • ③/sys/class
    按功能分类设备,包含了所有注册在kernel里的设备类型。

  • ④/sys/block(在Linux2.6.26版本后移动到了/sys/class/block)

  • ⑤/sys/bus
    按总线类型分类设备

  • ⑥ /sys/module
    包含所有被载入kernel的模块

  • ⑦/sys/fs
    用来描述系统中所有的文件系统

  • ⑧/sys/kernel
    存放的是内核中所有的可调用整的参数

  • ⑨/sys/firemware
    包含对固件对象和属性进行操作和观察的接口

  • ⑩/sys/power
    存放有几个属性文件可以用于控制整个机器的电源状态

4、前后台作业

什么是作业:用户交给系统的某项任务

进程和作业的区别

  • 区别:进程是一个程序在一个数据集上的一次执行,而作业是用户提交给系统的一个任务。
  • 关系:一个作业通常包括几个进程,几个进程共同完成一个任务,即作业。
  • 用户提交作业以后,当作业被调度,系统会为作业创建进程,一个进程无法完成时,系统会为这个进程创建子进程。

“前台作业同一时刻只能运行一个,后台作业同时可以运行多个”

从前端到后端:

  • “命令 &”:运行
  • “Ctrl +z” :停止
  • —>bg%序列 让停止的作业运行起来

从后端到前端:fg %序列

对于做支持信号:
0 ---->嗅探进程是否存在,不对其做任何操作 echo $? —>0
1 ---->断开终端
2 ---->中断,ctrl + c
3 ---->退出,ctrl +
15 —>默认,终止
9 —>强制终止,
18 —>继续
19 —>暂停
kill -19 %序列

作业可以放到后台运行,任然可以将输出打印在终端上。

作业是正对于终端而言,在哪个终端上启动的作业,在哪个终端上jobs。
实例:

[root@centos-node1 sys]# ping 192.168.229.133
PING 192.168.229.133 (192.168.229.133) 56(84) bytes of data.
64 bytes from 192.168.229.133: icmp_seq=1 ttl=64 time=0.680 ms
64 bytes from 192.168.229.133: icmp_seq=2 ttl=64 time=0.261 ms
64 bytes from 192.168.229.133: icmp_seq=3 ttl=64 time=0.398 ms
64 bytes from 192.168.229.133: icmp_seq=4 ttl=64 time=0.308 ms
......

例如我们执行ping命令,这项任务就可以称为作业,并且是在前台运行,我们不能在此基础上再运行其他作业。

但后台作业就能同时运行多个作业。

[root@centos-node1 ~]# ping 192.168.229.133 &
[1] 13322
[root@centos-node1 ~]# PING 192.168.229.133 (192.168.229.133) 56(84) bytes of data.
64 bytes from 192.168.229.133: icmp_seq=1 ttl=64 time=0.248 ms
64 bytes from 192.168.229.133: icmp_seq=2 ttl=64 time=0.257 ms
64 bytes from 192.168.229.133: icmp_seq=3 ttl=64 time=0.191 ms
ls
anaconda-ks.cfg  test  tsar-master  tsar.zip  yum.repo
[root@centos-node1 ~]# 64 bytes from 192.168.229.133:  icmp_seq=4 ttl=64 time=0.267 ms
64 bytes from 192.168.229.133: icmp_seq=5 ttl=64 time=0.226 ms
64 bytes from 192.168.229.133: icmp_seq=6 ttl=64 time=0.312 ms
64 bytes from 192.168.229.133: icmp_seq=7 ttl=64 time=0.314 ms
屏蔽中断信号

对于终端上的作业,有内容输出时,当终端断开后,该作业进程将会接收到中断信号;导致进程被杀死。
nohup屏蔽中断信号。

nohup ping www.baidu.com > /dev/null &
nohup ping www.baidu.com >> /tmp/nohup_ping.log &

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值