导读:对于 Linux 系统使用者来说,进程管理和硬件信息查看是日常操作中不可或缺的技能。你是否知道如何高效地查看 Linux 系统中的进程,并准确判断其状态?又该如何正确关闭进程以避免资源浪费和系统问题?本文将深入探讨 2.17 进程管理的相关知识,从 ps、pstree 等指令的使用,到 kill、pkill 等关闭进程的方法,还会详细介绍查看 CPU、内存、硬盘等硬件信息的实用指令。无论你是 Linux 新手还是有一定经验的用户,都能从本文中获取到有价值的内容,提升你的系统管理能力。
## 操作系统都有进程的概念,windows在任务管理器中查看,linux用ps指令来查看。#查看进程
ps
参数1:ps -ef
# pid:全称process id,是进程编号,每次启动某个程序,它的编号可能都不一样,这个是程序启动之后系统随机分配的。
# uid:全称user id,是进程所属用户,也就是哪个用户启动的,我们可以切换个用户执行一下sleep 60,就可以看到效果
# CMD中看到[]括起来的,表示这些都是系统级别的进程,比如一些硬件驱动程序之类的,这些都不要动。不带[]的都是用户级别的。
# ppid:全称parent process id,父进程,记录的是某个进程是由哪个进程创建出来的。可以通过pstree工具来查看从属关系。
# C:这个不用管。
# STIME:全称start time,进程的启动时间。
# TTY: 用来显示哪些是本地启动的,哪些是远程终端连接上来启动的。通过w指令可以看到哪些终端登录着主机。只要登录成功一个终端,那就多一个终端。
# TIME:这个没啥用
# CMD:这个进程执行了什么指令
## 安装一个pstree
# 注意:我们安装的软件的名字和使用的时候的指令名称不一定是一样的,比如lrzsz,使用的时候是rz\sz上传下载。
# 想查看我们想要使用的某个指令,是哪个软件包提供的,可以输入yum provides 指令名称,比如yum provides pstree
[root@localhost ~]# yum provides pstree
[root@localhost ~]# yum install psmisc -y
[root@localhost ~]# pstree
# 可以看到,系统的第一个进程是systemd,由他创建起来了好多其他的进程,可以看到从属关系:
systemd─┬─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─VGAuthService
├─abrt-watch-log
├─abrtd
├─agetty
├─auditd───{auditd}
├─chronyd
├─crond
├─dbus-daemon───{dbus-daemon}
├─master─┬─pickup
│ └─qmgr
├─polkitd───6*[{polkitd}]
├─rsyslogd───2*[{rsyslogd}]
├─sshd─┬─sshd───bash───pstree
│ └─sshd───bash
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─tuned───4*[{tuned}]
└─vmtoolsd───{vmtoolsd}
#关闭进程
kill pid号
例子1: kill 7851 #使用进程id号,来终止进程
kill -9 pid号 #慎用!!!
#批量关闭进程,pkill全称program kill
pkill CMD命令名称
例子1: pkill sleep #使用进程的命令名称,来终止进程,会中止所有CMD执行着sleep的进程的。
pkill -9 sleep
# kill -9,这个强大和危险的命令迫使进程在运行时突然终止,进程在结束后不能自我清理。危害是导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。
# 如果想把某个远程连接踢下线,可以杀掉显示pts的远程连接进程的父进程,如下图
#查看cpu
lscpu#查看内存命令
free -h#查看硬盘命令
df -h #h表示人类可读
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.5M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 100G 2.2G 98G 3% /
tmpfs 199M 0 199M 0% /run/user/0# 含有tmp的表示是内存给硬盘的空间,默认会给1半内存空间,把内存当作硬盘使用,这个我们不用管。
# 查看计算机的cpu,内存,进程等信息(和windows的任务管理器很像)
top
top - 08:34:27 up 20 min, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 89 total, 2 running, 87 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0
st
KiB Mem : 2027872 total, 1779000 free, 135668 used, 113204 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 1755332 avail Mem
# 下面是进程信息,值得看的是每个进程占用的%CPU %MEM,CPU使用率和内存使用率
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 128556 7132 4144 S 0.0 0.4 0:01.27 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
# 08:34:27 up 20 min:表示08:34:27是系统当前时间,开机了20分钟,如果看到3:20,表示开了3小时20分钟,看到10 days表示10天了,linux很稳定耐用,开机好多年都稳定运行着,不会卡顿。
# 1 user :表示当前只有一个用户在使用
# load average: 0.00, 0.01, 0.05:平均负荷,指的是CPU的负载高不高,CPU负载高,那么平均负荷就比较大,如果这几个值很大的时候,服务器会变得很卡。如果发现服务器卡了,就是异常情况,就可以看看这个数据。这三个值表示:1分钟、5分钟、15分钟的负载情况,load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
# Tasks: 89 total, 2 running, 87 sleeping, 0 stopped, 0 zombie:表示进程数量,总共89个,2个正在运行,87个在睡眠状态,当我们的CPU是1核的时候,是在所有进程之间来回切换执行,所以只有一个或者切换速度很快的时候显示2个。 0 stopped表示停止的进程,但是这里一般都是0,以为进程结束之后会自动从内存中释放。0 zombie表示僵尸进程数量,僵尸进程是杀不死的,就是由于各种原因,系统无法自动释放的进程,僵尸进程也消耗系统资源,一般kill掉它的父进程可以杀掉僵尸进程,或者kill -来杀掉。但是kill -9要慎用!!!它也容易产生僵尸进程,kill会将进程运行中的信息保存下来,进程不会出问题,kill -9不会保存,强制结束进程的运行,容易出现僵尸进程。
# 按数字1,可以查看cpu数量
# %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0
## st,关于CPU我们其他参数不用看,就看这个100.0 id,id是idle的简写,表示100%空闲,因为我们现在
## CPU使用率很低,所以显示了100%空闲。我们只关注这个参数即可,看一下CPU忙不忙就行。
# KiB Mem : 2027872 total, 1779000 free, 135668 used, 113204 buff/cache,是内存(英文:memroy)的描述信息,total表示总内存量,free表示可用剩余量,userd表示已经使用的量,buff/cache表示用作缓存,是和磁盘进行读写时的缓存区域,这个参数不用管。
# KiB Swap: 0 total, 0 free, 0 used. 1755332 avail Mem :
## Swap表示虚拟内存,这是硬盘分配给内存的一部分空间,为了当内存不足时,临时将硬盘当作内存使用。这个数值是可以自行调整的。一般自动就分配好了,所以我们不用管,实在是内存不够用的时候再加大这个虚拟内存。我现在看的是虚拟机上的虚拟内存,虚拟机不设置虚拟内存,所以显示为0。swap虚拟内存在windows也内看到:
