上篇关于进程管理命令使用说明尚未完结,本篇将继续介绍相关命令以及计划任务管理。
目录
vmstat命令,是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息。
[root@localhost ~]# vmstat [-a] [刷新延时 刷新次数]
[root@localhost ~]# vmstat -a 1 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
1 0 0 835504 295456 389152 0 0 27 4 49 78 0 1 99 0 0
0 0 0 835512 295456 389224 0 0 0 1 73 112 0 0 100 0 0
0 0 0 835512 295456 389224 0 0 0 0 57 93 0 0 100 0 0
字段含义:?
procs进程信息字段: -r:等待运行的进程数,数量越大,系统越繁忙;?-b:不可被唤醒的进程数量,数量越大,系统越繁忙。
memory内存信息字段: -swpd:虚拟内存的使用情况,单位为 KB。 -free:空闲的内存容量,单位为 KB。-buff:缓冲的内存容量,单位为 KB。-cache:缓存的内存容量,单位为 KB。
swap交换分区信息字段: -si:从磁盘中交换到内存中数据的数量,单位为 KB; -so:从内存中交换到磁盘中数据的数量,单位为 KB。这两个数越大,表明数据需要经常在磁盘和内存之间进行交换,系统性能越差。
io磁盘读/写信息字段: -bi:从块设备中读入的数据的总量,单位是块; -bo:写到块设备的数据的总量,单位是块。这两个数越大,代表系统的 I/O 越繁忙。
system系统信息字段: -in:每秒被中断的进程次数; -cs:每秒进行的事件切换次数;这两个数越大,代表系统与接口设备的通信越繁忙。
cpu信息字段: -us:非内核进程消耗 CPU 运算时间的百分比;-sy:内核进程消耗CPU运算时间的百分比;-id:空闲 CPU 的百分比;-wa:等待I/O所消耗的CPU 百分比;-st:被虚拟机所盗用的CPU百分比。
查看进程占用,内存的详细信息
free -h #人性化显示
free -m #以m为单位查看
Q:内存占用过多怎么办??
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 481M 986M 12M 351M 1.2G
Swap: 4.0G 0B 4.0G
[root@localhost ~]# echo 3 > /proc/sys/vm/drop_caches #清除缓存
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 465M 1.2G 12M 134M 1.2G
Swap: 4.0G 0B 4.0G
不过这个方法只能临时缓解,最根本的还是增加硬件配置。?
iostat 可以提供更丰富的IO性能状态数据,此工具由sysstat包提供。
常用选项:
监视磁盘I/O;网络宽带。两个命令均要下载安装;如果iftop无法yum安装,需要安装epel源:yum install?-y epel-release.noarch
[root@localhost ~]# yum install?-y epel-release.noarch
[root@localhost ~]# yum install -y iftop
[root@localhost ~]# iftop -ni ens33 #网络流量
系统运行了多长时间
[root@localhost ~]# uptime
14:22:15 up 35 min, 1 user, load average: 0.02, 0.02, 0.05
#当前时间 运行时间 登录用户
显示CPU相关统计
[root@localhost ~]# mpstat
Linux 3.10.0-1160.el7.x86_64 (localhost.localdomain) 2024年01月04日 _x86_64_ (2 CPU)
14时23分41秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
14时23分41秒 all 1.39 0.00 0.96 0.06 0.00 0.02 0.00 0.00 0.00 97.58
#当前时间 用户空间 ni优先级 系统内核 盗取时间
系统空闲
[root@localhost ~]# mpstat 1 3
#1秒 一次 看3次
系统资源统计,需要安装
[root@localhost ~]# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
1 1 97 0 0 0| 216k 280k| 0 0 | 0 0 | 182 265
2 37 52 9 0 1|1408k 832k| 60B 818B| 0 0 |4676 5283
2 37 51 10 0 1|1284k 0 | 60B 354B| 0 0 |4644 5300
2 38 50 9 0 1|1184k 0 | 60B 346B| 0 0 |4562 5051 ^C
基于web界面的系统管理工具,可以通过浏览器远程管理linux;安装包获取:
链接:https://pan.baidu.com/s/1RFfkLKlLHeTSUK9wD3EKOw?
提取码:vu8r?
yum install webmin-2.100-1.noarch.rpm -y
rpm -q webmin
systemctl start webmin
systemctl status webmin
https://虚拟机ip:10000/
root
自己系统的密码
?
资源 | 命令 |
cpu | top,w |
内存 | top,free |
硬盘剩余 | df |
硬盘读写性能 | iostat |
网络带宽 | iftop |
[root@localhost ~]# sleep 8000 & #&表示放入后台
[1] 2156
[root@localhost ~]# jobs
[1]+ 运行中 sleep 8000 &
[root@localhost ~]# fg 1
sleep 8000
^Z #ctrl z
[1]+ 已停止 sleep 8000
[root@localhost ~]# bg 1
[1]+ sleep 8000 &
案例:查看192.168.190段哪些设备在线
[root@localhost ~]# vim ping.sh
#!/bin/bash
#name=ping
for i in {1..254}
do
{
ping -c1 -w2 192.168.190.${i} &> /dev/null && echo "192.168.190."$i" up" >> /data/up || echo "192.168.190."$i" down" >> /data/down
} &
done
#for循环,变量i取值1到254.向192.168.1.1~254各ping一个包,超时两秒,不论什么结果输出到垃圾箱;如果ping通将内容追加/data/up文件中;如果ping不通将内容追加/data/down文件中;整个过程后台运行。
kill从字面来看,就是用来杀死进程的命令,但事实上,kill命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。
kill [信号] PID
kill 命令是按照 PID 来确定进程的,所以 kill 命令只能识别 PID,而不能识别进程名。
信号编号 | 信号名 | 含义 |
0 | EXIT | 程序退出时收到该信息 |
1 | HUP | 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化 |
2 | INT | 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号 |
3 | QUIT | 退出 |
9 | KILL | 杀死进程,即强制结束进程 |
11 | SEGV | 段错误 |
15 | TERM | 正常结束进程,是 kill 命令的默认信号 |
注:可以使用 kill -l 命令查看所有信号及其编号?
killall 也是用于关闭进程的一个命令,但和 kill 不同的是,killall 命令不再依靠 PID 来杀死单个进程,而是通过程序的进程名来杀死一类进程,也正是由于这一点,该命令常与 ps、pstree 等命令配合使用。
killall [选项] [信号] 进程名
当作于管理进程时,pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程。不过plkill针对单个对象,killall可针对多个对象。该命令的基本格式如下:
pkill [-t 终端号] 进程名
[root@localhost ~]# w #查询本机已经登录的用户
16:52:50 up 1:51, 2 users, load average: 0.01, 0.13, 0.12
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.190.1 15:02 2.00s 0.76s 0.02s w
root pts/1 192.168.190.1 16:52 3.00s 0.06s 0.06s -bash
[root@localhost ~]# pkill -9 -t pts/1
[root@localhost ~]# w #强制杀死从pts/1虚拟终端登陆的进程
16:53:19 up 1:51, 1 user, load average: 0.01, 0.11, 0.11
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.190.1 15:02 7.00s 0.76s 0.01s w
一次性的计划任务
at [选项] [时间]
[root@localhost ~]# date
2024年 01月 04日 星期四 16:18:44 CST
[root@localhost ~]# at 16:20 #创建计划
at> touch /data/a<EOT> #计划内容,ctrl d提交
job 2 at Thu Jan 4 16:20:00 2024
[root@localhost ~]# atq #查看任务列表
2 Thu Jan 4 16:20:00 2024 a root
[root@localhost ~]# date
2024年 01月 04日 星期四 16:20:10 CST
[root@localhost ~]# ls /data
a
[root@localhost ~]# atrm 任务序列号 #删除任务
周期性的计划任务
crontab -e
#进入 crontab 编辑界面。会打开Vim编辑你的任务
* * * * * 执行的任务,命令需要写绝对路径
如果不想写绝对路径需要在开头加上:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
选项 | 功能 |
---|---|
-u user | 用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo 用户的 crontab 服务,此选项一般有 root 用户来运行。 |
-e | 编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。 |
-l | 显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。 |
-r | 从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。 |
-i | 在删除用户的 crontab 文件时,给确认提示。 |
[root@localhost ~]# cat /etc/crontab #查看crontab配置文件
项目 | 含义 | 范围 |
---|---|---|
第一个"*" | 一小时当中的第几分钟(minute) | 0~59 |
第二个"*" | 一天当中的第几小时(hour) | 0~23 |
第三个"*" | 一个月当中的第几天(day) | 1~31 |
第四个"*" | 一年当中的第几个月(month) | 1~12 |
第五个"*" | 一周当中的星期几(week) | 0~7(0和7都代表星期日) |
每月的1号15号30号——?* * ? 1,15,30 ?* ?*
中午12点-16点 —— * ?12-16/2 ?* ?* ?*
每半小时执行一次—— 30 ?* ? *? *? *
特殊符号 | 含义 |
---|---|
*(星号) | 代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。 |
,(逗号) | 代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。 |
-(中杠) | 代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。 |
/(正斜线) | 代表每隔多久执行一次。比如"*/10命令",代表每隔 10 分钟就执行一次命令。 |
crontab -e 进入编辑器删除内容,类似于vim编辑器,编辑保存退出
crontab -r 删除计划任务