Linux进程管理和计划任务

发布时间:2024年01月04日

前言

上篇关于进程管理命令使用说明尚未完结,本篇将继续介绍相关命令以及计划任务管理。

目录

前言

一、控制进程

1.?vmstat

2.?free

3.?iostat

4. iotop/iftop

5.?uptime

6.?mpstat

7. dstat

8.?webadin

9. 服务器五大性能???

二、进程管理

1. 手动启动

1.1 将命令放入后台执行

1.2 查看后台任务列表

1.3 调出后台任务

1.4 继续任务

1.5 并行执行任务?

2. 结束进程

2.1 kill

2.2 killall

2.3 pkill

三、计划任务

1. at

1.1 概述示例

?1.2 黑白名单

2.?crontab

2.1 概述选项

2.2 项目含义

2.3 示例

2.4 删除计划任务?

2.5 注意事项?


一、控制进程

1.?vmstat

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百分比。

2.?free

查看进程占用,内存的详细信息

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

不过这个方法只能临时缓解,最根本的还是增加硬件配置。?

3.?iostat

iostat 可以提供更丰富的IO性能状态数据,此工具由sysstat包提供。

常用选项:

  • -c 只显示CPU行
  • -d 显示设备〈磁盘)使用状态
  • -k 以千字节为为单位显示输出
  • -t 在输出中包括时间戳
  • -x 在输出中包括扩展的磁盘指标

4. iotop/iftop

监视磁盘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                     #网络流量

5.?uptime

系统运行了多长时间

[root@localhost ~]# uptime
 14:22:15 up 35 min,  1 user,  load average: 0.02, 0.02, 0.05
 #当前时间   运行时间  登录用户          

6.?mpstat

显示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次

7. dstat

系统资源统计,需要安装

[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

8.?webadin

基于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  
自己系统的密码

?

9. 服务器五大性能???

资源命令
cputop,w
内存top,free
硬盘剩余df
硬盘读写性能iostat
网络带宽iftop

二、进程管理

1. 手动启动

  • 前台启动:通过终端启动,且启动后一直占据终端
  • 后台启动:可通过终端启动,但启动后即转入后台运行(释放终端),后台执行可以并行执行

1.1 将命令放入后台执行

[root@localhost ~]# sleep 8000 &    #&表示放入后台
[1] 2156

1.2 查看后台任务列表

[root@localhost ~]# jobs
[1]+  运行中               sleep 8000 &

1.3 调出后台任务

[root@localhost ~]# fg 1
sleep 8000
^Z                                        #ctrl z
[1]+  已停止               sleep 8000

1.4 继续任务

[root@localhost ~]# bg 1
[1]+ sleep 8000 &

1.5 并行执行任务?

案例:查看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文件中;整个过程后台运行。

2. 结束进程

2.1 kill

kill从字面来看,就是用来杀死进程的命令,但事实上,kill命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。

kill [信号] PID 
kill 命令是按照 PID 来确定进程的,所以 kill 命令只能识别 PID,而不能识别进程名。
信号编号信号名含义
0EXIT程序退出时收到该信息
1HUP挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化
2INT表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号
3QUIT退出
9KILL杀死进程,即强制结束进程
11SEGV段错误
15TERM正常结束进程,是 kill 命令的默认信号

注:可以使用 kill -l 命令查看所有信号及其编号?

2.2 killall

killall 也是用于关闭进程的一个命令,但和 kill 不同的是,killall 命令不再依靠 PID 来杀死单个进程,而是通过程序的进程名来杀死一类进程,也正是由于这一点,该命令常与 ps、pstree 等命令配合使用。

killall [选项] [信号] 进程名
  • -i:交互式,询问是否要杀死某个进程;
  • -I:忽略进程名的大小写; ?

2.3 pkill

当作于管理进程时,pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程。不过plkill针对单个对象,killall可针对多个对象。该命令的基本格式如下:

 pkill [-t 终端号] 进程名
  • -u uid: effective user,生效者,根据进程所在的终端终止相应进程
  • -U uid: real user,真正发起运行命令者,根据进程所属的用户名终止相应进程
  • -t terminal: 与指定终端相关的进程
  • -l: 显示进程名(pgrep可用)
  • -a: 显示完整格式的进程名(pgrep可用)
  • -P pid: 显示指定进程的子进程
[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

三、计划任务

1. at

1.1 概述示例

一次性的计划任务

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  任务序列号      #删除任务

?1.2 黑白名单

  • 如果系统中有 /etc/at.allow 文件,那么只有写入 /etc/at.allow 文件(白名单)中的用户可以使用 at 命令,其他用户不能使用 at 命令(注意,/etc/at.allow 文件的优先级更高,也就是说,如果同一个用户既写入 /etc/at.allow 文件,又写入 /etc/at.deny 文件,那么这个用户是可以使用 at 命令的)。
  • 如果系统中没有 /etc/at.allow 文件,只有 /etc/at.deny 文件,那么写入 /etc/at.deny 文件(黑名单)中的用户不能使用 at 命令,其他用户可以使用 at 命令。不过这个文件对 root 用户不生效。
  • 如果系统中这两个文件都不存在,那么只有 root 用户可以使用 at 命令。

2.?crontab

2.1 概述选项

周期性的计划任务

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 文件时,给确认提示。

2.2 项目含义

[root@localhost ~]# cat /etc/crontab   #查看crontab配置文件
项目含义范围
第一个"*"一小时当中的第几分钟(minute)0~59
第二个"*"一天当中的第几小时(hour)0~23
第三个"*"一个月当中的第几天(day)1~31
第四个"*"一年当中的第几个月(month)1~12
第五个"*"一周当中的星期几(week)0~7(0和7都代表星期日)

2.3 示例

每月的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 分钟就执行一次命令。

2.4 删除计划任务?

crontab -e 进入编辑器删除内容,类似于vim编辑器,编辑保存退出

crontab -r 删除计划任务

2.5 注意事项?

  • 5个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间
  • 在定义时间时,日期和星期最好不要在一条定时任务中出现,存在矛盾
  • */30 * * * * /usr/bin/touch /data/? ?`date +\%F`,这里存在语法错误,%前面需要加转义符
文章来源:https://blog.csdn.net/qq_64612585/article/details/135380532
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。