Linux进程和计划任务管理
程序与进程的关系
程序:保存在硬盘/光盘等介质中的可执行代码和数据,程序是静态保存的代码
进程:在CPU/内存中运行的程序代码,进程是动态运行的代码
父/子进程:每一个进程可以创建一个或者多个进程
查看/终止进程
ps命令–查看静态的进程统计信息
格式:ps aux | ps -elf
选项 | 解释 |
---|---|
a | 显示当前终端下的所有进程信息 |
u | 使用以用户为主的格式输出进程信息 |
x | 显示当前用户在所有终端下的进程信息 |
-e | 显示系统内的所有进程信息 |
-l | 使用长格式显示进程信息 |
-f | 使用完整的格式显示进程信息 |
上述输出信息中,第一行为列表标题,其中各字段的含义描述如下:
USER:当前进程的属主(用户名)
PID:代表进程唯一表示
%CPU:代表进程占用CPU时间与总时间的百分比
%MEM:占用内存占总内存的百分比
VSZ:占用虚拟内存的空间
RSS:占用物理内存的空间
TTY:代表终端(?表示未知或不需要终端)
STAT:代表进程状态
START:代表进程启动时间
- R:代表该进程正在运行
- S:代表该进程睡眠状态
- T:代表该进程已经停止运行
- Z:代表该进程已经停止,但依旧在使用系统资源,称为僵尸进程
- <:高级优先
- N:低级优先
- S:父进程
- +:前台进程
START:代表进程启动时间
TIME:代表进程占用了CPU运作的多长时间
COMMAND:代表该进程是由哪个程序发起的
top命令–查看进程动态信息
top内容解析:
第一行:
top -
14:50:29 代表当前系统时间
up 41min, 系统运行多长时间啦
2 users, 当前登陆用户数
load average: 0.00, 0.01, 0.05 系统的平均负载(每1,5,15MIN的平均负载)
第二行:
Tasks: 237 total, 总得进程数
1 running, 正在运行的进程数
236 sleeping, 睡眠状态的运行数
0 stopped, stop状态的运行数
0 zombie 僵尸状态的运行数
第三行:
%Cpu(s): CPU状态信息
0.7 us, 代表用户空间占CPU额百分比
0.0 sy, 内核空间占用CPU的百分比
0.0 ni, 改变过优先级的进程占用CPU的百分比
99.3 id, 空闲CPU百分比
0.0 wa, IO等待占用CPU的百分比
0.0 hi, 硬中断占用CPU的百分比
0.0 si, 软中断占用CPU的百分比
0.0 st
第四行:
KiB Mem: 内存信息
2031888 total, 总内存
806420 used, 已经使用的
738412 free, 空闲的
487056 buffers 缓存的内存量
第五行:
KiB Swap: 交换分区信息
2097148 total, 总量
2097148 used, 使用占有量
0 free. 空闲交换分区量
1079092 cached Mem 穿冲区交换分区总量
第六行:空行
第七行:
PID 进程ID号
USER 进程属主
PR 进程优先级
NI 同上,负值越低优先级越高,也就是负值的优先级高于正直的优先级
VIRT 代表进程使用的虚拟内存量
RES 进程占用的物理内存量
SHR 共享内训大小
S 进程状态
%CPU 进程CPU时间占用比
%MEM 进程MEN占用比
TIME+ 进程运行时间
COMMAND 进程命令
top常用选项:
选项 | 解释 |
---|---|
p | 根据CPU占用情况对进程列表进行排序 |
M | 根据内存占用情况进行排序 |
N | 根据启动时间进行排序 |
h/? | 进行帮助信息查看 |
k | 结束进程(9:强制结束进程) |
r | 修改优先级(NI) |
q | 正常退出 |
pgrep命令–查询进程信息
根据特定条件查找进程PID信息
选项 | 解释 |
---|---|
-l | 列出进程的名称 |
-U | 根据进程所属的用户名进行查找 |
-t | 根据进程所在终端进行查找 |
pstree命令–查看进程树
pstree命令可以输出Linux系统中各进程的树形结构,更加直观的判断出各进程之间的相互关系(父、子进程),默认情况下只显示各进程的名称
选项 | 解释 |
---|---|
-p | 列出对应的PID号 |
-u | 列出对应的用户名 |
-a | 列出完整的命令信息 |
kill/pkill命令–终止进程
kill:用于终止指定PID号的进程(-9强制终止进程)
killall:用于终止系统中具有多个相同名称的进程(-9强制终止进程)
pkill:可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程
选项 | 解释 |
---|---|
-U | 指定用户 |
-t | 指定终端 |
控制进程
手工启动
- 前台启动:用户输入命令直接执行程序
- 后台启动:在输入命令尾部加“&”符号(进程启动会会直接进入后台运行,而不占用前台的命令操作界面)
jobs:查看处于后台的任务列表
fg:将处于后台的进程恢复到前台运行,需要指定任务序列号
调度启动
at–一次性计划任务
使用at命令,设置在某个特定的时间点,执行一次任务
格式:at [HH:MM] [yyyy-mm–dd]
在指定的日期,时间点自动执行预先设置好的一些命令操作
服务脚本:/etc/init.d/atd
atq命令:查看计划任务列表,但不能查看具体信息
atrm命令:atrm+计划任务的编号
删除一次性计划任务
crontab–周期性计划任务
服务脚本:/etc/init.d/crond
全局配置文件:/etc/crontab
系统默认设置文件:/etc/cron.*
用户定义的设置文件:/var/spool/cron/username
crontab -e [-u username] 创建周期性计划任务
crontab -l [-u username] 查看周期性计划任务
crontab -r [-u username] 删除周期性计划任务
crontab任务的配置格式:
分钟 小时 日期 月份 星期 command
分钟:取值为0-59之间的任意整数
小时:取值为0-23之间的任意整数
日期:取值为1-31之间的任意整数
月份:取值为1-12之间的任意整数
星期:取值为0-7之间的任意整数,0和7代表周天
command:要执行的脚本或者命令
时间数值的特殊表示方法:
* 代表该范围内的任意时间
,代表间隔的多个不连续的时间范围
- 代表一个连续的时间范围
/ 代表间隔的时间频率