内容预知
1.进程的相关管理
进程和线程联系
- 程序 :是一组计算机能识别和执行的指令
- 进程:开发写的代码我们称为程序,那么将开发的代码运行起来。我们称为进程
- 线程:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
2. 查看进程
2.1 静态查看进程—— ps aux
a | 显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将示系统中所有的进程信息。 |
u | 使用以用户为主的格式输出进程信息。 |
x | 显示当前用户在所有终端下的进程信息。 |
其他补充:
- -e:显示系统内的所有进程信息。
- -l:使用长(Long)格式显示进程信息。
- -f:使用完整的(Full)格式显示进程信
- k|--sort 属性:对属性排序,属性前加 - 表示降序排列。
名称 | 解释 |
USER | 产生该进程的的用户名称 |
PID | 进程的id,由系统分配 |
%CPU | 该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。 |
%MEM | 该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。 |
VSZ | 该进程占用虚拟内存的大小,单位为 KB。 |
RSS | 该进程占用实际物理内存的大小,单位为 KB。 |
TTY | 该进程是在运行的终端 |
STAT | 进程所处的状态 |
START | 该进程的启动时间。 |
TIME | 该进程占用 CPU 的运算时间,注意不是系统时间。 |
COMMAND | 产生此进程的命令名。 |
补充一: STAT所处状态的种类
-D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
-R:该进程正在运行。
-S:该进程处于睡眠状态,可被唤醒。
-T:停止状态,可能是在后台暂停或进程处于除错状态。
-Z:僵尸进程。进程已经中止,但是还是占用硬件资源。 -
僵尸状态产生的原因:由于父进程比子进程先退出,导致子进程无法被回收,且不能运行而产生的状态
补充二:TTY进行运行的终端
tty1~tty6 是本地的字符界面终端
tty7 是图形终端
注意:可以通过 Alt+F1 ~ F7 快捷键切换不同的终端 (笔记本:fn+f1 能使用本来的用法)
2. 2静态查看进程—— ps -elf
列名 | 解释 |
F | 进程标志,说明进程的权限,常见的标志有两个: 1:进程可以被复制,但是不能被执行; 4:进程使用超级用户权限; |
S | 进程状态。具体的状态和"psaux"命令中的 STAT 状态一致; |
UID | 运行此进程的用户的 ID; |
PID | 进程的 ID; |
PPID | 父进程的 ID; |
C | 该进程的 CPU 使用率,单位是百分比; |
PRI | 进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;系统定义不可以人为修改 |
NI | 进程的优先级,数值越小,该进程越早被执行;可以人为修改 |
ADDR | 该进程在内存的哪个位置; |
SZ | 该进程占用多大内存; |
WCHAN | 展示正在休眠的内核函数。运行中的任务将展示为'-' |
TTY | 该进程由哪个终端产生; |
TIME | 该进程占用 CPU 的运算时间,注意不是系统时间; |
CMD | 产生此进程的命令名; |
2. 3查看线程—— ps -aT
2.4 动态查看进程 ——top
选项:
- -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒。
- -b:使用批次处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中。
- -n 次数:指定 top 命令执行的次数。一般和"-"选项合用。
- -p 进程PID:仅查看指定 ID 的进程。
- -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误。
- -u 用户名:只监听某个用户的进程。
- -H 查看线程
注意:load average系统在之前 1 分钟、5 分钟、15 分钟的平均负载。(当这三个值长期处在cpu的百分之七十到百分之八十,说明此时处在高负荷工作中。百分之八十以上则是超负荷)
原因:1.性能不足 2.服务器被攻击 3.程序出现了bug
除top以外 还有 w uptime 命令可以查看平均负债值
在top显示界面的操作:
- ? 或 h:显示交互模式的帮助。
- c:按照 CPU 的使用率排序,默认就是此选项。
- M:按照内存(memory)的使用率排序。
- N:按照 PID 排序。
- T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序。
- k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号。
- r:按照 PID 给某个进程重设优先级(Nice)值。
- q:退出 top 命令。
- z:彩色显示
- F:通过光标设置字段是否展示,以及展示顺序。
2.5 根据条件查看进程
- -U:指定用户
- -l:显示进程名
- -a:显示完整格式的进程名
- -P < PID>:显示指定进程的子进程
- -t 查看终端
2.6 树状查看进程——pstree
选项:
- -a:显示启动每个进程对应的完整指令,包括启动进程的路径、参数等。
- -p:显示PID。
- -u:显示进程的用户名称。
- -u 用户名:显示指定用户的进程。
- -H < pid>:高亮显示指定进程及其前辈进程。
- -T:不显示线程thread,默认显示线程。
3.手动控制进程
进程的启动分为前台启动和后台启动
- 前台启动 :用户输入命令以后,直接在页面中启动该命令
- 后台启动:当该命令需要的操作过大,占用可终端,导致用户无法再次输入其他命令,将该处理进程放在后台处理,同时可以进行别的操作
3.1 将前台命令进程转入后台——&
通过ps -aux 查看到 sleep 600 命令进程在后台运行
3.2 直接查看后台进程命令——jobs -l
此外:ctrl -z 可以将正在进行的前台进程挂起
3.3 恢复后台进程到前台——fg +<序号>
恢复挂起的前台命令进程
3.4 杀进程
3.4.1 杀进程——kill
kill <PID>
3.4.2 杀进程——killall
killall <进程名>
3.4.3 杀进程——pkill
pkill -t <终端> 根据终端进行杀进程
pkill -U <用户> : 根据所属用户,来杀进程
3.5 杀进程的原理和强制杀进程
我们经常会用到kill
命令去杀死一个进程,但是有时会出现kill不成功的现象,这是就要用到kill -9
。
-15 :代表信号为 SIGTERM,发出的信号为通知信号,请该进程停止运行并且保存退出
-9: 代表信号为 SIGKII ,发出的信号为强制清退信号,该信号不能捕获也不能清退,让进程立即退出(不管是否保存)。
4.计划任务的管理
4.1 一次性的计划任务
at:任务设定
atq 查看预设定的任务
atrm +<序号> 删除设定的任务
4.2 周期循环的计划任务
- 按照预先设置的时间周期(分 时 日 月 周)重复执行用户指定的命令操作(绝对路径的命令或者脚本)。
- 属于周期性计划任务。
- 主要设置文件。
- 全局配置文件,位于文件:/etc/crontab
- 系统默认的设置,位于目录:/etc/cron.*/
- 用户定义的设置,位于文件:/var/spool/cron/用户名
命令操作:
crontab -e [-u 用户名] //编辑计划任务
crontab -l [-u 用户名] //查看计划任务
crontab -r [-u 用户名] //删除计划任务
在使用 crontab前注意:crond的服务是否打开
4.2.1 使用crontab -e的使用方法
crontab 类似vim编辑器一样打开一个配置文件,向配置文件中写入周期任务。但是写周期任务,需要对使用周期时间进行理解和掌握
编辑任务的格式:
特殊时间的表示符号:
符号 | 用法 |
*(星号) | 代表任何任意时间。(例如第一个*,表示每分钟执行一次,其他位置是这个意思) |
,(逗号) | 代表多个不连续的时间点(例如第一个*设置为 10,20,30 表示10分 20分 30分 各执行一次) |
-(中杠) | 代表连续的时间范围 |
/(斜杠) | 代表每隔多久执行一次(即间隔的时间频率)。 |
时间引例:
0 8-18/2 * * * //8点到18点之间每2小时
0 * */3 * * //每3天的每个整点
0 14-18 1,5,15,30 * * // 每个月 1号 ,5 号 ,15号, 30号 下午 2到6点 执行
15-45/5 10,22 */10 10 * // 每年10月每隔10天的上午和下午10点的15-45分内每隔5分钟执行一次
which 命令 //查看该命令的绝对路径
4.2.2 周期计划任务的查看
4.2.3 周期任务的删除
4.3 其他方式设置周期任务
vim /var/spool/cron/
vim /etc/crontab
总结
静态查看:ps aux,ps -elf
动态查看:top
查看指定进程:prtstat
以树形结构列出:pstree
at 一次性任务的设定
杀进程时注意 -9 谨慎使用,使用不妥当,会导致数据丢失
周期任务计划要注意周期方法的使用,利用好周期符号,设定先要的执行时段