引言:在生产环境工作中我们需要需要定时的进行文件的增删改查,每一次都人工操作比较繁琐所以我们可以制定一次性任务或周期性任务计划。
一:程序和进程的关系
1.1程序
保存在硬盘、光盘等介质中的可执行代码和数据
静态保存的代码
1.2进程
在CPU及内存中运行的程序代码
动态执行的代码
父、子进程:每个程序可以创建一个或多个进程
二:查看进程信息
2.1ps——查看静态的进程统计信息
2.1.1ps——aux
常用的参数
-a:显示当前终端下的所有进程信息,包括其他用户的进程。与"x"选项结合时将显示系统中所有的进程信息
-u:使用以用户为主的格式输出进程信息
-x:显示当前用户在所有终端下的进程信息
常用的选项组合
ps -aux 将以简单列表的形式显示出进程信息
上述输出信息中,第一行为列表标题,其中各字段的含义描述如下
USER:启动该进程的用广胀号的名称
PID:该进程在系统中的数字ID号,在当前系统中是唯一的
%CPU: CPU占用的百分比
%MEM:内存占的百分比
VSz:该进程使用的虚拟内存量(KB)
RSS:该进程占用的物理内存量(KB)
TTY:表明该进程在哪个终端上运行,不是从终端启动的进程则显示为?
STAT:该进程的状态D: 无法中断的休眠状态 (通常 IO 的进程);R: 正在执行中;S: 静止状态;T: 暂停执行;Z: 不存在但暂时无法消除;W: 没有足够的记忆体分页可分配;<: 高优先序的行程;N: 低优先序的行程;L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
START:启动该进程的时间
TIME:该进程占用的cpu时间
COMMAND:启动该进程的命令的名称
2.1.2ps——elf
常用的参数
-e:显示系统内的所有进程信息
-1:使用长格式显示进程信息
-f:使用完整的格式显示进程信息
常用的选项组合
ps -elf 将以长格式显示系统中的进程信息
F:内核分百给进程的系统标记
S:进程的状态
UID:启动这些进程的用户
PID:进程的进程ID
PPID:父进程的进程号(如果该进程是由另一"个进程启动的)
C:进程生命周期中的CPU利用率
PRI:进程的优先级(越大的数字代表越低的优先级)
NI:谦让度值用来参与决定优先级
ADDR:进程的内存地址
SZ:假如进程被换出,所需交换空间的大致大小
wCHAN:若该进程在睡眠,则显示睡眠中的系统函数名
STIME:进程启动时的系统时间
TTY:进程启动时的终端设备 _pts/0255代表虚拟终端,一般是远程连接的终端;tty1tty7代表本地控制台终端
TIME:运行进程需要的累计CPU时间
CMD:进程的启动命令
进程状态:
-D:不可被唤醒的睡眠状态,通常用于 I/o 情况
-R:该进程正在运行
-s:该进程处于睡眠状态,可被唤醒
-T:停止状态,可能是在后台暂停或进程处于除错状态
-W:内存交互状态(从2.6内核开始无效)
-x:死掉的进程(应该不会出现)
-Z:僵尸进程 进程已经中止,但是部分程序还在内存当中
-<:高优先级(以下状态在BSD格式中出现)
-N:低优先级
-L:被锁入内存
-s:包含子进程
-I:多线程(小写L)
-+:位于后台
-C:进程占用CPU的百分比
2.2top——查看动态的进程排名信息
系统任务Tasks:total:进程总数;running:正在运行的进程数;sleeping:睡眠的进程数;stopped:停止的进程数;zombie:僵尸进程数;
CPU占用%CPU(S):us:系统用户进程使用cpu百分比;sy:内核中的进程占用cpu百分比,优先级调度使用;ni:用户进程空间内改变过优先级的进程占用cpu百分比;id:空闲cpu百分比;wa:cpu等待I/O完成的时间总量;hi:硬中断占的cpu百分比;si:软中断占的cpu百分比;st:虚拟化占用;
内存占用Kib Mem:total:物理内存总量;free:空闲内存总量;used:使用的物理内存总量;buff/cache:用作内核缓存的内存量;
交换空间Kib Swap:total:交换区总量;free:空闲交换区总量;used:使用的交换区总量;avail Mem:总的可利用内存是多少;
PID:进程id
USER:进程所有者的用户名
PR:优先级
NI:进程优先级
VIRT:虚拟内存,是进程正在使用的所有内存
RES:进程使用的物理内存
SHR:共享内存大小
S:进程状态
%CPU:上次更新到现在的CPU时间占用百分比
%MEM:进程使用的物理内存百分比
TIME+:进程使用的CPU时间总和
COMMAND:命令名/命令行
top命令全屏操作界面快捷键
默认3s刷新一次,按s修改刷新时间按空格:立即刷新
P:按CPU 排序
M:按内存排序
T:按时间排序
p:进程IP,查看某个进程状态
N:根据启动时间进行排序
数字键1:显示每个内核的CPU使用率
U:指定显示的用户
h :可以获得top程序的在线帮助信息
q:可以正常地退出top程序
2.3pgrep——根据特定条件查询进程PID信息
常用的参数
-I:选项可同时输出对应的进程名以及PID
-U:选项查询特定用户的进程
-t:选项查询在特定终端运行的进程
2.4pstree——以树形结构列出进程信息
常用的参数
-p:选项使用时可以同时列出对应的PID号
-u:选项可以列出对应的用户名
-a:选项可以列出完整的命令信息
执行 pstree -aup可以查看当前系统的进程树,包括各进程对应的PID号,用户名,完整命令等信息。
三:进程的启动方式
3.1手工启动
前台启动:用户输入命令,直接执行程序
后台启动:在命令行尾加入“&”符号
3.2调度启动
使用at命令,设置一次性计划任务
使用crontab命令,设置周期性计划任务
四:进程的前后台调度
4.1Ctrl+Z组合键
将当前进程挂起,即调入后台并停止执行
当Linux操作系统中的命令正在前台执行时(运行尚未结束),按ctrl+z组合键可以将当前进程挂起(调入后台并停止执行),这种操作在需要暂停当前进程并进行其他操作时特别有用。例如,打包usr并且调入后台,可以按ctrl+z组合键将该下载任务调入后台并暂停执行
4.2jobs
查看处于后台的任务列表
-l:选项可以同时显示该进程对应的PID号
jobs -I
4.3fg命令
将后台进程恢复到前台运行,可指定任务序号
fg 1
五:终止进程的运行
5.1Ctrl+C组合键
中断正在执行的命令
5.2kill,killall命令
kill用于终止指定PID号的进程
常用选项为-9(强制终止)
kill -9 PID号
kill -1 重新加载进程
kill -3 杀死并退出进程
kill -9 强制终止
kill -19 停止/暂停
killall用于终止指定名称的所有进程
killall 进程名称
5.3pkill命令
根据特定条件终止相应的进程
常用命令选项
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程
六:计划任务管理
6.1at——一次性计划任务
at【HH:MM】【yyyy-mm-dd】
atq:查看未执行的任务列表
atrm:删除任务
6.2crontab——周期性计划任务
按照预先设置的时间周期(分钟,小时,天......)重复执行用户指定的命令操作
属于周期性计划任务
主要设置文件
1.全局配置文件,位于文件:/etc/crontab
2.系统默认的设置,位于目录:/etc/cron.*/
3.用户定义的设置,位于文件:/var/spool/cron/用户名
Crontab:守护进程会自动检查/etc/crontab文件,/etc/cron.d目录及/var/spool/cron/目录中的改变,如果发现配置有更改,它们会被载入内存,所以当某个crontab文件改变后并不需要重新启动crond守护进程就可以设置生效。
6.2.1管理crontab计划任务
编辑计划任务:crontab -e 【-u 用户名】
查看计划任务:crontab -l 【-u 用户名】
删除计划任务:crontab -r 【-u 用户名】
6.2.2crontab任务配置的格式
时间数值的特殊表示方法
*:表示该范围内的任意时间
,:表示间隔的多个不连续时间点
-:表示一个连续的时间范围
/:指定间隔的时间频率
应用示例
0 17 * * 1-5 周一到周五每天17:00
30 8 * * 1,3,5 每周一,三,五的8点30分
0 8-18/2 * * * 8点到18点之间每2小时
0 * */3 * * 每三天
示例:
七:总结
通过上述的命令,我们可以汇总得到查看进程的命令有(ps(静态),top(动态),pgrep,pstree)和进程和程序之间的关系。进程之间前后台的调度,at命令是设置一次性计划任务,在生产环境下相对用的较少,crontab命令是设置周期性计划任务,在生产环境下相对用的较多,设置计划任务可以定期备份web数据库,定期采集检测数据,比较方便。