IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux系统的进程管理 -> 正文阅读

[系统运维]Linux系统的进程管理

Linux系统的进程管理

1、进程的描述

什么是进程?

进程是已启动的可执行程序的运行实例;

包括以下部分:

  • 已分配的内存的地址空间
  • 安全属性,包括所有权凭证和特权;
  • 程序代码的一个或者多个执行的线程;
  • 有进程状态的说法;

程序:二进制文件,静态的–》/bin/sh

**进程:**是程序运行的过程,动态、有生命周期以及运行状态的;

进程的周期:

  • process:进程
  • parent process:父进程
  • child process:子进程
  • zombie:僵尸进程
  • fork:分叉
  • wait:等待

关于进程的描述

父进程复制自己的地址空间(fork )创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性之需。PID 和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代。

Centos7进程PID为1的进程是:init

Centos7以上的PID是1的进程是:systemd

僵尸进程:一个进程使用fork创建的子进程,如果子进程退出,而父进程并没有调用wait或者waitpid获取子进程的装填信息,那么,子进程的进程描述仍然保存在系统中,这种进程就是僵尸进程;

简单地理解僵尸进程:父进程退出了,子进程没有退出,缺乏管理者就变成了僵尸进程;

进程的属性:

进程ID:是系统中唯一的值,用来区分进程的;

父进程:PPID

启动进程的用户ID(UID)和所属的组(GID)

进程状态:

  • 运行:Run
  • 休眠:Sleep
  • 僵尸:Zombie

进程的优先级

进程所连接的种短命

进程资源占用:进程占用的内存、CPU占有容量等等;

2、进程相关命令

ps命令

作用:查看进程的工具

语法:ps+【选项】

选项:

  • -a:显示当前终端关联的所有进程
  • -u:基于用户的格式显示;
  • -x:显示所有的进程

常用的进程组合

  • ps -aux
  • ps -elf
[root@master30 ~]# ps -aux | more
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.1  0.3 125376  3900 ?        Ss   22:18   0:01 /usr/lib/systemd/systemd --s
witched-root --system --deserialize 21
root          2  0.0  0.0      0     0 ?        S    22:18   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    22:18   0:00 [ksoftirqd/0]
............

#小的知识点:
 最后一列[xxxx] 使用方括号括起来的进程是内核态的进程。 没有括起来的是用户态进程。


#命令输出的信息比较重要
        USER: 启动这些进程的用户
        PID: 进程的ID
        %CPU 进程占用的CPU百分比;?
        %MEM 占用内存的百分比;?
        VSZ:进程占用的虚拟内存大小(单位:KB)?
        RSS:进程占用的物理内存大小(单位:KB)?
		STAT:该程序目前的状态,Linux进程有5种基本状态:
			R :该程序目前正在运作,或者是可被运作;
?   ?		S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。
?   ?		T :该程序目前正在侦测或者是停止了;
			Z?:该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
			D  不可中断状态. 
			<: 表示进程运行在高优先级上
            N: 表示进程运行在低优先级上
            L: 表示进程有页面锁定在内存中
            s: 表示进程是控制进程
            l: 表示进程是多线程的
            +: 表示当前进程运行在前台	
        START:该 process 被触发启动的时间;
        TIME?:该 process 实际使用 CPU?运作的时间。
        COMMAND:该程序的实际指令	

#在一个终端上输入
[root@master30 data]# vim a.txt

	#然后在另外一个终端上输入
[root@master30 ~]# ps -aux | grep vim
root       1345  0.8  0.5 149548  5244 pts/0    S+   22:40   0:00 vim a.txt
root       1398  0.0  0.0 112676   980 pts/1    R+   22:41   0:00 grep --color=auto vim
		#S+:代表的就是前台休眠的进程
		
#然后输入ctrl+z:切换至后台运行:
[root@master30 ~]# ps -aux | grep vim
root       1345  0.2  0.5 149548  5244 pts/0    T    22:40   0:00 vim a.txt
root       1400  0.0  0.0 112676   984 pts/1    R+   22:41   0:00 grep --color=auto vim
	#这里就是停止了的进程;
[root@master30 data]# ps -elf  |more
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root          1      0  0  80   0 - 31344 ep_pol 22:18 ?        00:00:01 /usr/lib/systemd/
systemd --switched-root --system --deserialize 21
1 S root          2      0  0  80   0 -     0 kthrea 22:18 ?        00:00:00 [kthreadd]
1 S root          3      2  0  80   0 -     0 smpboo 22:18 ?        00:00:00 [ksoftirqd/0]
1 S root          5      2  0  60 -20 -     0 worker 22:18 ?        00:00:00 [kworker/0:0H]
..............
	#输出的信息归纳
        UID: 启动这些进程的用户
        PID: 进程的ID
        PPID: 父进程的进程号
        C: 进程生命周期中的CPU利用率
        STIME: 进程启动时的系统时间
        TTY: 表明进程在哪个终端设备上运行。如果显示  ?表示与终端无关,这种进程一般是内核态进程。另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等,则表示运行在虚拟终端上的进程。
        TIME: 运行进程一共累计占用的CPU时间
        CMD: 启动的程序名称    

uptime命令

作用:查看系统负载

语法:uptime

注意:命令不重要重要的是输出信息

[root@master30 data]# uptime
 22:55:44 up 37 min,  2 users,  load average: 0.00, 0.01, 0.05

22:55:44 			#表示当前时间
up 37 min,  		#表示系统运行的时间,说明服务器运行了多久
2 users,  			#表示有多少个用户在线
load average: 0.00, 0.01, 0.05	#系统负载,表示1分钟、5分钟、15分钟的平均负载值;


#那么如何界定负载的高或者低?
如果服务器的CPU为1核心,则load average中的数字  >=3  负载过高,如果服务器的CPU为4核心,则load average中的数字  >=12  负载过高。
经验:单核心,1分钟的系统平均负载不要超过3,就可以,这是个经验值。

top命令

作用:动态查看系统负载信息

语法:top

top命令是交互式的命令;

top的交换式命令

  • 默认是3s刷新一次,按s修改刷新时间
  • 按空格,立即刷新
  • q:退出
  • P:按cpu排序
  • M:按照内存排序
  • T:按照时间排序
  • p:进程ip,查看某个进程状态

top命令的信息很重要

[root@master30 ~]# top
top - 21:25:12 up 8 min,  1 user,  load average: 0.05, 0.07, 0.05
Tasks: 110 total,   1 running, 109 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   999696 total,   720376 free,   119208 used,   160112 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   712428 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                  
   248 root      20   0       0      0      0 S  0.3  0.0   0:00.02 kworker/u256:2           
   282 root      20   0       0      0      0 S  0.3  0.0   0:00.08 xfsaild/sda3             
  1141 root      20   0       0      0      0 S  0.3  0.0   0:00.38 kworker/0:3    
  
#第一行的信息
21:25:12: 系统单签时间
up 8 min:系统启动了的时间
1 user,  :一个用户登录
load average: 0.05, 0.07, 0.05:系统在1分钟、5分钟和15分钟的平均负载值;

#第二行信息
Tasks: 108 total,   :进程总数
1 running, 		:正在运行的进程数
107 sleeping,   :睡眠的进程数
0 stopped,   	:停止的进程数
0 zombie		:多少个僵尸进程

#第三行信息
%Cpu(s):  0.3 us, 	#系统用户进程使用的百分比
0.3 sy,  			#内核中的进程占用cpu的百分比
0.0 ni, 			#用户进程空间内改变过优先级的进程占用CPU百分比
99.3 id,  			#空闲CPU百分比
0.0 wa,  			#cpu等待I/O完成的时间总量
0.0 hi,  			#硬中断占的cpu百分比
0.0 si,  			#软中断占的CPU百分比
0.0 st				#虚拟机偷取物理的时间;

#第四第五行
KiB Mem :   999696 total,  #物理内存总量
722416 free, 				#空闲的内存总量	
117160 used,  				#使用的物理内存总量
160120 buff/cache			#用作内核款村的内存量
KiB Swap:  2097148 total,  	#交换区的总量
2097148 free,        		#限制的交换区总量
0 used.   					#已使用的交换区总量
714472 avail Mem 			#总的可利用内存是多少
		#一旦交换分区都被使用了,代表内存就已经不够用;
		
		
#第七行信息
  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND 
  PID USER      	#进程id
  PR  				#进程所有者的用户名
  NI    			#优先级、由内核动态调整、用户不能跳帧
  VIRT    			#虚拟内存,是进程正在使用的所有内存
  RES    			#是进程所用用的物理内存
  SHR 				#共享内存大小
  S 				#进程的状态
  %CPU 				#cpu的占用百分比
  %MEM     			#内存占用的百分比
  TIME+ 			#进程使用的cpu时间
  COMMAND 			#使用的命令

top实战:找出系统中使用CPU最多的进程

  • 在运行top,找出使用CPU最多的进程,按大写P,可以按照CPU使用率来排序显示

lsof命令

作用:查看进程打开的文件,打开文件的进程、进程打开的端口

语法:lsof+选项

选项:

  • -i+条件:列出符合条件的进程
  • -p+进程号:列出指定进程号所打开的文件
[root@master30 ~]# ps -ef | grep vim
root       1425   1176  0 21:47 pts/0    00:00:00 vim aa.txt
root       1470   1428  0 21:47 pts/1    00:00:00 grep --color=auto vim
[root@master30 ~]# lsof -p 1425
COMMAND  PID USER   FD   TYPE DEVICE  SIZE/OFF     NODE NAME
vim     1425 root  cwd    DIR    8,3        54 51583508 /data
..................

pstree命令

作用:一树状图显示进程

语法:pstree+选项

选项

  • -p:显示进程pid
[root@master30 ~]# pstree -p
systemd(1)─┬─ModemManager(529)─┬─{ModemManager}(537)
           │                   └─{ModemManager}(546)
           ├─NetworkManager(548)─┬─{NetworkManager}(617)
           │                     └─{NetworkManager}(619)
....................

Linux前台进程切换

前台进程:是在终端中运行的命令,那么该终端就为进程的控制终端,一旦这个终端关闭,这个进程也随着消失

后台进程: 也叫守护进程(Daemon),是运行在后台的一种特殊进程,不受终端控制,它不需要与终端交互;Linux的大多数服务器就是用守护进程实现的。比如,Web服务器httpd等。

ctrl+z:把执行的命令放入到后天执行

&:使用命令的末尾加上&;使得命令在后台运行

jobs:查看多少在后台运行的命令

fg:把后台运行的命令调到前台执行

kill命令

作用:关闭进程

语法:kill+选项

选项:

  • -l:查看多少信号
    • 9:退出信号
    • 1:重载信号
    • 2:键盘终端
    • 3:退出
[root@master30 ~]# 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
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	

killall命令

作用:终止进程

语法:killall+进程名

pkill命令

作用:终止进程

语法:pkill+进程名

优先级管理

优先级取值范围:-20,19,越小优先级越高,默认优先级是0

#nice命令讲解
nice+命令

#renice改变程序运行的优先级
renice+数字+进程pid


3、进程实战

实战场景:公司晚上需要备份数据,如果等待执行?在xshell上执行中,然后关闭了xshell的时候,同时命令也会结束;

xshell长时间连接,如果本地网络断开,都会让后台的命令同时停止;

那么就会引入一个screen命令

screen概述和安装

Screen中有会话的概念,,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。

#安装screen命令
[root@master30 data]# rpm -ivh /mnt/cdrom/Packages/screen*
警告:/mnt/cdrom/Packages/screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:screen-4.1.0-0.23.20120314git3c29################################# [100%]

screen的使用方法:

#在xshell中直接输入命令
[root@master30 data]# screen
	#然后输入vim
[root@master30 data]# vim a.txt
ldsfjksdl
sjldfjsl
sdlfkjsldf
......
[detached from 1705.pts-0.master30]
	#然后中间按ctrl+a+d
	
#查看screen的任务列表
[root@master30 data]# screen -ls
There are screens on:
        1759.pts-0.master30     (Attached)
        1705.pts-0.master30     (Detached)
2 Sockets in /var/run/screen/S-root.

#重新恢复
[root@master30 data]# screen -r 1705

ldsfjksdl
sjldfjsl
sdlfkjsldf

#退出screen
[root@master30 data]# exit
exit

[screen is terminating]

screen的常用参数

screen -S test -> 新建一个叫test的会话

screen -ls -> 列出当前所有的会话

screen -r test -> 回到test会话

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-05 17:44:38  更:2021-08-05 17:46:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/13 20:16:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码