Linux云计算学习笔记08 (CentOS 进程管理)

1.过程的定义。
程序:
文件,一般是二进制,静态 /usr/sbin/httpd,/usr/sbin/sshd。
程序是二进制文件(#xff09面试题之一;
过程:
是程序运行的过程, 动态,生命周期,
可以生成和消失(过程是已启动的可执行程序的操作示例,示例是可执行程序的操作示例)。
线程:
线程是过程中独立执行的单元。对于操作系统,,其调度单元为线程;
一个过程至少包括一个线程这个线程通常被称为主线程;
一个过程从主线程的执行开始,然后创建一个或多个附加程序,所谓基于多线程的多任务.。
二.进程的生命周期。
父过程:
程序运行中产生的第一个过程,任何进程都可以作为父进程创建子进程。
子过程:
由父亲使用fork()函数完全复制自己的地址空间创建的新过程是子过程,
继承父亲过程的安全身份、过去和现有的文件描述符、端口和资源特权、环境变量,
以及程序代码,随后,exec自己的程序代码可能是子过程。
poccess id: pid 过程号!
对父亲进程的跟踪和安全以及管理人员的控制和管理所需,
父亲的过程将分配一个唯一的过程id,这个id就是pid。
3.过程状态。
在多任务处理操作系统中,每个CPU(或者每个核心只能在一个时间点处理一个过程。在过程中运行c;它对CPU 时间和资源分配的要求会不断变化(过程不会持续占用cpu,而是根据自己的需要来决定是否需要使用cpu时间),因此,在运行过程中会有不同的状态,它随着环境要求的变化而变化,具体状态请参考下图:
在父进程fork()衍生出一个过程后,根据CPU当前流程的时间和资源需求,统一内核流程调度程序进行调度,如果进程需要cpu,c;然后,调度程序将根据当前过程的优先级进行调度,从而通知cpu何时处理过程。此时,过程将处于R状态。
-(running运行状态)#xff0;
R状态包括两种情况:
1.第一种情况是在Runnnable状态下排队等待cpu处理。
2.第二种情况是cpu处理running状态;
在运行过程中,用户可能会发送stop状态,从而暂停到后台此时,过程处于T状态;
T-(stop停止状态)
当然,这个过程也可能不需要cpu处理或操作,或者他自己是一个父进程,有子的过程正在工作,此时将处于sleping状态;
S-(sleeping睡眠状态)#xff0;
工作结束后,它将释放各种资源,然后进入Z状态,
Z-(zombie僵尸)
当父亲的过程被回收时,它将处于完全结束的X状态。
X-(#xff09完全结束;
如图所示,#xff1a;
状态总结:
R状态:包括runnnable和running,这意味着过程正在等待或在cpu上运行。
Sleeping: 包含S、D、K三种状态。
S:可中断睡眠在等待事件触发/接收指定信号(硬件请求/系统之间的访问)后,进程才会运行。
D:不要中断睡眠不接收或相应的外部信号,I/O操作通常正在进行中。
K:与D状态相同,但是可以中断。
Stopped:T状态,表示过程已停止信号通常由用户或其他过程发送。
Zombie:包含X、Z两种状态。
Z:除pid外释放其他资源,将退出信号发送给父亲进程后进入Z状态。
X: 完全退出状态
僵尸过程危害:
大量的僵尸过程会导致我们系统中没有可用的pid,导致系统问题
如何产生僵尸过程?
1. 子过程结束后,父亲的过程还在运行此时,所有子进程都将进入僵尸状态,
少量僵尸进程对系统危害不大,但是大量的僵尸过程会拖垮服务器。
4.检查过程状态。
命令1:
ps aux
命令2:
ps -elf
以ps aux为例 。
# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.0 2164 648 ? Ss 08:47 0:00 /usr/lib/systemd/systemdUSER: 用户PID运行过程a; 进程ID%CPU: CPU占用率%%MEM: 内存占用率VSZ: 占用虚拟内存所有RSSS,包括程序、代码、共享库等: 占用实际内存 TTY: 过程运行的终端表示不依赖任何终端STAT: 进程状态 R 运行 S 可中断睡眠 Sleep D 睡眠不能中断 T 停止的进程 Z 僵尸进程 X 死掉的进程 Ss 过程的领导者,父进程 S< <过程优先级较高 SN N优先级较低的进程 R+ +这意味着它是前台的进程组 Sl 以线程的形式运行 START: TIME的启动时间a; 过程占用CPU总时间,单位为minuteCOMMAND: 过程文件PPID进程名 父进程号。
查看指定过程pid
ps aux |grep 服务名。
检查过程树。
首先需要下载软件包:yum install -y psmisc。
例:pstree apache (用户名启动过程)
五、工艺优先级。
优先使用过程nice值来表示。
过程优先级: 0--------139 数值越小,#xff0c;优先级越高。
#xff1高优先级进程a; 获得更多的CPU执行时间 优先执行cpu。
nice值: -20-----19。
nice值设置:rnice 值 pid[root@localhost ~]# renice 0 93499349 (进程 ID) 旧优先级为 6,新优先级为 0。
六、动态查看过程。
使用命令:top
第一部分:整个统计信息top系统 - 14:22:36 up 4:45, 3 users, load average: 0.00, 0.00, 0.00Tasks: 206 total, 2 running, 204 sleeping, 0 stopped, 0 zombieCpu(s): 1.6%us, 0.7%sy, 0.0%ni, 96.8%id, 0.9%wa, 0.0%hi, 0.0%si, 0.0%stMem: 4019424k total, 1327584k used, 2691840k free, 131012k buffersSwap: 2047992k total, 0k used, 2047992k free, 650880k cachedload average: 0.23, 0.06, 0.02 1分钟,5分钟,系统平均负载us分钟内a;用户占用cpu的百分比 sy:CPU内核占CPU百分比 ni cpu的百分比已经改变了优先级过程所占用的 id:空闲时间cpu wa:等待CPUIO的时间 hi:硬中断占CPU百分比 si:软中断 st:cpu被盗时间的第二部分:进程信息命令h或?获得帮助M 根据使用内存对P进行排序 按CPU使用排序N RID按PID的大小排序 反转f进行排序 自定义显示字段,调整字段顺序(选择正行上下箭头调整)1 显示所有CPU的负载W PIDDD环境设置保存top环境 — IDUSER的过程 — PR进程所有者 — NI进程优先级 — nice值。负值表示高优先级表示低优先级VIRTT — 虚拟内存总量,单位kb。负值表示高优先级表示低优先级VIRTT — 虚拟内存总量,单位kb。VIRT=SWAP+RESRES — 使用过程中未更换的物理内存大小,单位kb。RES=CODE+DATASHR — 共享内存大小单位kbS — 进程状态。D=睡眠状态不可中断 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程%CPU — 上次更新到现在CPU时间占百分比%MEM — TIME+ — CPU时间总计,1/100秒COMMAND — 过程名称(命令名/命令行)
七、其他检查服务器性能的命令。
df -Th:查看磁盘信息。
df -Th:查看磁盘信息
free -m:查看内存信息。
lscpu:查看CPU信息。
八、操作控制。操作控制是命令行功能,可以允许shelll 能同时运行多个过程,还可以实现进程管理例如,可以选择性地暂停和恢复某些过程,让shell在子进程运行期间返回并接受其他命令
前台和后台的过程。
前台:前台进程将占用当前终端,当前终端是该过程的控制终端,该过程将接收键盘产生的输入信号
后台:后台过程没有控制终端,不需要终端交互,不接收终端输入的信号。
fg。
调用& 前台 (单独使用fg命令,调用作业+作业)
bg。
ctrl+z 将(挂起;stop),将bg调整到后台运行状态。
kill
杀死进程。
pkill
批量杀死过程。分享让更多人看到