目录
一:查看进程
1.程序和进程的关系
程 序:
保存在硬盘、光盘等介质中的可执行代码和数据,文件中静态保存的代码。
进 程:
所谓进程就是系统中正在运行的程序,每当我们执行一个程序时,对于操作系统来讲就是创建了一个进程,在这个过程中操作系统对进程资源的分配和释放,可以认为进程就是一个程序的一次执行过程所谓进程就是系统中正在运行的程序,每当我们执行一个程序时,对于操作系统来讲就是创建了一个进程,在这个过程中操作系统对进程资源的分配和释放,可以认为进程就是一个程序的一次执行过程所谓进程就是系统中正在运行的程序,每当我们执行一个程序时,对于操作系统来讲就是创建了一个进程,在这个过程中操作系统对进程资源的分配和释放,可以认为进程就是一个程序的一次执行过程。
总结:
在CPU及内存中运行的程序代码,动态执行的代码。父、子进程,每个程序可以创建一个或多个进程。
2.查看静态的进程统计信息--ps aux命令
ps aux #查看静态的进程统计信息
a:显示终端上的所有进程,包括其他用户的进程
u:表示列出进程的用户
x:显示所有终端的进程
ps aux --sort -%cpu | head -10 #按cpu降序排列,-为降序,+为升序,p与&同义
ps aux --sort +pmem | head -n 10 #按内存升序排列
ps aux --sort -pcpu,+pmem | head -n 10
各列的解释:
USER: 进 程 的 用 户 。
PID: 进 程 的ID。
%CPU: 进 程 占 用 的CPU百 分 比 。
%MEM: 占 用 内 存 的 百 分 比 。
VSZ: 该 进 程 使 用 的 虚 拟 内 存 量 (KB)。
RSS: 该 进 程 占 用 的 物 理 内 存 量 (KB)。
TTY: 启 动 进 程 的 终 端 名 。 不 是 从 终 端 启 动 的 进 程 则 显 示 为 ?
STAT: 该 行 程 的 状 态 (D: 不 可 中 断 的 休 眠 状 态 ;R: 正 在 运 行 状 态 ;S: 处 于 休 眠 状 态 , 可 被 唤 醒 ;T: 停 止 状 态 , 可 能 是 在 后 台 暂 停 或 进 程 处 于 跟 踪 调 试 状 态 ;z: 僵 尸 进 程 , 进 程 已 经中 止 , 但 是 部 分 程 序 还 在 内 存 当 中 )。
START: 该 进 程 被 触 发 启 动 时 间 。
TIME: 该 进 程 实 际 使 用CPU 运 行 的 时 间 。
COMMAND: 进 程 的 启 动 命 令 。
补 充:僵尸进程
一个进程结束了,但是如果该进程的父进程已经结束了,那么该进程就不会变成僵尸进程,因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init来接管它,成为它的父进程,子进程退出后init会回收其占用的相关资源,但是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。
3. 查看静态的进程统计信息--ps -elf命令
ps -elf #查看静态的进程统计信息
-e:显示系统内的所有进程信息
-l:使用长格式显示进程信息
-f:使用完整的格式显示进程信息
-a:显示现行终端下的所有进程
-T:查看线程信息
ps -aT #显示所有线程
ps -T -p <pid> #查看指定进程中已经起的线程
ps -L <pid> #查看指定进程中的线程信息
各列的解释:
F: 内 核 分 配 给 进 程 的 系 统 标 记 。
S: 进 程 的 状 态 。
UID: 启 动 这 些 进 程 的 用 户 。
PID: 进 程 的 进 程ID。
PPID: 父 进 程 的 进 程 号 ( 如 果 该 进 程 是 由 另 一 个 进 程 启 动 的 ) 。
C: 进 程 生 命 周 期 中 的CPU利 用 率 。
PRI: 进 程 的 优 先 级 ( 越 大 的 数 字 代 表 越 低 的 优 先 级 ) 。
NI: 谦 让 度 值 用 来 参 与 决 定 优 先 级 。
ADDR: 进 程 的 内 存 地 址 。
SZ: 假 如 进 程 被 换 出 , 所 需 交 换 空 间 的 大 致 大 小 。
WCHAN: 若 该 进 程 在 睡 眠 , 则 显 示 睡 眠 中 的 系 统 函 数 名 。
STIME: 进 程 启 动 时 的 系 统 时 间 。
TTY: 进 程 启 动 时 的 终 端 设 备 。
TIME: 运 行 进 程 需 要 的 累 计CPU时 间 。
CMD: 进 程 的 启 动 命 令 。
二:查看进程信息
1.查看动态的进程排名信息--top命令
[root@localhost ~]# top #查看动态的进程排名信息
2.各列格式的解释:
(1)第一行是任务队列信息
15:18:38 :表示系统时间
up 1:08 :表示系统已运行时长
1 user : 表示当前登录用户数
load average :0.00,0.00,0.05 :系统负载,即单位时间内系统处理的任务数,后面三个数值分别为1分钟、5分钟、15分钟前到现在的平均值
(2)第二行为进程信息
Tasks : 总进程数
running :正在运行的进程数
sleeping :休眠的进程数
stopped :中止的进程数
zombie :僵死的进程数
(3)第三行为CPU的信息
us : 用户占用
sy :内核占用
ni :优先级调度占用
id :空闲CPU,要了解空闲的 CPU 百分比,主要看&id
wa :部分I/0 等待占用
hi :硬件中断占用
si :软件中断占用
st :虚拟化占用
(4)第四行为内存的信息
total :总内存空间
free :空闲内存
used :已用内存
buff/cache : 物理内存和交换内存的缓冲区总和
(5)第五行为交换空间的信息
total :总交换空间
free :空闲交换空间
used :己用交换空间
avail Mem :可用物理空间
3.进程信息区各列的解释
PID :进程id
USEB :进程所有者的用户名
PR :优先级
NI :谦让度值。负值表示高优先级,正值表示低优先级
VIRT :进程使用的虚拟内存总量,单位kb
RES :进程使用的物理内存大小,单位kb
SHR :共享内存大小,单位kb
S :进程状态
%CPU :上次更新到现在的CPU时间占用百分比
%MEM :进程使用的物理内存百分比
TIME+ :进程使用的CPU时间总计,单位1/100秒
COMMAND :命令名/命令行
4.top常用命令
top -H #显示所有的线程
top -H -p <pid> #显示特定进程中的线程
p 键 | 根据CPU使用百分比大小进行排序 |
M 键 | 根据驻留内存大小进行排序 |
N 键 | 根据启动时间进行排序 |
c 键 | 切换显示命令名称和完整命令行 |
h 键 | 可以获得 top 程序的在线帮助信息 |
k 键 | 根据提示输入指定进程的 PID 号并按 Enter 键终止对应的进程 |
q 键 | 退出top程序 |
数字1 键 | 显示cpu 个数和状态 |
5.tty终端
Centos7 系统,tty1表示图形界面,tty2-tty6表示文字界面,可以用ctrl+Alt+F1-F6切换。
pts 说明是用远程工具连接的,比如xshell, 后面的数字代表登录的时间顺序,越小证明登录的越早
6.查看进程信息--pgrep命令
pgrep -l “log” #-l:显示进程号,缺省时只输出PID号
pgrep -l -U teacher -t tyy2 #-U:指定特定用户 -t:指定终端
7.查看进程树--pstree命令
[root@localhost ~]# pstree -aup
-a :显示完整信息
-u :列出对应用户号
-p :列出对应PID号
[root@localhost ~]#pstree -ap <用户名> #只查看属于指定用户的进程树结构
三:启动进程
1.进程的启动方式
(1)手工启动:
前台启动:用户输入命令,直接执行程序
后台启动:在命令行尾加入“&”符号
(2)调度启动:
使用 at 命令,设置一次性计划任务
使用 crontab 命令,设置周期性计划任务
2.进程的前后台调度
Ctrl+z:将当前进程挂起,即调入后台并停止执行
jobs [-l]命令:查看处于后台的任务列表
fg 命令:将后台进程恢复到前台运行,可指定任务序号
3.计划任务管理--at命令
at [HH:MM] [yyyy-mm-dd]
[root@localhost ~]# atq #查看未执行的任务列表
[root@localhost ~]# atrm 2 #删除任务
4.计划任务管理--crontab命令
(1)crontab命令简介
按照预先设置的时间周期 (分钟、小时、天、月、周)重复执行用户指定的命令操作
属于周期性计划任务,主要设置文件
全局配置文件,位于文件: /etc/crontab
系统默认的设置,位于目录: /etc/cron.*/
用户定义的设置,位于文件: /var/spool/cron/用户名
(2)crontab命令格式
crontab -e [-u 用户名] #编辑计划任务,-u 缺省还默认是针对当前用户
crontab -l [-u 用户名] #查看计划任务
crontab -r [-u 用户名] #删除计划任务
(3)crontab任务配置的格式
#周数字为0 或 7 时,都代表“星期天”的意思
(4)时间数值得特殊表示方法
* | 表示该范围内的任意时间 |
, | 表示间隔的多个不连续时间点 |
- | 表示一个连续的时间范围 |
/ | 指定间隔的时间频率 |
(5)试例
crontab -e [-u root]
5 * * * * ls :指定每小时的第5分钟执行一次ls命令
30 6 * * 0 ls :指定每个星期日的6:30执行ls命令
30 9-17 1-20 1,2,3 * /user/bin/ls :每年1、2、3月的前20天朝九晚五期间的第30分钟执行ls操作
四:终止进程的运行
1.Crtl+C组合键
Crtl+C组合键:中断正在执行命令
2.kill、killall命令
kill命令:用于终止指定PID号的进程
killall命令:用于终止指定名称相关的所有进程
-9 选项:用于强制终止
3.kill、kill-9、kill -3的区别
kill会默认传15代表的信号为SIGTERM, 这是告诉 进程你需要被关闭,请自行停止运行并退出,进程可以 清理缓存自行结束,也可以拒绝结束。
kill-9 代表的信号是SIGKILL, 表示进程被终止,需要立即退出,强制杀死该进程,这个信号不能被捕获 也不能被忽略。
kill -3可以打印进程各个线程的堆栈信息, kill-3 pid后文件的保存路径为:/pspc/${pid}/cwd, 文件名为: antBuilderOutput.log
4.终止进程运行--pkill命令
常用命令选项:
pkill -t <终端名> #-t:根据进程所在的终端终止相应进程
pkill -U <用户名> #-U:根据进程所属的用户名终止相应进程
总结:
查看内容 | 查看命令 |
查看内存 | free -m ,vmstat,atop |
查看cpu | top,vmstat,atop,sar |
查看IO | iostat,iotop,vmstat,atop,sar |
查看网卡流量 | ifconfig,iftop,atop |
查看磁盘使用 | df,du,atop |
查看进程 | ps,top,htop,atop,pidstat |