Linux.019 系统资源管理——du/df/free/ps/pstree/top/lsof/uptime/kill/renice

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


转载请注明出处,谢谢!

猜你喜欢

转载自blog.csdn.net/qq_35550345/article/details/87913168