本文共 3558 字,大约阅读时间需要 11 分钟。
进程管理用的比较多的工具就是ps(进程的显示工具=process 显示show) simple list output输出 threads 线程 misc杂项 all 三种风格,-aux 和aux带-不带- ,效果不一样 默认只显示当前一个用户开的进程,看不到别的终端上的进程 (但登录在这台电脑上的还有其他终端,而且除了这些执行的前台进程,还有其他的后台进程,还有很多和终端无关的) 只显示tty0的终端的进程,(还有一些彻底和终端无关的,后台服务开机就运行的) 这些都默认看不见,想看就得加选项想看别的终端上的进程就加 a
但是实际上,除了用户开的进程,还有一些是在后台运行的,与终端无关的,(比如与服务相关的守护进程,开机自动运行,不需要用户登录已经运行,这些进程可以说与终端无关,如果想看就要加x) ps ax 既看到了终端有关的又看了与终端无关的进程 TTY,终端编号 ?就是计算机启动自动开启,与终端无关 **TIME代表这个进程开启以后占用cpu的时间片的总和,(有些情况下,没有消耗cpu就不算时长,消耗cpu的总时长) command后面就是跟的程序的名字 **但是信息还是不够全面,想要看到进程占用的内存多大,以什么身份运行,就可以加u u能显示更加详细的(显示进程所有者的信息)
除了显示用户,还显示了占用cpu的百分比,占用的内存百分比 VSZ 系统承诺分配的空间 RSS目前真正占用的空间 START 这个进程开启的时间,什么时候启动的一般工程师都喜欢用aux
$$脚本运行的当前进程ID号 k|–sort 按照特定的属性排序 (指向显示该进程占用的cpu内存,并且希望将来按cpu利用率排序)可以用o o只显示特定的内容,(光用o的话(只显示当前的终端的进程,显示的内容少),需要 a(显示除了本终端还有其他终端的进程) x(既看到了终端有关的又看了与终端无关的进程)配合) 显示内容太少,加x 但是x不能放在o后面,因为o后面放的是各种属性 默认按进程编号排序,也可以按k 指定cpu排序 利用率高的就在下面了 也可以按照内存排序,排序之前,先要在前面显示内存使用率列 图形界面比较废内存,所以一般实际情况下不装图形界面,比较耗费资源 windows也有一种字符界面模式 叫core模式可以用L查看支持哪些属性
euid 有效的用户 ruid 真正的 passwd权限有suid权限,(当用户去运行具有suid权限的程序的时候,该用户的权限会继承管理员(程序所有的)的权限)相当于wang变成了root,root有效用户 (用root的身份,但是真正的用户是wang,真实运行的用户) 也可以采用unix风格的选项 -是unix风格的 -e 显示所有进程,相当于-A -f,显示完整格式程序信息 PPID 父进程的 C STIME 启动时间,这些信息相对aux,aux更加详细些 BSD格式的-e等于-A,显示所有进程 -f 全格式,-F格式更全 extra额外的 SZ承诺使用内存 RSS实际使用内存 PSR占用的cpu(当前跑在哪颗cpu上) TIME lscpu查看cpu -H:以进程层级格式显示进程相关信息 跟刚才的 auxf(不带dash -号的类似) -u =euser 有效用户 -U ruser 真实用户 wang用户打开的进程列表 -U真实使用的用户 -u 有效用户 程序的权限 显示的是selinux的相关属性 早起nice优先级显示的是-20-19的优先级关系(实际对应系统优先级的0-139) ps命令可以直接显示优先级 nice可以简写成ni passwd进程pid 2612 cmd 进程名 pri 优先级 19 (实际是120+19=139)(等于0-139 ,倒过来,139-0 这样nice对应的值就是19) nice (ni优先级0,对应系统中的120) rytprio实时优先级 realtime 120的时候没有对应关系就是- nice优先级可以根据情况调整 renice可以修改优先级 理论上这个值越大,优先级越高 越高的数字越低的优先级(写反了)所以不要盲目相信官方文档、 rtprio实时优先级,99是最高的优先级 pri是反过来的就是pri 0是系统默认的 也可以程序运行前就指定优先级。而不是运行中间改 也可以不跟-n (–5是 5 -5 是5) nice优先级可以适当调整程序的优先级 (数字越大越宽容,优先权就靠后) psr是cpu运行结果 可以用watch -n 1 1秒的程序运行结果 每颗cpu都有自己的缓存,一个程序在cpu上跳转工作,是比较浪费的,切换的时候缓存没了,(就可以绑定 到单独一个cpu上去,保持效率,比如nginx)(状态保存和切换信息,必然会浪费内存) 所以绑死cpu就比较好(但是cpu坏很少见) 管理的思路 nginx -x x 类似 -f显示完整格式程序信息 -U 真正的用户id(真实用户) -u 有效的用户 -G真正的所属组 通过pid显示某个进程的信息 通过pid 自己作为父进程,显示下面的所有子进程 显示多个进程的信息,也可以显示某个终端上的跑的进程 名字叫bash的进程 如果不加#!/bin/bash 或者 用bash fi,sh执行 救护导致看不到执行进程,显示的是bash或者 bash fi。sh 可以显示多个脚本信息 可以更详细的了解,进程编号,命令,cpu利用率,内存利用率。 ‘ps -p 1244 -o comm= 要根据pid进程编号找进程名称’ 也可以根据进程名称找进程编号 ping相当于f1.sh下的子命令 可以查看进运行的时间,持续增长(不代表cpu工作的时间,如果无人访问,就一直处在就绪状态,实际就是表示这个进程已经启动了多长时间) 已经开始了一个小时 按内存排序,–sort=-%mem按照倒序排序 –sort=%mem正序排序 工作中会遇到查看哪个进程比较消耗cpu和内存 nice(设置某个程序运行的时候的优先级) renice 改现在允许程序的优先级 显示某个进程的信息,grep可以,也有专门的pgrep命令 pgrep是专门用来搜索进程信息(也支持正则表达式) pts/1上设备进行的进程 w命令是列出当前所有登录在当前主机的终端 -l显示进程名称 l相比a还是简洁一点 可以用正则表达搜索或过滤掉一些进程 这个程序可以显示某个程序对应的进程id 有一些其他工具可以了解当前系统运行的状态 (ps和pgrep是查看进程的,除了这些还有一些系统的负载状态,内存等使用情况) uptime 启动的时间 up后面跟的时间代表已经启动多久了 load average 平均负载情况,一分钟、五分钟、10分钟之内负载的情况,对应值越小,当前的负载情况越少 (在一分钟之内有0.02个任务没有完成(没完成说明,cpu很忙) 这个值不大于cpu个数的2倍) 可以动态跟踪,ps aux是快照机制,不能实时观察 top可以动态地观察cpu,内存情况 第一行(uptime) tasks 进程数量 138个 有4个在允许, 136个在可中断睡眠 0停止的 0个僵死的 第三行属于cpu分配,13.7是给用户空间程序使用的,47。2是给系统空间占用的,0.0调整优先级的,id表示空闲(34.5) wa等待的cpu,hi si(软中断(应用程序发生了,有个事件需要处理,让cpu响应),硬中断(键盘回馈cpu需要解决的事情))(中断是cpu实现进程响应时间发送的机制),si 软中断(中断都要消耗cpu,现在是软中断消耗的cpu时间更多一点,), st表示偷盗的意思(被盗取的时间),对于电脑来讲,cpu消耗都是在本机的进程里的,有可能电脑上跑 了一个虚拟机,虚拟机也有自己 进程消耗cpu,被虚拟机偷走了(虚拟机的进程,当前电脑看不到) 第4行,kb为单位,总的内存空间,剩余空间,正在使用的空间,缓存 第5行,swap基本没有使用,说明内存够用 进程默认是以cpu来排序的 也可以按照内存排序,按M,大P又回到cpu排序 按l隐藏显示uptime信息 t命令换方式显示cpu 按1可以切换单,双cpu m控制内存显示情况,q退出 s可以修改刷新时间间隔 k可以知道kill掉某个进程 杀掉它发个信号,15信号,关闭进程的意思 W 保存到家目录里 指定6秒刷新间隔 top命令只显示前面部分进程,-b显示所有进程 刷新多少次以后退出 -n 3 刷新3 次 -b全部显示 -d6 6秒一刷新 top工具是常用的观察系统运行的工具,也有更花哨的工具,htop转载地址:http://ggzgn.baihongyu.com/