基础篇:《李明老师讲Linux笔记》之Linux进程管理
*************课程大纲**********************
进程的概念
进程管理命令
计划任务
*************进程和程序的区别**********************
1.程序是静态概念,进程是程序执行的过程。。。
2.程序和进程无一一对应关系,一个程序可以有多个进程;一个经常在活动中有课顺序的执行若干任务。
*************父进程与子进程**********************
1.子进程是由一个进程所产生的,产生这个子进程的进程称为父进程
2.在linux系统中,使用fork创建进程。fork复制父进程的数据库和堆栈段
3.父进程终止子进程自然终止。
前台进程
shell提示处打入命令后,创建一个子进程,运行命令,shell等待命令退出,然后返回到对用户给出提示符。这条命令与shell异步运行,既在前台运行,用户在它完成之前不能执行另一个命令。
后台进程
在shell提示处打入命令,若后随一个&,shell创建的子进程运行此命令,但不等待命令退出,而直接返回对用户提示,这条命令与shell同步运行,既在后台运行。后台进程必须是非交互式的。
进程的状态 1.就绪状态 2.运行状态 3.等待状态
进程状态细化:10种。(了解)
*************查看用户信息w**********************
w 【显示信息的含义】
JCPU:一终端代号来区分,该终端所有相关的进程执行时,所消耗的CPU时间会显示在这里
PCPU:CPU执行程序耗费的时间
WHAT:用户执行的操作
load average: 0.04, 0.07, 0.02 【平均负载值】
w+[用户名] 查看个别用户信息
***********查看系统中的进程ps************************
ps 【查看进程相关信息】
常用选项:
a:显示所有用户的进程
u:显示用户名和启动时间
x:显示没有控制终端的精彩
e:显示所有进程,包括没有控制终端的进程
l:长格式显示
w:宽行显示,可以使用多个w进行加宽显示。
实例:
#ps 【查看隶属于自己的进程】
#ps -u 或者 ps -l 【查看隶属于自己进程详细信息】
#ps -le 或者 ps -aux 【查看所有用户执行的进程的详细信息】
#ps -aux –sort pid 【可按进程执行的时间PID 、UID等对进程进行排序】
PID 【进程号】
PPID 【父进程】
TTY 【进程启动的终端】
STAT 【当前状态 S:休眠 D:不可终端的休眠状体 R:运行状态 Z:僵死状态 T:停止】
NI 【优先级】
TIME 【进程启动以来占用cpu总时间】
COMMAND/CMD 【进程的命令名】
USER 【用户名】
%CPU 【占用cpu时间和总时间的百分比】
%MEM 【占用内存与系统内存总量的百分比】
#ps -le | grep httpd
#ps -uU www 【查看www用户启动的进程】
#pstree | more 【查看所有进程树状结构信息】
***********杀死进程 kill************************
为什么要杀死进程?
用法:
kill + pid
kill -9 进程号 【强行关闭】
kill -1 进程号 【重启进程】
xkill 【关闭图形程序】
killall 【结束所有进程】
pgrep 服务名称 【查找进程服务号】
pkill 进程名称 【关闭进程】
#ls /proc 【每个进程所存放在目录中】
#cat /proc/cpuinfo 【查看cpu信息】
#cat /proc/meminfo 【查看内存信息】
#cat /proc/partitions 【分区信息】
#pgrep httpd 【查看httpd进程号】
***********优先级命令 nice和renice************************
nice 【指定程序的运行优先级】
格式:nice -n command
例如:nice -5 myprogram [改变优先级为5 -表示选项]
nice –5 myprogram [改变优先级为-5 ]
renice 【改变一个正在运行的进程的优先级】
格式:renice n pid
例如:renice -5 777
优先级范围取值为(-20,19) 优先级值越小,进程越排列前
#nice –5 /etc/rc.d/init.d/httpd start
#ps -le | grep httpd
***********后台运行 nohup************************
使进程在用户退出登陆后仍然继续执行,nohup命令将执行后的数据库信息和错误信息默认储存到文件nohup.out中
格式:
nohup program &
nohup find / -name init* > /root/find.init & 【后台执行程序,将结果写入指定文件中】
***********进程的挂起和恢复************************
Ctrl+Z 【挂起,暂停】
Ctrl+C 【终止】
进程的恢复
fg 【恢复到前台继续运行】
bg 【回复到后台继续运行】
jobs 【查看被挂起的进程jobs】
***********进程状态显示top************************
top 【进程状态显示和控制,每五秒自动刷新一次】
常用选项:
d:指定刷新时间间隔。
c:显示整个命令行而不仅仅显示命令名。
u:查看指定用户的进程
h或者? 获取帮助
r:重新设置进程优先级
s:改变刷新时间间隔
W:将当期设置写入~/.toprc文件中
q 退出
***********计划任务************************
计划任务的命令
at 【安排作业在某一时刻执行一次】
batch 【安排作业在系统负载不重时执行一次】
cron 【安排周期性的作业】
***********at命令的功能和格式************************
功能:安排一个或者多个命令在指定的时间运行一次。
测试中发现在centos6.5 mini版中没有自带at服务,因此需要自己通过下载
# yum -y install at
用法和参数
at [-f文件名] 时间
at -d or atrm 【删除队列中的任务】
at -l or atq 【查看队列中的任务】
at命令指定时间的方式
1.绝对计时方法
midnight moon teatime
hh:mm[today]
hh:mm tomorrow
hh:mm 星期
hh:mm MM/DD/YY
2.相对计时方法
now + n minutes now + 3 ninutes
now + n hours
now + n days
指定在今天下午17:30执行某命令(假设现在时间是下午14:30,2011年1月11日)
命令格式如下:
at 5:30pm
at 17:30
at 17:30 today
at now + 3 hours
at now + 180 minutes
at 17:30 11.1.11
at 17:30 1/11/11
#at now + 3 minutes
at> /user/bin/wall < /etc/motd 【安全起见使用绝对路径】
【crtl+d保存】
finger root 【查看命令】
ps -le | grep atd
每一个用户都可以使用at
配置文件
/etc/at.allow
/etc/at.deny
两个文件都存在而且为空,所有用户都可以使用at。 把2个文件删掉,那么只有root用户可以使用at
***********batch命令************************
作用:安排一个或者多个命令在系统负载教轻时运行一次(一般情况下负载0.8以下,才会执行)
使用方法同at。
***********crontab命令格式************************
作用:用于生成cron进程所需要的crontab文件
crontab命令格式
carontab {-l|-r|-e}
-l 【list显示当前的crontab】
-r 【删除当前的crontab】
-e 【edit使用编辑器编辑当前的crontab文件】
crontab -e
把知道的具体时间填上,不知道的都填上*
分钟 小时 天 月 星期 脚本/命令
0 4 * * * [命令] 【每天四点执行】
0 18 * * 2,5 [命令] 【每个星期2,星期5执行】
0 18 * 1-3 2,5 [命令] 【1至3月每个星期2,星期5执行】
30 17 * * 1-5 /user/bin/wall < /root/read.txt 【周一到周五17:30,发一份read.txt广播】
45 17 * * 1-5 /sbin/shutdown -h now 【周一到周五17:45,关机】
*/2 12-14 * 3-6,9-12 1-5 /bin/cp -r /etc/backup/etc.2011011 2>/backup/etc.bak.err >/dev/null
【每隔两分钟,12至14点 ,3月至6月 9-12月 周一至周五】
书写注意事项
这些项都不能为空,必须填入
如果用户不需要指定其中的几项,可以使用通配符 *表示任意时间
没个时间字段都可以指定多个值,他们之间用逗号间隔
命令应该给出绝对路径
用户必须具有运行所对应的命令或程序的权限。
计划任务保存:
/var/spool/cron/root
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
***********进程处理方法************************
standalone 【独立运行:占用系统资源,应答快速】
xinetd 【进程托管:】
atd 、crond 【计划任务】