每天一点Linux-10关于进程
关于进程
What is a process? 什么是进程
Process life cycle 进程的生命周期
Process states 进程状态
什么是进程?
进程是已启动的可执行程序的运行实例,进程有以下组成部分:
- 已分配内存的地址空间;
- 安全属性,包括所有权凭据和特权;
- 程序代码的一个或多个执行线程;
- 进程状态。
程序: 二进制文件,静态 /bin/date, /usr/sbin/httpd,/usr/sbin/sshd, /usr/local/nginx/sbin/ngix
进程: 是程序运行的过程, 动态,有生命周期及运行状态。
进程的生命周期
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性之需。PID 和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代:
Centos5/6: init
Centos7: systemd
子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出(exit)信号请求,在退出时,子进程已经关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。
进程状态
在多任务处理操作系统中,每个CPU(或核心)在一个时间点上只能处理一个进程。在进程运行时,它对CPU 时间和资源分配的要求会不断变化,从而为进程分配一个状态,它随着环境要求而改变。
查看进程 process
了解如进程的:
• PID,PPID
• 当前的进程状态
• 内存的分配情况
• CPU和已花费的实际时间
• 用户UID,它决定进程的特权
静态查看进程 ps
注:ps -aux (unix)不同于 ps aux (BSD)
[yang@ecs-ea9d ~]$ ps aux |less
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 125216 3676 ? Ss 15:13 0:00 /usr/lib/systemd/systemd--switch
root 2 0.0 0.0 0 0 ? S 15:13 0:00 [kthreadd]
systemd:Centos7中的初始进程
- USER: 运行进程的用户
- PID: 进程ID
- %CPU: CPU占用率
- %MEM: 内存占用率
- VSZ: 占用虚拟内存
- RSS: 占用实际内存 驻留内存
- TTY: 进程运行的终端
- STAT: 进程状态 man ps (/STATE)
- R 运行
- S 可中断睡眠 Sleep
- D 不可中断睡眠
- T 停止的进程
- Z 僵尸进程
- X 死掉的进程
- Ss s进程的领导者,父进程
- S< <优先级较高的进程
- SN N优先级较低的进程
- R+ +表示是前台的进程组
- Sl 以线程的方式运行
- START: 进程的启动时间
- TIME: 进程占用CPU的总时间
- COMMAND: 进程文件,进程名
[yang@ecs-ea9d ~]$ ps aux –sort %cpu |less //按照cpu使用情况排序,升序
[yang@ecs-ea9d ~]$ ps aux –sort -%cpu |lessq //按照cpu使用情况排序,降序
[yang@ecs-ea9d ~]$ ps aux –sort rss |less //按照内存使用情况排序,升序
[yang@ecs-ea9d ~]$ ps aux –sort -rss |less //按照内存使用情况排序,降序
httpd:帮助查看进程父子关系
[yang@ecs-ea9d ~]$ sudo yum -y install httpd
[yang@ecs-ea9d ~]$ sudo systemctl start httpd
[yangt@ecs-ea9d ~]# ps auxf |grep httpd
[yang@ecs-ea9d ~]$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:47 ? 00:00:00 /usr/lib/systemd/systemd --switched-root --system
//自定义显示字段
[yang@ecs-ea9d ~]$ ps axo user,pid,ppid,%mem,command
[yang@ecs-ea9d ~]$ ps axo user,pid,ppid,%mem,command |grep httpd
[yang@ecs-ea9d ~]$ ps axo user,pid,ppid,%mem,%cpu,command –sort -%cpu |less
//查看指定进程的PID
[yang@ecs-ea9d ~]$ cat /run/sshd.pid
777
[yang@ecs-ea9d ~]$ ps aux |grep sshd
[yang@ecs-ea9d ~]$ pgrep -l sshd
[yang@ecs-ea9d ~]$ pgrep sshd
[yang@ecs-ea9d ~]$ pidof sshd
//查看进程树
[yang@ecs-ea9d ~]$ pstree
动态查看进程 top
默认每三秒动态更新一次,也可以回车进行
[yang@ecs-ea9d ~]$ top
[yang@ecs-ea9d ~]$ top -d 1
[yang@ecs-ea9d ~]$ top -d 1 -p 10126 查看指定进程的动态信息
[yang@ecs-ea9d ~]$ top -d 1 -p 10126,1
[yang@ecs-ea9d ~]$ top -d 1 -u apache 查看指定用户的进程
[yang@ecs-ea9d ~]$ top -d 1 -b -n 2 > top.txt 将2次top信息写入到文件
第一部分:系统整体统计信息
load average: 0.86, 0.56, 0.78 系统最近 1分钟,5分钟,15分钟平均负载
第二部分:进程信息
命令:
- h或? 帮助
- M 按内存的使用排序
- P 按CPU使用排序
- N 以PID的大小排序
- R 对排序进行反转
- f 自定义显示字段
- < 向前, > 向后
- W 保存top环境设置
- 1 显示所有CPU的负载
- z 彩色**
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2924854739@qq.com
文章标题:每天一点Linux-10关于进程
本文作者:DROBP
发布时间:2019-08-18, 12:01:20
最后更新:2019-08-18, 17:37:54
原始链接:https://DROBP.github.io/2019/08/18/每天一点Linux-10关于进程/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。