Linux系统进程管理

Linux系统进程管理


什么是进程

进程是已启动的可执行程序的运行实例,进程有以下组成部分

	分配内存,已分配内存的地址空间
	安全属性,进程的运行身份和权限
	进程代码,运行一个或多个的线程
	进程状态,进程运行后的多种状态

	静态状态,二进制文件,静态,/usr/bin/ls,/usr/sbin/sshd
	动态进程,程序运行的过程,有生命周期及运行状态

进程的运行环境,包括以下几个部分:

	局部和全局变量
	当前的调度上下文
	分配给进程使用的系统资源
	给进程分配对应的PID.PPID

在这里插入图片描述


进程的生命周期

在这里插入图片描述
父进程复制自己的地址空间创建新的子进程,子进程可以继承父进程PPID的环境
每个进程都有自己 自己唯一的PID
进程是有systemd这个父进程派生出来的的子进程
子进程在运行自己的程序代码的时候,父进程往往会进入到睡眠状态。
子进程完成程序代码发出退出请求
子进程已经关闭了其资源环境,剩余的部分称之为僵停(僵尸Zombie)
父进程在子进程退出时收到信号会被唤醒,清理剩余的结构,然后继续执行自己的程序代码。

监控和管理进程

在多任务处理的操作系统中,每个cpu在一个时间点上只能处理一个进程。
在进程运行时,它对cpu时间和资源分配的要求会不断的变化,从而进程为分配一个状态,

静态查看进程通常使用ps命令

了解进程如下选项:
 PID,PPID
 当前的进程状态
 内存的分配情况
 CPU的已花费的时间
 用户UID决定进程的特权



[root@hjh ~]# `ps aux | less`
	USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
	root          1     0.1  0.1 125312  3780 ?        Ss   13:46   0:02 /usr/lib/systemd/systemd --switched-r


`USER:         运行进程的用户`
`PID:         进程ID`
`%CPU:         CPU 实际占用率`
`%MEU          内存占用路`
`VSZ:          占用虚拟内存`
`RSS:         占用实际内存`
`TTY:          进程运行的终端 `
`STAT:         进程状态 man ps	(/STATE)`
`   R          进程运行
`   S		   可中断睡眠
`   D		   不可中断睡眠
`   Z		   僵尸进程
    X		   进程已退出
    T		   进程被暂停
    Ss    s			进程的领导者,父进程
    S<    <			优先级较高的进程
    SN    N		    优先级较低的进程
    R+    +			表示前台的进程组
    SL				以线程的方式运行
    START:		    进程的启动时间
    TIME:			进程占用CPU的总时间
    COMMAND	        进程文件,进程名

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

  • 动态监控进程

  • 在这里插入图片描述

    系统负载的计算和意义
    进程以及子进程和线程所产生的计算机产生的计算机指令会排成一个队列,系统负载就是cpu将要运行的进程所组成的队列的总和。
[root@hjh ~]# w
 15:57:49 up 26 min,  1 user,  load average: 0.02, 0.02, 0.03
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.0.1         15:55    5.00s  0.02s  0.00s w

//我当前虚拟机的cpu的核心数1核,当前负载是0.02
0.02(负载)/1(核心数) = 2%的cpu资源被占用,剩下都是free的。


LInux有两个特殊的设备文件
/dev/zero 无穷大文件
/dev/null 黑洞文件

top进程的优先级

		nice
		priority
			值越小, 越优先
			0          FIFO 	先进先出      first  input  first output
			-20		   RR 
			20		

可以通过nice命令来指定优先级,默认是10.

企业流量的优先级
音频
视频


信号管理进程

使用kill命令发送信号与进程通信
定义守护进程的角色
结束用户会话和进程
命令有kill,killall,pgrep,pkill

[root@hjh ~]#   kill -l                        //列出所有支持的信号
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
......

在这里插入图片描述

//常用到1(平滑重启,不改变进程信息,在我们的平时生产中最好就是用这种方式,一般用于非系统服务 )
正常关闭程序的方式:
systemctl stop 进程
kill 进程ID(如果要杀死一个服务的所有进程,需要找到父ID进程)
killall 进程名(推荐使用killall ,因为可以杀死与进程名有关的所有终端)
pkill :
-u 指定用户提出终端
-t:指定某个终端关闭其终端上所有的进程
-t -9:功能同 -u

pgrep -l -u 用户名(列出用户所有的进程)

程序本身的关闭方法

后台管理进程

作业控制是一个命令行功能,允许一个shell实例l来运行和管理多个命令。
如果没有作业控制,父进程fork()一个子进程之后,将sleeping,直到子进程退出。
使用作业控制,可以选择性暂停,恢复,以及异步运行命令,让shell可以在子进程运行期间返回接受其他命令。

前台进程,后台进程 jobs,bg,fg
crtl+Z , ctrl+C
sleep:这个命令是相当于暂停键,后面的时间接时间(秒),后面如果接&符号表示放在后台运行。

[root@hjh ~]# sleep 2000                 //相当于一个暂停命令,后面接秒数
^Z
[root@hjh ~]# sleep 1000 &               //后面多个 &  表示在后台运行

[root@hjh ~]# jobs            //查看后台作业
[1]-  Running                 sleep 1000 &
[2]+  Stopped                 sleep 2000

[root@hjh ~]# bg   %2   //运行在后台sleep的命令
[2]+ sleep 2000 &
[root@hjh ~]# jobs
[1]-  Running                 sleep 1000 &
[2]+  Running                 sleep 2000 &
[root@hjh ~]# kill %1 
[root@hjh ~]# jobs
[1]-  Terminated              sleep 1000
[2]+  Running                 sleep 2000 &
[root@hjh ~]# jobs
[2]+  Running                 sleep 2000 &

已经命令运行时间很长
cmd  &   //将进程调到后台运行


未知命令运行时间
cmd 

ctrl + z    //将命令sleep放入后台

bg    %  序号     //将命令在后台运行起来,序号通过 jobs 来查看

kill  %    序号   //干掉后台进程
 
[root@hjh ~]# (while :; do date; sleep 2; done)  &
[3] 1241
[root@hjh ~]# Sat Dec 28 13:21:05 CST 2019
Sat Dec 28 13:21:07 CST 2019
Sat Dec 28 13:21:09 CST 2019
Sat Dec 28 13:21:11 CST 2019
Sat Dec 28 13:21:13 CST 2019

[root@hjh ~]# (while :; do date; sleep 2; done)  & >/dev/null &
[3] 1325
[4] 1326
[root@hjh ~]# Sat Dec 28 13:23:12 CST 2019
Sat Dec 28 13:23:14 CST 2019



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值