菜鸟必读(第七,八,九,十讲)

发表于:2007-06-09来源:作者:点击数: 标签:
第七讲:监视进程管理 程序是一个可执行文件(Process)是正在运行程序一个实例。 SystemV支持许多进程同时运行,各种系统通过调用可用进程 去创建新进程,与其他进程通讯,以及终止其他进程。进程族系 新进程创建时,内核会分配一个进程标识号(PID)给它,

第七讲:监视进程管理 

程序是一个可执行文件(Process)是正在运行程序一个实例。 
System V支持许多进程同时运行,各种系统通过调用可用进程
去创建新进程,与其他进程通讯,以及终止其他进程。 进程族系 
新进程创建时,内核会分配一个进程标识号(PID)给它,并对 进程表中添加说明讯息。 
由一个进程创建另一新进程,老进程为父进程,新进程为子进程。 
用户Shell执行的大多数命令又是它的子进程,子进程则运行命令。 
而父进程允许有多个子进程来实现任务等,待子进程完成。一个 
父进程可以有多个子进程,但是,一个子进程只有一个父进程。 

前台及後台进程 
在Shell提示处打入命令後,创建一子进程运行命令,Shell等待 
命令退出,然回到对用户提出提示符,这道命令与Shell同步运行, 即在前台运行。 
在Shell提示处打入的命令,若随一个&,Shell创建的子进程运行此命令,但不等待 
命令退出,而直接返回到对用户提出提示。这道命令与Shell同步运行,即在台运行。 
$sleep 10 & 

精灵进程 
精灵进程是一个进程,它与终端和用户都无联系,也有人喜欢称 
他为管家婆。精灵完成一些周期性的事,平时它睡眠。用ps (C) 
命令可看到精灵,它在tty区域中带有问号(?)。 
-Sched:PID 
0,它完成进程的程序在存储局和盘交换局之间交 换工作。 
-init:PID 
1,系统自动建的第一用户进程,它负责初始化引导和注册过程,也就是所有 
非系统进程的祖先。它会在终端口上, 启动getty (M)进程。 
-vhand:PID 
2,页面精灵,它频繁地把储页面内容送往交换区。 
-bdfush:PID 
3,定期刷新高速缓到盘(默认情况,每13秒刷 新一次) 
-logger:归档系统出错讯息。 
-cron:在调度时运行作业。 
-Ipsched:脱机打印精灵。 

孩儿进程 
孤儿进程在父进程终止仍旧活动,由init(M)认它为乾儿子。 僵尸进程则是进程已终止, 
但进程还未撤消,因为父进程并未「等待」它,进程表仍保留著这□体,进程表的□体 
是僵尸进程所 消耗的资源。 
随著新进程的创建,出现大量□体,但总数是有限制的,因此影 响新进程的产生。 
而孩儿进程与僵尸进程不同,并不会影响系统 效率。 
通常,在父进程死去时,才会移去僵尸进程。若他们还未移去, 应由init (M)继承并移去它。 
监视进程 
监视进程监注册户的数量,用以记系统的性能;亦会监视用户进程,包括挂起进程; 
以及装载均值等系统性能问题。 要显示进程信息,可以利ps(C)命令报告,进程状态。 
在默认 情况下,仅会报告与当前终端有联系的有关讯息。 
若用户没有root权限,ps仅限以说明运行进程,报告用户的进程讯息。若用户有root权 
限,则会报告在所有终端上所有用户的进程讯息。 
$ ps-u joana 
--u 〈username〉选项显示指定用户的讯息。 
--t 〈ttynamt〉选项显示指定终端有关的进程讯息。 
而ps -elf命令则提供了需有F、S、C、PRI、NI、TIME字段的 使用讯息。 
-F是标记,指示进程位置,20表示在内存,0表示交换在盘上, 31是系统进程。 
-S是状态讯息,指示进程状态,睡眠还是正在运行。 
-C是进程占有CPU的百分率 
-TIME是花费CPU的总时间。 
-PRI是进程当前优先数 
-NI是进程的nice 
(ADM)菜单 
如何创建进程 
当进程分岔一个子进程,自己就会进入睡眠状态。开始时,子进程运行父进程 
的同一程序,由内核分配一个新的PID。当子进程再去执行新的程序,保持新分 
配的PDI,新程序就会替代子进程 的原先程序。 
当子进程完成後,内核会把它从系统中移去,再唤醒父进程,子进程就会退出。 

监视系统装载 
uptime(C)命令显示装载均值(一分钟、五分钟和十五分钟), 
即在预定时间上,排队运行进程的平均数: 
$uptime W(C)命令产生如uptime(C)一样的装载均值讯息,并显示谁在 
系统上做甚麽,若用户拥有root权限,W报告所有用户的有关讯 息。 若没有 
,仅显示与用户进程有关竹的讯息。 
PCPU(Process CPU,进程CPU时间 )显示某道特定命令已运行多久了。 
对控制不了的进程,这种检查是很有用的。 
JCPU( JointCPU,连合CPI时间),显示一个终端所涉的所有进程的总时间。 
sar(ADM)命令是一个系统活动报告程序,显示系统资源累积 利用率。 
为指示系统瓶颈口(Bottleneck),sar是非常好的实 用程序,命令语法如下: 
$sar〔-option〕 〔 sample-interval-samples〕 
例如:$sar-u120 
-u选项显示CPU利用情况。如果%idle一致地低,使用效能是上升, 
不过,运行的进程偷不到未用的CPU周期。 
又例如使用-q选项显示进程吞吐量。假若%swpoclearcase/" target="_blank" >cc大於20,就发生 
交换(Swapping),可以使用大内存能减少交换 /请负活动。 


第八讲:管理进程 

用低优先级运行进程 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 文件。 


第九讲:TCP/IP 管理 

IP(Internet Protocol)地址是 TCP/IP网上为主机之间数据 
选择路径(交换)的基础,但是,用户通常不甚喜欢使用由数字 组成的 IP 
地址,而比较喜欢使用多由英文字母组成的主机名字 URL(Uniform Resource Location)。 
不过,主机名字必需映像到 IP 地址,而方法就是通过 /etc/hosts 文件完成。 
配置 /etc/hosts /etc/hosts的格式是:地址--名字--别名。 
例如: 127.0.0.1 localhost localhost 
132.147.18.1 vision vis.com IP 
地址必需是一行上的第一项,在它前面不应有任何字符,例如 
空格符或制表符;名字是简单的主机名字;别名则在很多情况下 
都不需要,但是,全限主机名字、简单主机名字和辖区名字都归入别名之列。 
检测 TCP/IP 配置 TCP/IP 
协议的软件部份包括 TCP/IP 协议层架的顶三级,即 应用级(Application Protocol)、 
传送级(Transport Protocol) 和网际网级(Internet Protocol)。 
特定的主机名字”Localhost”是特殊网络”loopback”上的本地主机的别名。要检测 
TCP/IP 协议层架的软件部份,使用 ping 命令: 
#ping localhost 如果 Ping localhost 失败, 
则使用 netstat -i[n],检查网络接口的状况,显示网络接口上分组传输的统计讯息, 
命令如下: 
#netstat -i[n] n选项强行显示编号,而不是名字。 
netstat 查看自环驱动器 lo0 , 如果 lo0 失败,则在 /etc/tcp 中”ifconfig lo0”行指示坏了或 
有错误。 检测 TCP/IP 硬件 审核引导过程中,会对所职别的网络接口产生的配置报告, 
而TCP/IP 协议的硬件部分包括 TCP/IP 协议层架的底两级,即 网络接口级和物理/硬件级。 
对网上另一主机的任何通讯都是在「物理」网络接口上传输,并 不会引起数据传输到 
「自环」网络上。 使用ping 命令检测 TCP/IP 协议层架的硬件部份。 
#ping hostname 或 #ping IP-address 
如果 ping 命令失败,则改用netstat -i[n] 审核网络接口,了解 netstat -i 的输出 

如果远地主机上使用 ping 之後,Opkts 和 Ipkts仍然是零,那麽, 网络接口大概使用了不同的中断(Interrupt),而不是它的设备驱动程序。 
如果 Ipkts不是零,而 Opkts 等於 Oerrs,那麽,网卡的 I/O 地址可能不正确。 
如果 Ipkts 是零,而 Opkts 等於 Oerrs,那麽,可 能是网络电缆连接的不合格。 
通过用 Opkts 除 Cloois ,再用 100 乘所得的结果,计算冲突的百份比。 
如果冲突的百份比少於百份之五到十,那麽,所有网络接 口是有效运行。 
如果 ping失败,并查出网络接口有问题,那麽,就该验证网络介 质操作。调整 
TCP/IP 的核心参数。 
没有足够的流资源(Stream Parameter),网络程序是不能进行通讯;流资源不 
充份的话,经常会导致较慢的吞吐率。 
要核查流资源,使用 netstat -m ; 
也可以使用 crash 命令考察流 资源,在出现 crash 发出的提示符’>”时,打入”strstat”。 
如果在 FAIL列的下面有不等於零的项目,那麽,同一行中的 ITEM 的项目可能需要调整。 
如果 FAIL列下的数目大於或等於 TOTAL 列中数目的百份之十,该资源每次应增加一或二, 
但不 能将该数目加倍。 
由於流资源使用RAM,当增加流资源时,应加倍小心。用户亦可以使用 configure 
或sysadmsh增加特定的流资源,重新连接核心 或重新引导。 限制通过 ftp 访问系统 
的权限。对於不想令其使用 ftp跨网访问系统的人,可以通过建立 /etc/ftpusers 文件 
和设立系统帐户名字的方法,阻止他获得利 用 ftp访问系统的权限。 
如果 /etc/ftpusers 不存在的话,先要建立。在单独的行上,加上系统帐户的名字,表明 
不能从网中其它系统使用 ftp 访问该系 统,在安全系统中,不允许 ftp 访问用户权和uucp , 
列出任何其 限制使用 ftp 的用户名字。 

第十讲:使用 TCP/IP

向远地注册的能力非常有用,它让我们不用到远地系统所在处,就能运行远地主 
机上的程序,执行远地系统管理,有两道命令可 用於远地主机注册,就是 rlogin 和 telnet。 
使用 rlogin 向远地主机注册 rlogin 允许向具有 UNIX 操作系统和 TCP/IP 协议的任何系统 
注册,而 rlogin只能注册到 UNIX 操作系统环境,命令如下: 
$rlogin remot-host-name 
要避免 rlogin 因没有提供远地主机上的同名帐户,可以使用下述 命令: 
$rolgin remote-host-name -1 remote-user-name 
-1选项用於指出远地用户帐户。 
要中止 rlogin ,则要打入 ~.,并按 Enter/Return>键; 
亦可使用 logout 或 exit命令。 
使用 Telnet 向远地主机注册不管其操作系统类型,只要能支援 TCP/IP 协议,都可以使用 
Telnet 命令,允许注册。 
$telnet hostname 或 $telnet ip-address 
使用 ftp 复制或传送文件 ftp(File Transfer Protocol)允许用户对远地主机复制文件,用户毋 
须考虑操作系统类型,即能向或从任何具有 TCP/IP 的系统复制文件。 
ftp命令允许复制目录中的一个文件或所有文件,但不能复制多层 次目录。使用ftp时, 
必需在远地主机上设有帐户。 当 ftp 注册到远地系统时,并未得到 shell ,而是通过 ftp 命令 
解释程序同远地主机进行通讯。 
$ftp remote-host-name 或 $ftp remote-host-ip-address 
一旦注册成功,就会出现 ftp命令解释程序的提示。 
ftp> 用户可以在此,使用打开命令连接主机。 
ftp>open remote-host-name 
复制某一文件回自己的系统中,则用:ftp>get filename 
如果只想传送某一文件往远地主机,则用: ftp>put filename 
需要复制远地主机的全部文件进入自己的系统内,可以使用如下 命令: ftp>mget * 
相反,如果想传送自己的文件往远地主机,则使用如下命令: ftp>mput * rcmd rcmd 

允许用户不必向远地主机注册,而直接运行该主机上的命令,实际上,也要进行注册, 
只不过用户毋须作其它操作。当使用 rcmd在远地主机上运行任何命令时,其输出的默 
认设备就会被更改为 终端。 
$rcmd remote-host-name man sh 
请求特殊终端处理的命令,将不含设备自身的功能,因为对远地命令没有定义终端的类型, 
要求在远地主机上配置受托访问。 
要列表输出远地主机上磁盘的利用情况,则使用下述命令: 
$rcmd remote-host-name df 
要列表输出远地主机上的目录,使用如下命令: 
$rcmd remote-host-name ls /usr/games 
要把远地主机上的文件备份到远地主机上的袖珍磁带内时, 
命令 如下: 
#rcmd remote-host-name tar cvf /dev/rct0/usr 
或 #rcmd remote-host-name "find /usr -depth -print|cpio -oc > /dev/rct0 
要把本地系统上的文件备份到远地主机上的袖珍磁带内时, 
使用下述命令: 
#tar cvf -/usr|rcmd remote-host-name dd of=/dev/rct0 
或 #find /usr -depth -print|cpio -oc|rcmd remote-host-name dd of=/dev/rct0 
另一方面,如果要把远地主机上的文件备份到本地系统上的袖珍 磁带内时, 
可以使用如下命令: 
#rcmd remote-host-name "tar cvf -/usr" > /dev/rct0 
或 #rcmd remote-host-name "find /usr -depth -print|cpio -oc" > /dev/rct0 


********完*********







 ocean82 回复于:2002-06-26 12:41:06
我说都是从哪搬来的???

 我说故我在 回复于:2002-06-26 13:04:29
从网上抓下来的

 我爱臭豆腐 回复于:2002-06-26 13:09:18
在什么地方啊?有没有pdf之类的告诉兄弟们一声啊?

 我说故我在 回复于:2002-06-26 13:15:46
对不起,没有PDF文档。

 procrus 回复于:2002-06-26 13:36:30
可以用PDFMAKER将它做成PDF文档资料

 wuznfa 回复于:2003-08-14 21:06:28
真是太感谢精灵王了 ,这样 的 好人,但愿你 长命两百岁

 kulou 回复于:2003-08-18 22:53:21
太谢谢了,前面的呢

 Alphant 回复于:2003-08-29 15:57:32
还需要前面的,请提供

原文转自:http://www.ltesting.net