linux 系统管理--进入管理
一、进程基本概述
1.什么是进程?
比如:windows上安装的QQ,我们会将其称为QQ程序,那么当QQ运行之后,在任务管理器中,我们可以看到QQ程序在运行着,此时,我们称其为:QQ进程。
言简意赅总结:当我们运行一个程序,那么我们将该程序叫进程
注意:
1.当程序运行为进程后,系统会为该进程分配内存,以及运行的身份和权限。
2.在进程运行的过程中,服务器上会有各种状态来表示当前进程的指标信息。
进程是已启动的可执行程序的运行实例,进程有以下组成部分:
局部和全局变量当前的调度上下文分配给进程使用的系统资源,例如文件描述符、网络端口等给进程分配对应的pid,ppid
2.程序和进程的区别?
1.程序是开发写出来的代码,是永久存在的。数据和指令的集合,是一个静态的概念,比如/bin/ls、/bin/cp等二进制文件。
2.进程是一个程序的运行过程,会随着程序的终止而销毁,不会永远在系统中存在。是一个动态概念,进程是存在生命周期概念的。
3.进程的生命周期
程序运行时进程的状态关系:
1.当父进程接收到任务调度时,会通过fork派生的进程来处理,那么子进程会集成父进程的衣钵。
2.子进程在处理任务代码时,父进程会进入等待的状态...
3.如果子进程在处理任务过程中,父进程退出了,子进程没有退出,那么这些子进程就没有父进程来管理了,就变成了僵尸进程。
4.每个进程都会有自己的PID号,(process id)子进程则PPID
二、监控进程状态
1.使用ps命令查看当前的进程状态(静态查看)
常用组合:ps aux 查看进程
[root@zls ~]# ps auxa:显示所有与终端相关的进程,由终端发起的u:显示用户导向的用户列表x:显示所有与终端无关的进程
在多任务处理操作系统中,每个CPU(或核心)在一个时间点上只能处理一个进程。
在进程运行时,它对 CPU 时间和资源分配的要求会不断变化,从而为进程分配一个状态,它随着环境要求而改变。
USER: //启动程序的用户PID: //进程ID%CPU: //占用CPU的百分比%MEM: //占用内存的百分比VSZ: //虚拟内存集(进程占用虚拟内存的空间)RSS: //物理内存集(进程占用物理内存的空间)TTY: //运行的终端 ?: #内核运行的终端 tty1: #机器运行的终端 pts/0: #远程连接的终端STAT: //进程状态 D: #无法中断的休眠状态(通IO的进程) R: #正在运行的状态 S: #处于休眠的状态 T: #暂停或被追踪的状态 W: #进入内存交换(从内核2.6开始无效) X: #死掉的进程(少见) Z: #僵尸进程 <: n: l: s:>
案例一:PS命令查看前台进程转换到停止
#在终端上运行vim[root@zls ~]# vim zls.txt#查看vim运行的状态,S:睡眠状态 +:在前台运行[root@zls ~]# ps aux|grep [v]imroot 1306 0.0 0.2 151664 5180 pts/0 S+ 13:00 0:00 vim zls.txt#执行ctrl + z,将进程放置后台[1]+ 已停止 vim zls.txt#进程状态变成了T,暂停或被追踪的状态[root@zls ~]# ps aux|grep [v]imroot 1306 0.0 0.2 151664 5180 pts/0 T 13:00 0:00 vim zls.txt
案例二:PS命令查看不可中断状态
#在终端上运行tar命令[root@zls ~]# tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/#持续查看tar进程的状态[root@zls ~]# ps aux|grep [t]arroot 1348 13.3 0.0 124008 1700 pts/0 R+ 13:06 0:00 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/[root@zls ~]# ps aux|grep [t]arroot 1348 13.2 0.0 124008 1716 pts/0 R+ 13:06 0:00 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/[root@zls ~]# ps aux|grep [t]arroot 1348 15.7 0.0 124008 1716 pts/0 S+ 13:06 0:00 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/[root@zls ~]# ps aux|grep [t]arroot 1348 13.6 0.0 124008 1736 pts/0 S+ 13:06 0:00 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/[root@zls ~]# ps aux|grep [t]arroot 1348 15.1 0.0 124008 1736 pts/0 R+ 13:06 0:00 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/[root@zls ~]# ps aux|grep [t]arroot 1348 14.1 0.0 124008 1736 pts/0 D+ 13:06 0:00 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/[root@zls ~]# ps aux|grep [t]arroot 1348 13.2 0.0 124008 1756 pts/0 R+ 13:06 0:01 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/[root@zls ~]# ps aux|grep [t]arroot 1348 15.2 0.0 124140 1756 pts/0 R+ 13:06 0:01 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/[root@zls ~]# ps aux|grep [t]arroot 1348 14.7 0.0 124240 1952 pts/0 S+ 13:06 0:01 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
案例三:PS命令查看进程Ss+状态
#过滤bash进程,再开启终端[root@zls ~]# ps aux|grep [b]ashroot 1127 0.0 0.1 115436 2084 tty1 Ss 11:49 0:00 -bashroot 1180 0.0 0.0 115436 1900 tty1 S+ 11:49 0:00 bashroot 1198 0.0 0.1 115564 2152 pts/0 Ss 11:50 0:00 -bashroot 1324 0.0 0.1 115440 2064 pts/1 Ss+ 13:01 0:00 -bash
了解进程如下选项:
PID,PPID当前的进程状态内存的分配情况CPU 和已花费的时间用户UID决定进程的特权
ps命令使用方法
#对进程的CPU进行排序展示[root@zls ~]# ps aux --sort %cpu |less#对进程的占用物理内存排序[root@zls ~]# ps aux --sort rss |less#排序,实在记不住,那就自己排序[root@zls ~]# ps aux|sort -k3 -n#自定义显示字段,指定想看的列[root@zls ~]# ps axo user,pid,ppid,%mem,command |grep sshdroot 869 1 0.2 /usr/sbin/sshd -Droot 1194 869 0.2 sshd: root@pts/0root 1307 869 0.2 sshd: root@pts/1root 1574 869 0.2 sshd: root@pts/2#显示进程的子进程[root@zls ~]# yum install nginx -y[root@zls ~]# systemctl start nginx[root@zls ~]# ps auxf|grep [n]ginxroot 2033 0.0 0.1 125096 2112 ? Ss 13:29 0:00 nginx: master process /usr/sbin/nginxnginx 2034 0.0 0.1 125484 3148 ? S 13:29 0:00 _ nginx: worker process#默认不加选项是查看指定进程PID[root@zls ~]# ps aux|grep sshdroot 1157 0.0 0.1 105996 3604 ? Ss Feb27 0:00 /usr/sbin/sshd -D[root@zls ~]# cat /run/sshd.pid1157#pgrep常用参数, -l -a[root@zls ~]# pgrep sshd869119413071574[root@zls ~]# pgrep -l sshd869 sshd1194 sshd1307 sshd1574 sshd[root@zls ~]# pgrep -l -a sshd869 /usr/sbin/sshd -D1194 sshd: root@pts/01307 sshd: root@pts/115