系统进程(Syetem Process ,又叫Daemon Process),不依赖于终端或用户的进程。用ps命令查询时,在TTY字段处显示为“?”。
一、Unix5最先启动的几个系统进程为:
1. sched:PID=0
? UNIX核心创建的第一个进程
? 系统启动时创建其他系统进程
? 负责进程在swap和memory之间的切换(进程调度)
2. init:PID=1
? 初始化boot和login进程
? 所有用户进程的“祖先”(ancestor)
? 所有非sched创建的系统进程的“祖先”(ancestor)
3. vhand:PID=2
? 将memory中较少使用的页移入swap 区。
4. dbflush:PID=3
? 在一定的时间间隔将“buffer cache”中的内容刷新至硬盘。
5. kmdaemon:PID=4
? 管理保留内存池,以备服务进程中断时取用
6. htepi_daemon:PID=5
? 处理“ht filesystem driver ” 的异步日志文件的修改
二、对init进程的说明:
init首先完成/etc/default/boot,然后再执行/etc/inittab中的指令。在从/etc/inittab中取得运行模式前,它首先派生一个shell完成下列工作:
/etc/bcheckrc 检查根文件系统
/etc/ifor_pmd 执行注册管理程序(许可证管理)
/etc/smmck 检查TCB(Trusted Computing Base database) /etc/auth,/tcb
若选择了多用户模式,init继续派生一个shell执行下列工作:
/etc/asktimerc,/etc/authchkrc(作用同smmck,只是smmck运行于单用户)
进程管理的两个命令(PS,Sar)
常用的几个命令主要有:
一、 PS
我们可以用ps 的 – l 选项,得到更详细的进程信息.
? F(Flag):一系列数字的和,表示进程的当前状态。这些数字的含义为:
00:若单独显示,表示此进程已被终止。
01:进程是核心进程的一部分,常驻于系统主存。如:
sched、 vhand 、bdflush 等。
02:Parent is tracing process.
04 :Tracing parent's signal has stopped the process; the parent is waiting ( ptrace(S)).
10:进程在优先级低于或等于25时,进入休眠状态,而且不能用信号唤醒,例如在等待一个inode被创建时
20:进程被装入主存(primary memory)
40:进程被锁在主存,在事务完成前不能被置换 e
? S(state of the process )
O:进程正在处理器运行
S:休眠状态(sleeping)
R:等待运行(runable)
I:空闲状态(idle)
Z:僵尸状态(zombie)
T:跟踪状态(Traced)
B:进程正在等待更多的内存页
? C(cpu usage):cpu利用率的估算值
二、 Sar:统计单CPU系统的系统活动情况
Cpusar:多处理器系统中单个处理器的活动情况
Mpsar:多处理器系统中处理器的总体活动情况
? Sar -u:检查是否有逃逸进程大量占用CPU
此命令的显示有四个字段,含义如下:
%usr:执行用户进程的时间
%sys:执行系统进程的时间
%wio:等待完成I/O的时间
%idle:空闲时间
显示结果分析说明:
1) 一般情况下,%usr与%sys的值基本相等
2) 在一般的多用户系统中,%idle通常大于40%
3) 若%wio经常>15%,意味着硬盘有可能会造成瓶颈
4) 若%idle经常小于30%,意味着处理器能力较弱
5) 若%idle经常小于10%,表明处理器负担过重,或者存在逃逸进程
6) 若%idle接近于0,并且%sys又远远高于%usr,则可能是因为内存短缺引起了大量的swapping和paging
? Sar -p:检查系统中是否有过多的等待进程
此命令有四个相关字段:
runq-sz:内存(memory)中可以运行的进程数
%runocc:进程进入内存等待的概率
swpq-sz:对换区(swap)中等待运行的进程数
%swpocc:进程进入swap等待的概率
显示结果分析汇总如下:
1) 若runq-sz经常大于2并且%runocc经常大于100%,意味着处理器负载过重
2) 若%swpocc不为0,表示系统已经置换出了进程。可以采用增加内存或减少缓冲的方法来减少swap和paging。
? 自动统计程序:
对系统运行状况的判断不能依赖于某个特定时期的数据,它需要一个长期的积累和收集的过程。Unix5提供了两个基于月的自动统计程序sa1(以二进制形式收集、存放于目录/usr/adm/sa中,以sadd为文件名,dd是一个数字,表示当月第几天)、sa2(以可读文本形式存放在目录/usr/adm/sa中,文件名为:sardd)。这两个命令可以通过crontab启动。相关文件位于/usr/spool/cron/crontabs下sys和 root。
? 激活自动记录:
/usr/lib/sa/sar_enable -y
? 显示记录内容:
sar –q -f /usr/adm/sa/sa10
用低优先级运行进程
nice(C)指令用於以较低的调度优先级执行命令,每个进程都有
一个 nice 值,用於计算它的优先级。nice 值在 0 到 39 范围内,
高值获得低优先级,不给实参的默认情况是 nice 值 20。超级用户
可指定负值,以提高优先级。
在注销进程後进程继续执行
後台启动的进程,默认情况下,当注销後就不再存在,但是,可
以使用 nohup(c)指令,让进程不受挂起和注销影响,得以继续
运行,例如:
$ nohup sort bigfile>sortfile &
4567
$ exit
当用户注销时,用户未用输出改向,输出将送到当前目录下的
nohup.out 文件中,如果当前目录不可写,则输出改向到
$HOME/nohup.out。
重新启动安全级精灵进程
根据 C2 安全级要求,某些精灵进程用 LUID (Login User
Identifier)标记运行,如此只能用 sd(ADM)实用程序重新启
动他们。
如果 LUID 限制有效的话(高安全级),只能用 sd(ADM),例
如 cron(C)这样的精灵,在高安全级下要 sd 重新启动它。
进程终止实用程序
需要终止实用程序时,可以通过发信息给进程,使它自杀,通常
会用在终止一些已挂起的或是运行的进程。
语法如下:
$ kill [-signal]
例如
$ kill 4411
4411:terminated
这样,只能终止运行优先级大於 25 的进程,小於 25 优先级的进
程只能在重新引导系统中撤注它。
调度单个作业执行
at(C)指令使得在某指定时间执行一组命令一次,主要用於在系统
活动较少的情况下,在预定时限(例如在半夜後或每日固定时间)
内运行指令。
要重新定向,可以使用标准输入,或可文件输入;在打入完整的
at 指令後,就会显示出将要运行的作业号与时间。
语法如下:
$ at time [date] [increment] < [filename]
任何用户都能运行一个 at 作业,但必须给予授权。
指定单个作业调度时间
时间格式为 hr:min 或 min,hr ,用 a.m 或 p.m 指定上午或下午,
有效时间包括 no on,midnight 和 now,指定日期则用「月日
〔年〕」格式,例如 Feb14。一星期那一天也可用 monday、
mon、today 或 tomorrow 代替。
.at 指令从标准输入中,读入打算在以後某一时刻所执行的命令:
$ at 14:00 Jan
sort /u/user1/file
/u/user1/sort
ctrl>d
job 61202778.a at Thu Jan 4 14:00:00 1996
记著使用时,要用全路径名指定文件。指令输出以电子邮件发送
给用户,也可输出改向到文件或终端。
列出单个调度作业
使用命令
$ at -1
job 612027780.a at Wed Jan 24 08:43:00 1996
job 612027900.a at Wed Jan 24 08:43:00 1996
若指定 jod_id,一般用户会得到一张自己所有作业的表,根用户
则能取得全部作业的表。
撤消单个调度作业
使用以下指令撤消作业:
$ at -r
可以使用匹配符撤销多个作业。at 的作业存放在
usr/spool/cron/atjobs
在一般数据库上调度作业
用 crontab (C)指令,从指定文件或标准输入拷贝或编辑成用户
的 crontab 文件,该文规定了在指定日期和时间调度运行一些指
令。
crontab 指令提供了对 cron 系统精灵要执行的作业,清理 /tmp ,
撤销在一般数据上日记文件或不想要的文件,以及检查空间,邮
寄警告予用户等。
/usr/lib/cron/cron.allow 文件列出了能使用 cron 的用户,
/usr/lib/cron/cron.deny 文件列出了拒绝存取 cron 的用户,仅
当 cron.allow 文件不存在时,cron.deny 文件才起作用。
指定作业及其调度时间
作业可能是单个指令或包含多道指令的 shell 脚本,指令输出邮
寄给用户,也可输出改向到文件或终端。在文件中打入作业及运
行时间,以运行此作业。文件可取任何名字,但是,不允许包括
首尾部和空白行,而且,最好取 .cronfile ,这种取名反映其功
能,易记易理解。.cronfile 文件可用正文编辑或 vi 创建。
每个用户仅提供一个 .cronfile文件,每当执行 crontab 指令时,
新文件会盖写原先文件。编辑已存在的 .cronfile 文件,增加或
修改一个作业,然後用 crontab 重新提交 .cronfile 。而每个用
户的登记项会存放在/usr/spool/crontabs/。
列出或修改 cron 作业
要列出当前提供的 cron 作业,可以打入:
$ crontab -1
修改 cron 项,使用指令:
$ crontab -1 >.cronfile
$ vi .cronfile
$ crontab .cronfile
如要撤销 cron 作业,则打入:
$ crontab -r
但有一样,请留意,根用户没有 .cronfile 文件。
shenyf 回复于:2004-03-04 22:43:19 |
[img:5a2b7a82f8]http://www.eoshow.com/images/cn/hao.gif[/img:5a2b7a82f8],顶[img:5a2b7a82f8]http://www.eoshow.com/images/cn/gantan.gif[/img:5a2b7a82f8]
----------------------------------------------------------- 以上文字、图由易我秀输出,你也想这么酷吗? http://www.eoshow.com/download/install1.html |
ld1949 回复于:2004-03-05 13:51:34 |
好文章!对启动过程有了一个初步了解,谢谢 :lol: |
scgypt123 回复于:2004-03-05 22:36:46 |
好文章!对启动过程有了一个初步了解,谢谢 |
jzfenglx 回复于:2004-03-11 11:49:44 |
I wnat get it ! |
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/