前言
程序(有一个固定的路径)——二进制文件(比如公司)
保存在硬盘、光盘等介质中的可执行代码和数据
静态保存的代码
进程——程序运行的过程,有生命周期及运行状态(比如部门)
在CPU及内存中运行的程序代码
动态执行的代码
父、子进程(一个程序可以创建一个或多个进程)
每个程序可以创建一个或多个进程
区别:进程是自动台的,程序是静态的
线程(比如员工)与进程:
资源分配与调度
进程是资源调配的基本单位
线程是程序执行的最小单位
一、查看进程信息
1.1ps 查看静态的进程统计信息
1.1.1ps -aux
STAT:
D:不可被唤醒的休眠状态;
R:正在运行状态;
S:处于休眠状态,可被唤醒;
T:停止状态,可能是在后台暂停或进程处于跟踪调试状态;
Z:僵厂进程,进程己经中止,但是部分程序还在内存当中 ,但其父进程无法正常中止它
僵厂进程: 僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。如果父进程先退出 ,子进程被init接管,子进程退出后init会回收其占用的相关资源
结合grep过滤查询
由于系统中运行的进程数量较多,需要查询某一个进程的信息时可以结合管道操作和grep命令进行过滤。例如,执行以下操作可以过滤出包含“bash”的进程信息
1.1.2ps -elf
1.2查看动态的进程排名信息——top
动态查看进程 top
可以用ctrl +c 停止查询
1.2.1利用按键更加清晰查看进程
1.2.2各行信息的含义
第一行:任务队列信息
第二行:系统进程信息
第三行: CPU占用信息
第四行:内存占用信息
第五行:为交换空间的信息
进程信息区各列解释
1.3pgrep命令— 根据特定条件查询进程PID信息
常用选项
1.4pstree命令—查看进程树
pstree命令可以查看当前系统的进程树,包括个各进程对应的PID号、用户名、完整命令等信息
常用选项:
二、进程的启动与控制
2.1控制进程
进程启动方式为手工启动和调度启动
2.1.1手工启动
前台启动:用户输入命令,直接执行程序
后台启动:在命令行尾加入“&”符号
当使用cp命令从光盘中制作镜像文件时,由于需要复制的数据较多,耗时较长,因此可结合“&”符号将复制操作放到后台运行,以便用户可以继续执行其他命令操作
用户必须等到该进程执行结束并退出以后才能继续输入其他命令,大多数命令操作在前台启动运行。进程在后台运行时,用户可以继续在当前终端中输入其他命令,而无须等待该进程结束,适用于运行耗时较长的操作。启动后台进程需要使用“&”操作符,将“&”操作符放在要执行命令的最后面,进程启动后会直接放入后台运行,而不占用前台的命令操作界面,方便用户进行其他操作。查看时需要在同一终端中
2.1.2调度启动
使用at命令,设置一次性计划任务
使用crontab命令,设置周期性计划任务
在服务器维护工作中,经常需要执行一些比较费时而且较占用资源的任务(如数据备份),这些任务更适合在相对空闲的时候(如夜间)进行。这时就需要用户事先进行调度安排,指 定任务运行的时间,当系统到达设定时间时会自动启动并完成指定的任务。调度启动的计划 任务进程均在后台运行,不会占用用户的命令终端。进程的调度启动可以通过 at、crontab 命令进行设置,其中 at 命令用于设置一次性(如12:15 时重启网络服务)计划任务,crontab 命令用于设置周期性运行(如每周五 17:30 备份数据库)的计划任务。
2.2进程的前后台调度
Ctrl+Z组合键
将当前进程挂起,即调入后台并停止执行
jobs命令
jobs [-l]
查看处于后台的任务列表
fg命令
将后台进程恢复到前台运行,需要指定后台进程的任务编号作为参数
bg(BackGround,后台)命令
可以将后台中暂停执行(如按 Ctrl+Z 组合键挂起)的任务恢复运行,继续在后台执行操作需要指定后台进程的任务编号作为参数
[root@localhost ~]# jobs
[1]- Stopped cp /dev/cdrom mycd.iso
[2]+ Stopped top
[root@localhost ~]# fg 1
2.3终止进程的运行
Ctrl+C组合键
中断正在执行的命令
kill、killall命令
kill用于终止指定PID号的进程
killall用于终止指定名称相关的所有进程
-9选项用于强制终止
pkill命令
根据特定条件终止相应的进程
常用命令选项
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应程序
三、计划任务管理
3.1at命令一次性计划任务
at [HH:MM] [yyyy-mm-dd] #不带年月日为今天执行
at>需要执行的指令
at>
#Crtl+D键可以提交任务
job 1 at xxxxxxxxxx
atq #查看未执行的一次性计划任务
atrm 4 #删除第4条任务
3.2crontab周期性计划任务
按照预先设置的时间周期(分、时、日、月、周)重复执行用户指定的命令操作
属于周期性计划任务
主要设置文件
全局配置文件,位于文件:/etc/contab
系统默认的设置,位于目录:/etc/cron.*/
用户定义的设置,位于文件:/var/spool/cron/用户名
3.2.1管理crontab计划任务
编辑计划任务
crontab -e [-u 用户名] ## -u缺省时默认是针对当前用户,只有超级用户才可以用-u
查看计划任务
crontab -l [-u 用户名]
删除计划任务
crontab -r [-u 用户名]
crontab:守护进程会自动检查/etc/crontab文件,/etc/cron.d目录,及/var/spool/cron目录中的改变,如果发现配置有更改,他们就会被载入内存,所以当某个crontab文件改变后并不需要重新启动crond守护进程就可以设置生效
3.2.2crontab任务配置的格式
星期的数字为 0 或 7 时,都代表“星期天”的意思
时间周期设置 任务内容配置 命令一定要用绝对路径 例如:ls命令一定要用/usr/bin/ls ,可以which查看绝对路径
比如你要使用ls命令首先先要查看一下cp命令的位置(which cp)
总结
1、掌握程序、进程、线程
2、查看进程的命令:ps aux 或者ps -elf;top;pgrep;pstree;
3.如何查看子进程?pstree ap 或者 cd /proc/数字文件中的/stat
4.启动进程:前台启动;后台启动(命令最后加&)
查看后台任务列表:jobs
调用后台进程:fg 任务列表号
ctrl+z挂起
kill -9 进程号 PID
pkill -9 进程号 PID
killall 全部进程
at 小时:分钟 年-月-日
命令:ctrl D保存运行
atq 序号
atrm +序号
crontab -e -u 用户(不写用户默认当前用户)
crontab -l -u 用户
crontab -r -u 用户
格式:分 时 日 月 周 如果忘记可以查看cat /etc/crontab
*代表任意
, 不间隔的时间,比如1,2,4 可以是每隔周几
— 连续的时间 ,例如:1-7
/ 间隔的频率 1/* 每个一分钟 1/* 每隔一个小时 1/* 每隔一天 1/* 每隔一个月