Linux运维基础进程管理及环境组成分析

网友投稿 903 2022-10-17

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Linux运维基础进程管理及环境组成分析

目录1.进程基本概述2.进程的组成部分3.进程的环境4.进程状态5.进程优先级6.进程管理命令7.vmstat8.后台运行作业

1.进程基本概述

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

/proc目录下以数字为名的目录,每一个目录代表一个进程,保存着进程的属性信息。

每一个进程的PID是唯一的,就算进程退出了,其它进程也不会占用其PID

2.进程的组成部分

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

3.进程的环境

本地和全局变量当前调度上下文分配的系统资源,如文件描述符和网络端口

4.进程状态

标志内核定义的状态名称和描述
RTASK_RUNNING:进程正在CPU上执行,或者正在等待运行。处于运行中(或可运行)状态时,进程可能正在执行用户例程或内核例程(系统调用),或者已排队并就绪
STASK_INTERRUPTIBLE:进程处于睡眠状态且正在等待某一条件:硬件请求、系统资源访问或信号。当事件或信号满足该条件时,该进程将返回到运行中
DTASK_UNINTERRUPTIBLE:此进程也在睡眠,但与S状态不同,不会响应传递的信号。仅在特定的条件下使用,其中进程中断可能会导致意外的设备状态
KTASK_KILLABLE:进程处于睡眠状态,与不可中断的D状态相同,但有所修改,允许等待中的任务通过响应信号而被中断(彻底退出)。实用程序通常将可中断的进程显示为D状态
TTASK_STOPPED:进程已被停止(暂停),通常是通过用户或其他进程发出的信号。进程可以通过另一信号返回到运行中状态,继续执行(恢复)
TTASK_TRACED:正在被调试的进程也会临时停止,并且共享同一个T状态标志
ZEXIT_ZOMBIE:子进程在退出时向父进程发出信号。除进程身份(PID)之外的所有资源都已释放
XEXIT_DEAD:当父进程清理(获取)剩余的子进程结构时,进程现在已彻底释放。此状态从不会在进程列出实用程序中看到
<高优先级进程
N低优先级进程
+前台进程组中的进程
l多线程进程
s会话进程首进程

5.进程优先级

<0-139>:数字越小,优先级越高!<0-99>:实时优先级,内核调整<100-139>:静态优先级,用户可控制

6.进程管理命令

ps命令用于列出当前的进程。可以显示详细的进程信息

[root@localhost ~]# ps -e PID TTY TIME CMD 1 ? 00:00:02 systemd 2 ? 00:00:00 kthreadd

[root@localhost ~]# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.6 179032 13504 ? Ss Nov03 0:02 /usr/lib/systroot 2 0.0 0.0 0 0 ? S Nov03 0:00 [kthreadd]root 3 0.0 0.0 0 0 ? I< Nov03 0:00 [rcu_gp]root 4 0.0 0.0 0 0 ? I< Nov03 0:00 [rcu_par_gp]root 6 0.0 0.0 0 0 ? I< Nov03 0:00 [kworker/0:0Hroot 8 0.0 0.0 0 0 ? I< Nov03 0:00 [mm_percpu_wqroot 9 0.0 0.0 0 0 ? S Nov03 0:00 [ksoftirqd/0]root 10 0.0 0.0 0 0 ? R Nov03 0:00 [rcu_sched]root 11 0.0 0.0 0 0 ? S Nov03 0:00 [migration/0]root 12 0.0 0.0 0 0 ? S Nov03 0:00 [watchdog/0]root 13 0.0 0.0 0 0 ? S Nov03 0:00 [cpuhp/0]root 15 0.0 0.0 0 0 ? S Nov03 0:00 [kdevtmpfs]root 16 0.0 0.0 0 0 ? I< Nov03 0:00 [netns]root 17 0.0 0.0 0 0 ? S Nov03 0:00 [kauditd]root 18 0.0 0.0 0 0 ? S Nov03 0:00 [khungtaskd]root 19 0.0 0.0 0 0 ? S Nov03 0:00 [oom_reaper]root 20 0.0 0.0 0 0 ? I< Nov03 0:00 [writeback]root 21 0.0 0.0 0 0 ? S Nov03 0:00 [kcompactd0]root 22 0.0 0.0 0 0 ? SN Nov03 0:00 [ksmd]root 23 0.0 0.0 0 0 ? SN Nov03 0:00 [khugepaged]root 24 0.0 0.0 0 0 ? I< Nov03 0:00 [crypto]root 25 0.0 0.0 0 0 ? I< Nov03 0:00 [kintegrityd]root 26 0.0 0.0 0 0 ? I< Nov03 0:00 [kblockd]root 27 0.0 0.0 0 0 ? I< Nov03 0:00 [tpm_dev_wq]root 28 0.0 0.0 0 0 ? I< Nov03 0:00 [md]root 29 0.0 0.0 0 0 ? I< Nov03 0:00 [edac-poller]root 30 0.0 0.0 0 0 ? S Nov03 0:00 [watchdogd]root 47 0.0 0.0 0 0 ? S Nov03 0:00 [kswapd0]root 140 0.0 0.0 0 0 ? I< Nov03 0:00 [kthrotld]root 141 0.0 0.0 0 0 ? S Nov03 0:00 [irq/24-pciehroot 142 0.0 0.0 0 0 ? S Nov03 0:00 [irq/25-pciehroot 143 0.0 0.0 0 0 ? S Nov03 0:00 [irq/26-pciehroot 144 0.0 0.0 0 0 ? S Nov03 0:00 [irq/27-pciehroot 145 0.0 0.0 0 0 ? S Nov03

[root@localhost ~]# ps -efUID PID PPID C STIME TTY TIME CMDroot 1 0 0 Nov03 ? 00:00:02 /usr/lib/systemd/systemd --sroot 2 0 0 Nov03 ? 00:00:00 [kthreadd]root 3 2 0 Nov03 ? 00:00:00 [rcu_gp]root 4 2 0 Nov03 ? 00:00:00 [rcu_par_gp]root 6 2 0 Nov03 ? 00:00:00 [kworker/0:0H-k

7.vmstat

虚拟内存状态查看命令

vmstat 1000 //表示每1000秒刷新一次vmstat 1000 5 //表示每1000秒刷新一次,刷新5次后退出

[root@localhost ~]# vmstat 1000procs: r(running) //表示等待运行的队列长度,也即等待运行的进程的个数 b(block) //表示阻塞队列长度,也即处于不可中断睡眠态的进程个数memory: swpd //交换内存的使用总量 free //空闲物理内存总量 buffer //用于buffer的内存总量 cache //用于cache的内存总量swap: si(swap in) //表示从物理内存有多少页面换进swap,也即数据进入swap的数据速率(kb/s) so(swap out) //表示从swap有多少页面换进物理内存,也即数据离开swap的数据速率(kb/s)io: bi(block in) //表示磁盘块有多少个被调入内存中,也即从块设备读入数据到系统的速率(kb/s) bo(block out) //表示有多少个磁盘块从内存中被同步到硬盘上去了,也即保存数据至块设备的速率(kb/s)system: in( interrupts) //表示中断的个数,也即中断速率(kb/s) cs(context switch) //表示上下文切换的次数,也即进程切换速率(kb/s)CPU: us //表示用户空间 sy //表示内核空间 id //表示空闲百分比 wa //表示等待IO完成所占据的时间百分比 st //表示steal,被虚拟化技术偷走的时间(比如运行虚拟机)

8.后台运行作业

//在命令后跟上&符号可以生成一个后台作业[root@localhost ~]# sleep 1000 &[1] 1400//jobs命令用于显示当前所有的后台作业[root@localhost ~]# jobs[1]+ Running sleep 1000 &//fg命令用于将后台作业调至前台运行[root@localhost ~]# fg//当只有一个后台作业时,直接使用fg命令,不跟任何参数即可将后台作业调至前台运行,但是当有多个作业时则必须跟上%+作业号,也就是上面命令执行结果中以[]括起来的数字。[root@localhost ~]# jobs[1]- Running sleep 1000 &[2]+ Running sleep 500 &[root@localhost ~]# fg %1//使用ctrl+z可将前台进程发送到后台,此时作业将处于停止状态[root@localhost ~]# fg %1sleep 1000^Z[1]+ Stopped sleep 1000//使用bg命令+作业号可使后台已停止的作业重新运行[root@localhost ~]# bg %1[1]+ sleep 1000 &[root@localhost ~]# jobs[1]- Running sleep 1000 &[2]+ Running sleep 500 &//kill加上作业号可以手动杀死指定作业[root@localhost ~]# jobs[1]- Running sleep 1000 &[2]+ Running sleep 500 &[root@localhost ~]# kill %1[1]- Terminated sleep 1000[root@localhost ~]# jobs[2]+ Running sleep 500 &//jobs命令的结果中 + //命令将默认操作的作业 - //命令将第二个默认操作的作业

以上就是Linux运维基础进程管理及环境组成分析的详细内容,更多关于Linux进程管理及环境组成的资料请关注其它相关文章!

您可能感兴趣的文章:linux系统之进程管理详解Linux运维基础进程管理实时监控控制Linux进程管理工具supervisor安装配置教程Linux运维工具Supervisor的安装使用(进程管理工具)详解Supervisor安装与配置(Linux/Unix进程管理工具)Linux进程管理方法介绍

上一篇:运维监控-Open-Falcon单机部署实战篇
下一篇:2019年Linux运维趋势与规划展望
相关文章

 发表评论

暂时没有评论,来抢沙发吧~