一.进程和程序
1.程序
- 是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。
- 用于描述进程要完成的功能,是控制进程执行的指令集。
- 保存在硬盘、光盘等介质中的可执行代码和数据。
- 静态保存的代码
2.进程
- 在CPU及内存中运行的代码
- 动态执行的程序
- 父,子 进程—每个程序可以创建一个或多个进程
进程的五种状态
D不可中断 R运行 S中断 T停止 Z僵尸
3.线程
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
查看进程有几个线程,可以使用 "cat /proc/PID/status"查看
查看线程 ps -T
二.查看进程
1.ps静态查看进程
ps [选项]
a 显示当前终端下的所有进程信息,包括其他用户的进程、与“x”选项结合时将显示系统中所有的进程信息
u 使用以用户为主的格式输出进程信息
x 显示当前用户在所有终端下的进程信息
-e 显示系统内的所有进程信息
-l 使用长(Long)格式显示进程信息
-f 使用完整的(Full)格式显示进程信息
ps aux
ps aux命令 以简单列表的形式显示出进程信息
每个字段含义
USER:启动该进程的用户账号的名称
PID :该进程在系统中的数字ID,在当前系统中是唯一的kill -9 PID号
TTY :表明该进程在哪个终端上运行,“?”表示不需要终端
STAT:显示了进程当前的状态,如S(休眠)、R(运行)、Z(僵尸)、<(高优先级)、 N(低优先级)、s(父进程)、+(前台进程)、对于僵尸进程要手动关闭
START:启动该进程的时间
TIME:该进程占用的CPU时间
COMMAND:启动该进程的命令名称
%CPU:占用CPU百分比
%MEM:占用内存百分比
VSZ: 占用虚拟机内存大小(swap)
RSS: 占用物理内存的大小(物理内存)
ps -elf
PPID:表示对应进程的父进程的PID号
PRI:用户态优先级(人为)
NI: nice值,内核态优先级,取值范围(-20~19),值越小,优先级越高
ADDR:若是 - ,代表正在运行
SZ:在swap交换分区的容量
WCHAN:当前进程在内核中的名称
STIME:启动时间
pstree
pstree命令以属性结构列出进程信息,可以更直观的判断各进程的相互关系(父,子进程)
yum -y install psmisc 安装pstree命令
pstree -aup
-a: 显示完整信息
-u:列出对应用户名
-p:列出对应PID号
自定义查看
ps axo 列名,列名,列名...
ps -eo 列名,列名,列名...
2.top动态查看进程
选项:
- -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒。
- -b:使用批次处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中。
- -n 次数:指定 top 命令执行的次数。一般和"-"选项合用。
- -p 进程PID:仅查看指定 ID 的进程。
- -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误。
- -u 用户名:只监听某个用户的进程。
- top -H查看线程
在 top 命令的显示窗口中,可使用如下按键,进行交互操作:
- ? 或 h:显示交互模式的帮助。
- c:按照 CPU 的使用率排序,默认就是此选项。
- M:按照内存(memory)的使用率排序。
- N:按照 PID 排序。
- T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序。
- k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号。
- r:按照 PID 给某个进程重设优先级(Nice)值。
- q:退出 top 命令。
- z:彩色显示
- F:通过光标设置字段是否展示,以及展示顺序。
内容 说明
19:43:29 系统当前时间
up 1:58 系统运行时间,本机已运行1时58分
1 user 当前登录了一个用户
loag average 系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的, 则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载 (这个平均负载完全是依据个人经验来进行判断的,一般认为 不应该超过服务器 CPU 的核数)
查看loag average:w uptime
3.pgrep 根据条件(进程名、用户、终端)查进程
- -U:指定用户
- -l:显示进程名
- -a:显示完整格式的进程名
- -t :终端
4.prtstat 查看指定的进程
prtstat [选项] PID
-r :格式显示(raw)
三.控制进程
启动进程
手工启动
- 前台启动:用户输入命令,直接执行程序(可能会占用前台终端)
- 后台启动:在命令行尾加入“&”符号。
Ctrl+Z 组合,可以将当前进程挂起(即调入后台并停止执行)
jobs 命令,查看处于后台的任务列表 (加-l可显示进程名)
fg 任务序号,将后台进程恢复到前台运行
bg 任务序号,将一个在后台暂停的任务,变成继续执行。
结束进程 kill
kill 从字面来看,就是用来杀死进程的命令,但事实上,这个或多或少带有一定的误导性。从本质上讲,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。
也就是说,kill 命令的执行原理是这样的,kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作
kill [信号] PID
-15 SIGTERM 让进程自行停止并退出
-9 SIGKILL 强制让进程立即退出,且不能忽略
killall
通过程序的进程名来杀死一类进程,常与 ps、pstree 等命令配合使用
killall 进程名
pkill
pkill [-U 用户名] 进程名
pkill [-t 终端号] 进程名
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程
四.计划任务管理
at 一次性任务设置
过程:
at HH:MM yyyy-mm-dd #设置执行任务时间
at> 任务 #设定具体任务
ctrl + d 提交任务
atq 查询任务列表 atrm 删除任务
crontab周期性任务设置
crontab -e [-u 用户名] 编辑计划任务
crontab -l [-u 用户名] 查看计划任务
crontab -r 清空
(-u选项缺省时默认针对当前用户,只有超级用户才可以使用-u)
全局配置文件,位于文件:/etc/crontab
用户定义的设置,位于文件:/var/spool/cron/用户名
任务内容格式
* * * * * 需要执行的任务 (任务内容设置中,命令一定要用绝对路径)