提示:文章完成后,目录可以自动生成,如何生成可以参考右边的帮助文档
文章目录
- 前言
- 一、程序与过程的关系
-
- 程序
- 进程
- 二、程序 进程理论
-
- 线程
-
- 线程状态:
-
- 1.新建(NEW):
- 2.可运行(RUNNABLE):
- 3.运行(RUNNING):
- 4.阻塞(BLOCKED):
-
- 阻塞有三种
- 5.死亡(DEAD):
- 三、PS命令—查看静态的进程统计信息
-
- 常用的参数
- 常用的选项组合
-
- ps -elf 具体的过程信息将以列表的形式显示
-
- ps -aux 过程信息将以简单列表的形式显示
- 重点:
- 优先级
- 四、TOP命令-查看过程动态信息
- 五、pgrep命令(查看过程信息主要取决于过程名和相应的信息PID)
- 六、pstree命令-查看进程树
-
- pstree -aup 查看完整的过程数信息,常用的搭配
- 七、控制过程
-
- jobs
- kill
- killall命令
- pkill命令-可以根据过程的名称、运行过程的用户和过程所在的终端结束过程
- 八、计划任务
-
- at——一次性任务
- crontab命令-重复执行用户指定的命令操作,按照预设的时间周期(分时日月周)
前言
程序是保存在外部存储介质(如硬盘,光盘)中的可执行机器代码和数据的静态集合,而进程是在CPU以及内存中动态执行的计算机程序。Linux在系统中,可以在每个程序启动后创建一个或多个过程
提示:以下是本文的文本内容,以下案例可供参考
一、程序与过程的关系
程序
可执行代码和数据保存在硬盘、光盘等介质中 静态保存在文件中的代码 二进制文件,静态**/bin/data、/usr/sbin/sshd**
进程
在CPU以及在内存中运行的程序代码 动态执行代码 父、子进程 每个程序可以创建一个或多个过程 过程是程序运行的过程和动态,包括生命周期和运行状态
二、程序 进程理论
线程包含在过程中,是过程中的实际操作单位,也是操作系统中可以独立运行的基本单位,也称为轻量进入,可以在一个过程中并发多个线程. 程序—>进程—>线程
线程
线程状态:
1.新建(NEW):
创建了线程对象。
2.可运行(RUNNABLE):
创建线程对象后,其他线程(如main线程)调用对象start()方法。该状态的线程位于可操作线程池中,等待线程调度选择并获得cpu的使用权。
3.运行(RUNNING):
可运行状态(runnable)获得了线程cpu时间片(timeslice)执行程序代码。
4.阻塞(BLOCKED):
阻塞状态是指线程因某种原因放弃cpu使用权,即让出cup timeslice,暂时停止运行,直到线程进入可运行。(runnable)只有这样,我们才有机会再次获得状态cup timeslice转到运行(running)状态。
阻塞有三种
1.等待阻塞:操作线程执行o.wait () 方法,JVM将该线程放入等待队列(waitting queue)中。 2.同步阻塞:在获取对象的同步锁时,如果同步锁被其他线程占用,则操作线程JVM将该线程放入锁池(lock pool)中。 3.其他障碍物操作线程执行Thread.sleep(longms)或t.join()模式,或发布I/O请求时,JVM线程将被阻塞。sleep()状态超时,join()等待线程终止或超时I/O处理完毕时,线程重新转入可运行状态。
5.死亡(DEAD):
线程run()、main()执行结束,或因异常退出run()方法,线程结束生命周期。死亡线程不能重生
三、PS命令-查看静态过程统计信息
常用的参数
-a 显示包括其他用户在内的当前终端下的所有流程信息。 x 当选项结合时,将显示系统中的所有过程信息。 -u 以用户为主的格式输出过程信息。 -x 在所有终端下显示当前用户的流程信息。 -e:显示系统的所有流程信息 -l:长格式显示过程信息 -f:使用完整的格式显示过程信息
常用的选项组合
ps -elf 具体的过程信息将以列表的形式显示
在上述输出信息中,第一行为列表的标题如下。
**USER**:用户账户名称启动此过程 **PID**:系统中的数字过程ID,在当前系统中是唯一的。
**%CPU**:CPU占用的百分比
**%MEM**:内存占用的百分比
**VSZ**:该进程使用的虚拟内存量(KB)。
**RSS**:该进程占用的物理内存量(KB)。
**TTY**:表示该进程在哪个终端上运行。不是从终端启动的进程则显示为?。
简单来说:pts是远程登录终端ctrl+ALT F1-F6 tty1 图像界面 2和6 字符界面 ? 系统本身自身执行的进程
**STAT**:该进程的状态(D:不可中断的休眠状态,S:处于休眠状态,可被唤醒,T:停止状态,可能是在后台暂停或进程处于跟踪调试状态,Z:僵尸进程,进程已经中止,但是部分程序还在内存当中)
D:系统守护进程 T:调试、程序执行一般停止 R:该程序目前正在运作,或者是可被运作 S:该程序目前正在睡眠当中(可说是idle状态),但可被某些讯号(signal)唤醒。 T:该程序目前正在侦测或者停止了 Z:该程序应当已经终止,但是其父程序却无法正常的终止他,造成zombie(僵死)程序的状态 D 不可中断状态, 他们的含义如下: <:表示进程运行在高优先级上 N:表示进程运行在低优先级上 L:表示进程有页面锁定在内存中 s:表示进程是控制进程 l:表示进程是多线程的 +:表示当前进程运行在前台 D:系统守护进程 T:调试、程序执行一般停止
ps -aux 将以简单列表的形式显示出进程信息
F:内核分配给进程的系统标记 S :进程的状态 UID :启动这些进程的用户 PID :进程的进程ID,每一个进程都有一个唯一的PID PPID :父进程的进程号(如果该进程是由另一个进程启动的) C :进程生命周期中的CPU利用率 PRI :进程的优先级(越大的数字代表越低的优先级) NI :谦让度值用来参与决定优先级 ADDR :进程的内存地址 SZ :假如进程被唤出,所需交换空间的大致大小 WCHAN:若该进程在休眠,则显示睡眠中的系统函数名 STIME:进程启动时的系统时间 TTY :进程启动时的终端设备 TIME :运行进程需要的累计CPU时间 CMD :进程的启动命令
加上grep可以查看程序是否运行
重点:
ps -aux #将以简单列表的形式显示出进程信息
ps -elf #将以列表的形式显示出具体的进程信息
D[aemon]:守护进程
R[unning]:正在运行
S[leep]:睡眠状态
Z[ombie]:僵尸状态
优先级
< 高优先级
N 低优先级
+前台进程
l 该进程是多线程的
**START**:启动该进程的时间
**TIME**:该进程占用的 cpu 时间
**COMMAND**:启动该进程的命令的名称
四、TOP命令—查看进程动态信息
使用ps命令查看到的是一个静态的进程信息,并不能连续的反馈出当前进程的运行状态。若希望动态刷新的方式显示各进程的状态信息,可用top命令。 top命令会将在当前终端以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认三秒刷新一次,其基本作用类似于Windows系统中的任务管理器,
上述输出信息中,开头部分显示了系统任务(Tasks)、CPU占用、内存占用(Mem)、交换空间(Swap)等汇总信息,汇总信息下方依次显示当前进程的排名情况。相关信息的含义表示如下,
uptime:当前时间—17:42:11 up 系统运行时间 2 user 当前登录用户数 load average:0.36,0.13,0.08:系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。 系统任务(Tasks)信息:total:总进程数,running:正在运行的进程数,sleeping:休眠的进程数,stopped:终止的进程数,zombie:僵死无响应的进程数。 CPU占用信息:us:用户占用,sy:内核占用,ni:优先级调度占用,id:空闲cpu,wa:I/O等待占用,hi:硬件中断占用,si:软件中断占用,st:虚拟化占用,要了解空闲的CPU百分比,主要看%id部分 内存占用(Mem)信息:total:总内存空间,used:已用内存,free:空闲内存,buffers:缓存区域 交换空间(Swap)占用:total:总交换空间,used:已用交换空间,free:空闲交换空间,cached:缓存空间
top全屏操作界面的快捷键
s :修改刷新时间,按空格立即刷新 默认3s刷新一次
p :按CPU排序
M :按内存排序
T :按时间排序
P :进程IP,查看某一个进程状态
N :根据启动时间排序
1 : 显示每个内核的CPU使用率u/U:指定显示的用户
h :可以获得top程序的在线帮助信息
q : 退出
五、pgrep命令(查看进程信息主要看进程名和对应的PID)
-l :同时输出对应的进程名和PID
-U :查询特定用户的进程
-t :指定终端
六、pstree命令-查看进程树
-p :使用时可以同时列出对应的PID号
-u :可以列出对应的用户名
-a :可以列出完整的命令信息
pstree -aup 查看完整的进程数信息,常用的搭配
七、控制进程
进程启动方式为手动启动和调度启动
手动启动
前台启动:用户输入命令,直接执行程序 后台启动:在命令行尾加入“&”符号(放在后台的原因是因为有些程序比较大,可能跑不完,所以要放在后台运行,这样能够同时进行其他操作。)
将后台的进程恢复运行
bg :可以将后台中暂停执行的命令的任务恢复运行,继续在后台执行
fg :可将后台任务重新恢复到前台运行。
CTRL+Z 可以把任务放到后台并且暂停
jobs
查看处于后台的任务列表
-l 可以同时显示该进程
kill
可将指定的信息送至程序
-1 (HUP):重新加载进程。
-9 (KILL):杀死一个进程。
-15 (TERM):正常停止一个进程。(默认值)
killall命令
通过进程名称来终止进程
在需要系统结束多个相同名字的进程的时候,这个命令就方便了很多
可以直接同时杀死所有vim的进程
pkill命令-可以根据进程的名称、运行该进程的用户、进程所在的终端等来结束进程
-U :指定用户
-t :指定终端
例如 pgerp -l -U “zhangsan” 查出张三用户运行的进程 pkill -9 -U “zhangsan” 指定用户杀死进程
八、计划性任务
at——一次性任务
date 显示当前时间 at 16:10 (只写时间表示当天) 回车 然后写下需要执行的命令 然后回车
#ctrl+d提交运行 #ctrl+c退出不运行
crontab命令——按照预先设置的时间周期(分时日月周)重复执行用户指定的命令操作
属于
-e 开启计划任务
-l 查看计划任务
-r 删除计划任务
**
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率
分钟 :0-59
小时 :0-23
日期 :1-31
月份 :1-12
星期 :0-7(0和7都表示周日
配置格式 分钟 小时 日期 月份 星期 命令
例如 :CP命令的绝对路径
例如: