前言
本文将介绍Linux基本的监测与管理方法,包括系统资源监测、进程管理以及用户权限控制等方面的内容。通过学习本文,您将能够更好地理解和使用Linux系统,并有效地进行系统监测和管理工作。
1. ps:瞬时监测
ps 是 Linux 系统中一个非常基础且强大的命令行工具,全称为 Process Status,用于显示当前系统中运行的进程信息。这个命令能够提供进程的快照视图,即展示在执行 ps 命令那一刻的系统进程状态
In [9]:
代码语言:javascript复制!
代码语言:javascript复制ps
代码语言:javascript复制 PID TTY TIME CMD
81 pts/0 00:00:00 sh
82 pts/0 00:00:00 ps
进程树
In [10]:
代码语言:javascript复制!
代码语言:javascript复制ps -ef
代码语言:javascript复制
代码语言:javascript复制UID PID PPID C STIME TTY TIME CMD
mw 1 0 0 11:49 ? 00:00:00 /opt/conda/bin/python /opt/c
mw 7 1 0 11:49 ? 00:00:00 gotty --port 8894 --index /e
mw 47 1 0 11:49 ? 00:00:00 ttyd -p 8896 -W bash
mw 55 1 0 11:50 ? 00:00:00 /opt/conda/bin/python -m ipy
mw 83 55 0 12:12 pts/0 00:00:00 /bin/sh -c ps -ef
mw 84 83 0 12:12 pts/0 00:00:00 ps -ef
-e 表示列出所有进程,-f 以全格式显示,包括PID、父PID、用户、CPU和内存使用情况、启动时间、命令行等。
下面是每一列的含义:
UID (User ID): 进程所属用户的用户ID。在这个例子中,所有进程都属于用户mw。
PID (Process ID): 进程的唯一标识符。每个运行的进程在系统中都有一个唯一的PID,如1、7、47等。
PPID (Parent Process ID): 创建当前进程的父进程的PID。例如,PID为7的进程是由PID为1的进程创建的。
C: 进程的nice值,表示进程的优先级。数值越低,优先级越高。默认为0,负值表示优先级高于普通进程,正值则相反。此处均为0,意味着都是标准优先级。
STIME (Start Time): 进程启动的时间。格式通常为HH:MM,如11:49表示上午11点49分启动。 TTY: 进程启动时所关联的终端设备。?表示该进程没有直接与终端关联,通常是后台进程或守护进程。pts/0表明进程在伪终端上运行,与用户交互。
TIME: 进程至今为止累计的CPU时间。格式如00:00:00,表示小时:分钟:秒。
CMD: 启动进程的命令行,展示了进程的实际执行命令及其参数。例如,/opt/conda/bin/python /opt/c 表示使用Python执行某个脚本。
按CPU使用率排序
In [3]:
代码语言:javascript复制!
代码语言:javascript复制ps -aux --sort -pcpu
代码语言:javascript复制
代码语言:javascript复制USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
mw 1 0.0 0.6 348720 54428 ? Ssl 11:49 0:00 /opt/conda/bi
mw 7 0.0 0.0 187212 6152 ? Sl 11:49 0:00 gotty --port
mw 47 0.0 0.2 18004 17484 ? S 11:49 0:00 ttyd -p 8896
mw 55 0.0 0.6 577492 48644 ? Ssl 11:50 0:00 /opt/conda/bi
mw 73 0.0 0.0 4580 932 pts/0 Ss 12:10 0:00 /bin/sh -c ps
mw 74 0.0 0.0 37904 3380 pts/0 R 12:10 0:00 ps -aux --sor
按内存使用排序:
In [5]:
代码语言:javascript复制!
代码语言:javascript复制ps -aux --sort -pmem
代码语言:javascript复制
代码语言:javascript复制USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
mw 1 0.0 0.6 348720 54428 ? Ssl 11:49 0:00 /opt/conda/bi
mw 55 0.0 0.6 577900 48892 ? Ssl 11:50 0:00 /opt/conda/bi
mw 47 0.0 0.2 18004 17484 ? S 11:49 0:00 ttyd -p 8896
mw 7 0.0 0.0 187212 6152 ? Sl 11:49 0:00 gotty --port
mw 76 0.0 0.0 37904 3372 pts/0 R 12:11 0:00 ps -aux --sor
mw 75 0.0 0.0 4580 876 pts/0 Ss 12:11 0:00 /bin/sh -c ps
查看指定进程的详细信息
In [7]:
代码语言:javascript复制!
代码语言:javascript复制ps -p 55 -o pid,ppid,user,%cpu,%mem,cmd
代码语言:javascript复制
代码语言:javascript复制 PID PPID USER %CPU %MEM CMD
55 1 mw 0.0 0.6 /opt/conda/bin/python -m ipykernel_launcher -
2. top - 动态系统监视器
top命令提供了一个实时的视图,展示系统中各个进程的资源占用情况,如CPU使用率、内存使用量等,是监控系统性能的强大工具
top 支持多种命令行选项来自定义启动时的行为,如 -d <秒> 可以设定刷新间隔时间,-b 用于批处理模式(非交互,输出到文件或管道),-n <次数> 则可以指定 top 命令运行的循环次数后自动退出
In [11]:
代码语言:javascript复制!
代码语言:javascript复制top
代码语言:javascript复制=top - 12:14:44 up 24 min, 0 users, load average: 0.00, 0.01, 0.01
Tasks: 6 total, 1 running, 5 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.5 us, 0.4 sy, 0.0 ni, 98.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 7864320 total, 7764420 free, 95492 used, 4408 buff/cache
KiB Swap: 7864320 total, 7864320 free, 0 used. 7682144 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND
1 mw 20 0 348720 54428 13844 S 0.0 0.7 0:00.72 jupyter-
7 mw 20 0 187212 6152 4976 S 0.0 0.1 0:00.00 gotty
47 mw 20 0 18004 17484 948 S 0.0 0.2 0:00.00 ttyd
55 mw 20 0 577900 48936 13412 S 0.0 0.6 0:00.52 python
85 mw 20 0 4580 840 680 S 0.0 0.0 0:00.09 sh
86 mw 20 0 40168 3576 3068 R 0.0 0.0 0:00.00 top top - 12:14:47 up 24 min, 0 users, load average: 0.00, 0.01, 0.01
Tasks: 6 total, 1 running, 5 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.9 us, 0.3 sy, 0.0 ni, 98.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 7864320 total, 7764896 free, 95012 used, 4412 buff/cache
KiB Swap: 7864320 total, 7864320 free, 0 used. 7682622 avail Mem
55 mw 20 0 577900 48936 13412 S 1.0 0.6 0:00.55 python
1 mw 20 0 348720 54428 13844 S 0.0 0.7 0:00.72 jupyter-
7 mw 20 0 187212 6152 4976 S 0.0 0.1 0:00.00 gotty
47 mw 20 0 18004 17484 948 S 0.0 0.2 0:00.00 ttyd
86 mw 20 0 40136 3596 3068 R 0.0 0.0 0:00.00 top top - 12:14:50 up 24 min, 0 users, load average: 0.00, 0.01, 0.01
%Cpu(s): 0.9 us, 0.2 sy, 0.0 ni, 98.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 7864320 total, 7764636 free, 95272 used, 4412 buff/cache
KiB Swap: 7864320 total, 7864320 free, 0 used. 7682362 avail Mem
55 mw 20 0 577900 48936 13412 S 1.0 0.6 0:00.58 python
top - 12:14:53 up 24 min, 0 users, load average: 0.00, 0.01, 0.01
%Cpu(s): 1.2 us, 0.4 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 7864320 total, 7764868 free, 95040 used, 4412 buff/cache
KiB Swap: 7864320 total, 7864320 free, 0 used. 7682594 avail Mem
55 mw 20 0 577900 48936 13412 S 1.0 0.6 0:00.61 python
>
直接在终端输入top即可启动程序,以下是快捷方式 P:按CPU使用率排序进程。 M:按内存使用量排序进程。 h:显示帮助信息。 k:发送信号给进程,通常是用于结束进程。 r:改变进程的优先级。 q:退出 top。
3. kill - 终止进程
功能介绍:当你需要停止某个不响应或不再需要的进程时,kill命令就派上用场了。它通过发送特定信号给进程来结束其执行。
基本用法:
结束进程(通过PID):kill [信号] [PID] 常用信号:SIGTERM(默认,15) 用于正常终止,SIGKILL(9) 强制终止
In [ ]:
代码语言:javascript复制# 正常尝试结束进程
代码语言:javascript复制
代码语言:javascript复制kill 55
代码语言:javascript复制# 如果进程没有响应,强制结束
代码语言:javascript复制
代码语言:javascript复制kill -9 55
代码语言:javascript复制
上面的指令就不运行了,免得杀错进程把jupyter搞崩溃了
4. df - 磁盘空间统计
功能介绍:df命令用来显示文件系统的总空间、已用空间、可用空间及挂载点信息,帮助你管理磁盘空间。
基本用法:
查看所有挂载的文件系统空间使用情况:df -h
In [12]:
代码语言:javascript复制!
df -h
代码语言:javascript复制
代码语言:javascript复制 57G 12K 57G 1% /run/secrets/kubernetes.io/serviceaccount
5. du - 文件和目录磁盘使用情况
功能介绍:与df不同,du命令主要用于查看指定文件或目录所占的磁盘空间大小,特别适合查找占用大量空间的源头。
基本用法:
查看当前目录下各文件及子目录的磁盘使用情况:du -sh * 查看指定目录的总磁盘使用量:du -sh [目录名]评论
In [18]:
代码语言:javascript复制!du -sh /home/mw/project
代码语言:javascript复制0 /home/mw/project
小结
通过熟练运用这五个命令,你可以更加高效地监控和管理你的Linux系统,确保其稳定运行并有效利用资源