基础篇:《李明老师讲Linux笔记》之Linux进程管理

基础篇:《李明老师讲Linux笔记》之Linux进程管理

基础篇:《李明老师讲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 【计划任务】

未经允许不得转载:好玩吧 » 基础篇:《李明老师讲Linux笔记》之Linux进程管理