【服务器管理】Ubuntu服务器进程查看、管理笔记
撰写本文单纯记录我在服务器维护管理过程中遇到的某个小问题:如何完整知道某个PID的用户名。
top命令的使用
我们都知道,在Ubuntu的终端输入top
命令,可以实时监控系统的状况(进程、CPU使用、内存使用等),如下图所示。
top
主要参数 | 参数作用 |
---|---|
d | 指定更新的间隔,以秒计算 |
q | 没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行 |
c | 显示进程完整的路径与名称 |
S | 累积模式,会将己完成或消失的子行程的CPU时间累积起来 |
s | 安全模式 |
i | 不显示任何闲置(Idle)或无用(Zombie)的行程 |
n | 显示更新的次数,完成后将会退出 |
这里简单介绍前面5行:
行号 | 意义 |
---|---|
1 | top -当前系统时间, up 系统已运行时间(期间没有重启), 当前有几个用户登录系统 users, load average: 1分钟、5分钟、15分钟的负载情况 |
2 | Tasks — 任务(进程),总共有几个进程,有几个正在运行(running),几个在休眠(sleeping),几个已停止(stopped),几个僵尸(zombie)状态 |
3 | %Cpu(s) cpu状态, us:用户空间占用CPU的百分比, sy:内核空间占用CPU的百分比,ni:改变过优先级的进程占用CPU的百分比,id:空闲CPU百分比,wa: IO等待占用CPU的百分比, hi: 硬中断(Hardware IRQ)占用CPU的百分比, si: 软中断(Software Interrupts)占用CPU的百分比 |
4 | KIB Mem: 内存状态: 物理内存总量(KIB) total, 空闲内存总量(KiB) free, 使用中的内存总量(KiB) used, 缓存的内存量(KiB) buff/cache |
5 | swap交换分区: 交换区总量(KIB) total, 空闲交换区总量(KiB) free, 使用中的交换区总量(KiB) used |
第7行以下:各进程(任务)的状态监控
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
ps命令的使用
ps命令是Process Status的缩写。ps命令可以列出系统中当前运行的进程,所列出的进程是执行ps命令这个时刻正在运行的进程。如果要动态显示进程信息,需要使用top命令。
linux进程的状态及其在ps命令下的标识码
linux进程的状态 | ps命令下的标识码 |
---|---|
1.运行(正在运行或在运行队列中等待) | R 运行 runnable(on run queue) |
2.中断(休眠中,受阻,或等待某个条件的形成或接受到信号) | S 中断 sleeping |
3.不可中断(收到信号不唤醒和不可运行,进程必须等待直到有中断发生) | D 不可中断 uninterruptible sleep (usually IO) |
4.僵死(进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放) | Z 僵死 a defunct(“zombie”) process |
5.停止(进程受到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行) | T 停止 traced or stopped |
命令参数
a 显示所有进程
-a 显示同一终端下的所有程序
-A 显示所有进程
c 显示进程的真实名称
-N 反向选择
-e 等于“-A”
e 显示环境变量
f 显示程序间的关系
-H 显示树状结构
r 显示当前终端的进程
T 显示当前终端的所有程序
u 指定用户的所有进程
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的进程
-C<命令> 列出指定命令的状况
–lines<行数> 每页显示的行数
–width<字符数> 每页显示的字符数
–help 显示帮助信息
–version 显示版本显示
常用情形
- 显示所有当前进程
ps -ax
ps -ax | less
- 查看指定用户
user_name
的进程
ps -u user_name
- 查看指定进程
pid_num
的具体信息
ps -u -p pid_num
输出完整的用户名,xxxxxxxxxxxxxxxxxxx的长度由最长的用户名位数决定
ps -o ruser=xxxxxxxxxxxxxxxxxxx -e -o pid,ppid,c,stime,tty,time,cmd | grep 1229
- 根据CPU使用率来升序排序
ps -aux --sort -pcpu | less
ps -aux --sort -pcpu | head -n 50 #显示前50个结果
- 根据内存使用率来升序排序
ps -aux --sort -pmem | less
ps -aux --sort -pmem | head -n 50 #显示前50个结果
- 查看使用python命令的进程
ps -aux | grep python
备注:以上命令都可以通过watch -n 1 '命令’来进行动态查看,例如watch -n 1 'ps -aux | grep python'
/proc 文件夹的利用
查看所有进程
ll /proc
查看某个pid_num进程
例如,我通过nvidia-smi查看GPU的使用情况
希望知道某个pid_num进程是哪个用户的,使用以下命令:
ll /proc/pid_num
查看服务和停掉服务
service --status-all
如下图所示,“+"表示服务已经开启;”-“表示服务已关闭
systemctl stop nis
systemctl stop ufw