目录
6.RES ( resident memory usage )
1.按照预先设置的时间周期(分钟、小时、天...... )重复执行用户指定的命令操作2.属于周期性计划任务3.主要设置文件
一、top命令
查看进程动态信息
显示了系统任务(Tasks) 、CPU占用、内存占用(Mem) 、交换空间(Swap) 等汇总信息,汇总信息依次显示当前进程的情况。
1.up time
当前时间
up days 系统运行时间,说明此服务器连续运行多少天
2.user
当前登录用户数
load average
系统负载, 即任务队列的平均长度。三个数值分别为1分钟、5分钟、15分钟前到现在的平均值。
3.系统任务(Tasks) 信息
total,总进程数: running,正在运行的进程数; sleeping,休眠的进程数;stopped,中止的进程数;zombie,僵死无响应的进程数。
4.CPU占用信息
us,用户占用: sy,内核占用: ni,优先级调度占用; id,空闲CPU; wa,I/O,等待占用: hi,硬件中断占用: si,软件中断占用: st,虚拟化占用。要了解空闲的CPU百分比,主要看%id部分。
5.内存占用(Mem) 信息
total,总内存空间; free,空闲内存: used,已用内存: buff/cache,物理内存和交换内存的缓冲区总和。交换空间(Swap) 占用: total, 总交换空间; free, 空闲交换空间; used, 已用交换空间; avail Mem,可用物理空间。
二、进程信息
1.PID
进程 id
2.USER
进程所有者的用户名
3.PR
NAT态调整,用户不能直接操作
4.NI
进程优先级。nice值。负值表示高优先级,正值表示低优先级,用户可以自己调整
5.VIRT(virtual memory usage )
虚拟内存,是进程正在使用的优先级(由内核动所有内存(ps中标为VSZ)
VIRT: virtual memory usage虚拟内存
(1)进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
(2)假如进程申请100M的内存,但实际只使用了10M, 那么它会增长100M,而不是实际的使用量
6.RES ( resident memory usage )
是进程所使用的物理内存。实际实用内存(ps中标为RSS )
usage常驻内存
(1)进程当前使用的内存大小,但不包括swap out
(2)包含其他进程的共享
(3)如果申请100m的内存,实际使用10M, 它只增长10M, 与VIRT 相反
(4)关于库占用内存的情况,它只统计加载的库文件所占内存大小
7.SHR
共享内存大小,单位kb SHR: shared memory 共享内存
(1)除了自身进程的共享内存,也包括其他进程的共享内存
(2)虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
(3)计算某个进程所占的物理内存大小公式:RES-SHR4、swapout后,它将会降下来
8.s 进程状态
D=不可中断的睡眠状态
R=运行中或可运行
S=睡眠中
T=已跟踪/已停止
Z=僵停
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒.
COMMAND 命令名/命令行
9.top命令全屏操作界面快捷键
默认3s刷新一次,按s修改刷新时间按空格:立即刷新。
p:按CPU排序
M: 按内存排序
T:按时间排序
P:进程IP,查看某个进程状态
N键根据启动时间进行排序
数字键1:显示每个内核的CPU使用率
u/U:指定显示的用户
h:可以获得top程序的在线帮助信息
q:键可以正常地退出top程序
注:若通过top排名工具发现某个进程CPU占用率非常高,需要终止该进程的运行,可以在top 操作界面中按k键,然后在列表上方将会出现“PID to signal/kill [default pid = 3180] :”的提示信息,根据提示输入指定进程的PID号并按Enter 键,出现“Send pid 5597 signal [15/sigterm]"的二次确认的提示信息,然后按Enter键确认即可终止对应的进程。
三、pgrep命令查询进程信息
常用的参数
-l:选项可同时输出对应的进程名以及PID
-U:选项查询特定用户的进程
-t:选项查询在特定终端运行的进程
四、pstree命令以树形结构列出进程信息
pstree命令默认情况下只显示各进程的名称,结合以下常用的参数使用:
-p:选项使用时可以同时列出对应的PID号
-u:选项可以列出对应的用户名
-a: 选项可以列出完整的命令信息
执行如下的“pstree-aup"命令可以查看当前系统的进程树,包括各进程对应的PID号、用户名、完整命令等信息。从输出结果中可以看出,systemd 进程确实是Linux 操作系统中所有进程的始祖”。
五、控制进程
1.手工启动进程
由用户手工输入命令或者可执行程序的路径,可以至少启动-一个进程。根据该进程是否需要占用当前的命令终端,手工启动又可以分为前台启动和后台启动。
进程在前台运行
(如执行“ls -l”命令)时,用户必须等到该进程执行结束并退出以后才能继续输入其他命令,大多数命令操作在前台启动运行。进程在后台运行时,用户可以继续在当前终端中输入其他命令,而无须等待该进程结束,适用于运行耗时较长的操作。
启动后台进程需要使用“&”操作符,将“&"操作符放在要执行命令的最后面,进程启动后会直接放入后台运行,而不占用前台的命令操作界面,方便用户进行其他操作。例如,当使用 cp命令从光盘中制作镜像文件时,由于需要复制的数据较多,耗时较长,因此可结合“&”符号将复制操作放到后台运行,以便用户可以继续执行其他命令操作。
cp /dev/cdrom /home/cetos7.iso &
2.调度启动
在服务器维护工作中,经常需要执行一些比较费时而且较占用资源的任务(如数据备份),这些任务更适合在相对空闲的时候(如夜间)进行。这时就需要用户事先进行调度安排,指定任务运行的时间,当系统到达设定时间时会自动启动并完成指定的任务。调度启动的计划任务进程均在后台运行,不会占用用户的命令终端。
进程的调度启动可以通过at、 crontab 命令进行设置,其中at命令用于设置一次性( 如在某一时刻时重启网络服务)计划任务,crontab 命令用于设置周期性运行( 如在固定时间备份数据库)的计划任务。
3.进程的前后台调度
挂起当前的进程
当Linux操作系统中的命令正在前台执行时(运行尚未结束),按Ctrl + z组合键可以将当前进程挂起( 调入后台并停止执行),这种操作在需要暂停当前进程并进行其他操作时特别有用。例如,打包usr并且调入后台,可以按ctrl+Z组合键将该下载任务调入后台并暂停执行。
tar zcvf usr.tar.gz /usr &
nohup tar zcf usr. tar.gz /usr &
六、jobs命令查看处于后台的任务列表
1.常用的参数
-l:选项可以同时显示该进程对应的PID号
2.将后台的进程恢复运行
使用 bg ( BackGround, 后台)命令,可以将后台中暂停执行 (如按Ctrl+z组合键挂起)的任务恢复运行,继续在后台执行操作
使用fg命令(ForeGround, 前台),可以将后台任务重新恢复到前台运行。
除非后台中的任务只有一个,否则bg和fg命令都需要指定后台进程的任务编号作为参数。
3.终止进程执行
当用户在前台执行某个进程时,可以按Ctrl+c组合键强制进行中断(如命令长时间没有响应的情况下)。
中断前台进程的运行后,系统将返回命令行提示符状态等待用户输入新的命令。当按Ctrl+C组合键无法终止程序或者需要结束在其他终端或后台运行的进程时,可以使用专用的进程终止工具kill、killall和pkill。
kill支撑发送的信号列表可以通过kill -1查看,而这些信号的具体含义可以通过man 7 signal查看
(1)使用kill命令终止进程
通过kill 命令终止进程时,需要使用进程的PID号作为参数。无特定选项时,kill命令将给该进程发送终止信号并正常退出运行,若该进程已经无法响应终止信号,则可以结合“-9”选项强行终止进程。强制终止进程时可能会导致程序运行的部分数据丢失,因此不到不得已时不要轻易使用“-9"选项。
pgrep -l "sshd" 查询目标进程的PID号
参数 sshd
kill 参数 终止指定PID的进程
pgrep -l "sshd" 确认进程已终止(查询时无结果)
对于无法正常终止的系统进程,在必要时可以结合“-9”选项强制终止。强制终止vim进程的过程
vim testfile & 打开vim程序并挂起作为测试
[1] + Stopped vim testfile
jobs -l 查询目标进程的PID号
[1]+ 参数 Stopped vim testfile
kill 参数 尝试正常结束进程
jobs -l 发现vim进程并未退出
[1]+ 参数 Stopped vim tmpfile
kill -9 参数 强制终止目标进程
jobs -l 成功终止vim进程
[1]+ 参数 已杀死
vim tmpfile
(2)使用killall 命令终止进程
使用killall命令可以通过进程名称来终止进程,当需要结束系统中多个相同名称的进程时,使用killall命令将更加方便,效率更高。killall 命令同样也有“-9”选项。执行“killall -9 vim" 命令可将所有名为vim的进程都强行终止。
vim testfilel & 挂起第 1个vim测试进程
[1]+ Stopped vim testfile1
[2]+ vim testfile2 & 挂起第2个vim测试进程
Stopped vim testfile2
jobs -l 确认待终止的进程信息
[1]- 参数 Stopped vim testfilel
[2]+ 参数 Stopped vim testfile2
killall -9 vim 通过进程名终止多个进程
jobs -l
[1] - 参数 Killed vim testfile1
[2]+ 参数 Killed vim testfile2
(3)使用pkill命令终止进程
使用pkill命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程,大部分选项与pgrep命令基本类似,如“-U” (指定用户)、“-t” (指定终端)等选项, 使用起来非常方便。终止由用户启动的进程( 包括登录Shell)
su - 用户
vim tst.txt &
pgrep -l -U "用户名" 确认 目标进程相关信息
pkill -9 -U "用户名" 强行终止用户hackli的进程
pgrep -l -U "用户名" 确认目标进程已被终止
七、计划任务管理at
一次性计划任务
在Linux操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划的系统管理任务(如定期备份、定期采集监测数据)。CentOS 系统中默认已安装了at、 cronie 软件包,通过atd和crond这两个系统服务实现一次性、周期性计划任务的功能,并分别通过at、 crontab命令进行计划任务设置。
使用at命令设置的计划任务只在指定的时间点执行一次,前提是对应的系统服务atd必须已经运行。需要注意的是,计划执行任务的时间、日期必须安排在当前系统的时刻之后,否 则将无法正确设置计划任务。
设置一次性计划任务时,在at命令行中依次指定计划执行任务的时间、日期作为参数(若只指定时间则表示当天的该时间,若只指定日期则表示该日期的当前时间),确认后将进入带“at>"提示符的任务编辑界面,每行设置一条执行命令,可以依次设置多条语句,最后按Ctrl+D组合键提交任务。所设置的命令操作将在计划的时间点被依次执行。
八、crontab命令
1.按照预先设置的时间周期(分钟、小时、天...... )重复执行用户指定的命令操作 2.属于周期性计划任务 3.主要设置文件
绝对路径可用which 查询
(1)全局配置文件,位于文件: /etc/crontab
(2)系统默认的设置,位于目录: /etc/cron.*/
(3)用户定义的设置,位于文件: /var/spool/cron/用户名
4.管理crontab计划任务
(1)编辑计划任务
crontab -e [-u 用户名]
(2)查看计划任务
crontab -| [-u 用户名]
(3)删除计划任务
crontab -r [-u 用户名]
九、crontab任务配置的格式
| 字段 | 说明 |
|---|---|
| 分钟 | 取值为从0到59之间的任意整数 |
| 小时 | 取值为从0到23之间的任意整数 |
| 日期 | 取值为从1到31之间的任意整数 |
| 月份 | 取值为从1到12之间的任意整数 |
| 星期 | 取值为从0到7之间的任意整数,0或7代表星期日 |
| 命令 | 要执行的命令或程序脚本 |
时间数值的特殊表示方法
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率