1 系统资源
存储资源:硬盘
计算资源:CPU和内存的使用率,CPU是以时间轮回形式执行程序
2 系统资源管理命令
1) du 查看文件/目录占磁盘空间的大小
du -sh ./ // 查看当前目录占磁盘空间的大小
注意:ll -h 查看的是文件的大小
2)df 查看磁盘分区使用率
df -h //显示分区的使用率,-h 显示单位
df -hT //显示分区使用率同时显示文件系统类型
df -i //显示分区的i节点使用情况
3)free 查看内存及交换空间使用情况
free -m //以M为单位显示内存使用情况
free -g //以G为单位显示内存使用情况
注:i)共享内存(shared):用于进程间通信(IPC)。一个进程将数据放入共享内存,另外一个进程可以从共享内存中提取数据,进而完成两个进程间的通信,共享内存是实际内存空间中开辟的一块区域。
ii)buff/cache:buff,缓存区,用于缓存文件。cache ,存放进缓存区的被缓存文件。
3 进程与线程
1)多用户是指多个用户在同一时间使用计算机系统;多任务指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。
2)程序在内存中以进程形式被CPU执行,是系统资源管理的最小单位;进程下的每个功能都通过相应的线程实现,是程序执行的最小单位。CPU每执行一次程序,将会发生一次上下文切换。进程和线程均会占用CPU和内存。在系统层面只能更改进程,不能更改线程,想要更改线程需要编写进程代码。
3)Linux下的进程:为了标识每个进程,我们给进程赋予一个编号,这个编号被称为进程的ID号,即PID号。Linux系统内最高进程为PID=1的进程systemd,该进程通过prefork(预派生)的方式派生出系统其它进程。
派生出其它进程的进程称为父进程,被派生的进程称为该父进程的子进程。一个进程的子进程还在工作,父进程意外退出,该子进程被称为孤儿进程,孤儿进程会被PID=1的systemd进程接管。一个进程的子进程已经停止工作,但该子进程占用的系统资源(CPU、内存、进程名以及ID号)不被释放,该进程被称为僵尸进程(zombie)。
4)进程周期及状态
4 ps 查看系统进程状况
ps -elf //侧重于查看父进程于子进程之间的关系
输出结果:
F(flag)标记 1代表进程交叉,但没有执行调用 4代表用户权限
S 进程状态,有没有Z(僵尸进程)的状态 PID 执行此进程的PID
PPID 此进程的父进程 C 进程CPU的使用率,为整数
ps aux //侧重于查看每个进程占用CPU和内存的状态
输出结果:
STAT 进程的状态(R运行状态 S休眠状态 Z僵尸进程 W没有足够的内存页可分配 s进程的管理者,一般表示其下有子进程 )
%CPU 进程的CPU使用率 %MEM 进程的内存使用率
TTY 进程在哪个终端执行 TIME进程使用的总CPU时间
VSZ(virtual size) 进程所使用的虚拟内存大小
例1:ps aux | sort -rn -k4 | head -5|awk ‘{print $4,$11}’
//查看系统占用内存的最高TOP5进程
例2:ps aus | sort -rn -k3 | sed ‘/%CPU/d’ | head -5 | awk ‘{print $3,$11}’
//查看系统占用CPU最高的TOP5进程
5 pstree
pstree以树形结构显示进程间的关系
没有这个命令就用yum安装: yum install psmisk -y
pstree -p //显示进程且在进程旁显示PID
pstree -u 用户名 //在进程名旁显示进程所属的用户名
1)查看根分区的使用率;
#df -h
查看可用内存的大小;
#free -m
2)查看占用内存最高的前5个进程;
ps -aux | sort -k4nr | head 5
3)查看占用CPU最高的前5个系统进程;
ps -aux | sort -k3nr | head 5
4)查看系统是否存在僵尸进程,如果存在要显示僵尸进程PID:ps aux | awk ‘$8~/Z/’
6 top 实时刷新当前系统的情况
id CPU空闲率 wa有哪些进程等待CPU处理
hi(hard interrupt)硬中断,硬件发出的中断信号,如网卡
si(soft interrupt)软中断,软件发出的中断信号
内置命令:
q退出top space立即刷新 设置刷新时间(秒)
h帮助 k杀掉一个进程 r重新定义一个进程的优先级
例如:
top -n1 //显示一次运行的结果之后自动退出
top -k //杀死一个进程,然后输入PID号,然后输入需要发送的信号,15就是让进程自己关闭,9就是强制关闭
7 lsof 查看进程打开的文件或目录
lsof -i 协议:端口号 //查看端口的状态
例如: lsof -i TCP:22
lsof 文件名/目录名 //查看文件/目录被哪个进程占用
例如: lsof /mnt/cdrom //查看这个目录被哪个进程占用
lsof -u 用户名 //查看某个用户打开的文件
例如:lsof -u root //查看root打开的文件
lsof -p 进程PID 或lsof -c 进程名 //查看某个进程打开的文件
8 uptime
显示系统运行时间及1分钟、5分钟、15分钟的平均负载
这个命令和w命令的结果一样
9 kill
kill向某个进程发送信号,用以控制进程
格式: kill 信号名/代码 进程的PID
常用信号:
SIGHUP 1 用于停止或重新加载程序,文档中有要求的时候用
SIGINT 2 相当于Ctrl+C,用于终止程序和命令
SIGQUIT 3 类似于SIGINT
SIGKILL 9 强制退出
SIGTERM 15 要求程序自己退出
SIGCONT 18 继续执行程序
SIGSTOP 19 暂停执行
SIGSTP 20 停止运行程序
例1:kill -9 PID //强制进程退出
例2:kill -l //查看有多少个信号
10 killall5 控制所有同名程序
例如:killall5 -9 bash //退出当前系统所有终端的登录(包含自己)
11 进程调度
1)程序/命令放入后台运行: 程序/命令 &
例如: ping 127.0.0.1 &
//该命令的输出结果在前台显示,不想让其显示输出结果则用重定向 > /dev/null
2)后台命令放回前台执行: fg 后台命令编号 //查看后台运行命令 jobs
例如: fg 1
3)前台命令放后台挂起(暂停): Ctrl+z
4) 让后台挂起的程序/命令继续执行: bg 后台命令编号
例如:bg 程序/命令 //直接将程序放入后台运行,类似&
5)强制退出后台命令/程序: kill %后台命令编号
例如: kill %1
6)nohup 有些程序在终端登出后即停止运行,如果想要用户退出终端的同时,用户运行的命令依然执行,可以使用nohup
例:
a) ping 127.0.0.1 &
b) 退出终端,重新登录后,jobs发现无后台运行命令
c) nohup ping 127.0.0.1 &
d) 退出终端,重新登陆后,tail -f ./nohup.out文件。可见ping 127.0.0.1 命令的输出结果。这表示该命令并未随着用户登出终端而停止运行。
12 修改进程优先级
进程的优先级从-20到正19,其中-20优先级最高,+19最低。
1) nice // 运行程序时设置程序的优先级
例: nice --20 ping 127.0.0.1 & //使用ps -elf | grep ping 可见刚才命令的优先级为-20
nice -19 ping 127.0.0.1 & //使用ps -elf | grep ping 可见刚才命令的优先级为正19,其中第一个“-”不是减号
2) renice 优先级 程序的PID
例:renice 19 24828 //将程序PID为24828的程序优先级设置为正19
转载请注明出处,谢谢!