- 论坛徽章:
- 0
|
SCO UNIX 讲座
Unix自学篇--第八讲:监视进程管理
文:Santa Gruz Operation, Inc.
程序是一个可执行文件(Process)是正在运行程序一个实例。SCO UNIX 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(Joint CPU,连合CPI时间),显示一个终端所涉的所有进程的总时间。
sar (ADM)指令是一个系统活动报告程序,显示系统资源累积利用率。为指示系统瓶颈口(Bottleneck),sar 是非常好的实用程序,指令语法如下:$sar〔-option〕 〔sample-interval-samples〕例如:$sar-u120
-u选项显示CPU利用情况。如果%idle一致地低,使用效能是上升,不过,运行的进程偷不到未用的CPU周期。又例如使用-q选项显示进程吞吐量。假若%swpocc大於20,就发生交换(Swapping),可以使用大内存能减少交换 /请负活动。
UNIX自学篇:第九讲:管理进程
文:Santa Cruz Operation, Inc.
用低优先级运行进程
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 文件。
Unix自学篇第十讲:打印管理
Santa Cruz Operation, Inc.
打印假脱机(Spooler)程序在系统引导时自动启动,负责打印服务的安装、配置和管理,在指定打印机上,将用户打印请求进行排队,能在不丢失排队打印请求下暂停打印。
打印机队列
打印机会被分组,每组共同存取一个队列(class)。而打印请求可以送入一个 class ,也可送往指定打印机上。在一个 class 中,可随时移去或增加打印机,用 sysadmsh 菜单或scoadmin 的 Print Manager,可以增加打印机往已有的 class 中,又或增加一个新 class。
打印机过滤程序
使用打印机过滤程序,可以转换用户文件或数据流,在给定打印机上,合适地打印出来;处理两边打印,草图或高质量文字打印等;如发现打印失败,会通知打印服务,然後告诉用户使用上出现问题。打印机过滤程序又称为打印机定义的接口脚本,存放在/usr/spool/lp/bin。
安装和配置打印机
要把打印机接到并行埠(Parallel Port)上,SCO UNIX System V 支持两个物理并行设备(/dev/lp[0-2])。当用主并行埠时,用 LP0 或 LP1,中断向量为 7。第二个并行埠,/dev/lp2,中断向量同为 7。
要把打印机接在串行埠(Serial Port)上,最好接上智能卡工作,打印机能用任意有效串行埠名联系。若不要求硬件流控制,可以使用非调制解调器控制埠名。另一方面,可以从终端辅助埠上做局部打印,指令 lprint (C)使用户从附在终端上的打印机上打印。
安装打印机
要安装打印机,先找一个未用的串行线路接上打印机,连好导线,打开打印机开关,检查硬件连接。然後,调用 sysadmsh 菜单或 Print Manager 上,加入打印机,用合适的信息填好格式,指定打印机的 Class,若所指定的不存在,就建立一新 Class,包含接口脚本路径名。许多打印机都能用standard 接口脚本。
打印机管理
修改打印机配置时,可以增加或撤消目的地;改变打印机接口脚本、设备等;以及改变默认打印机目的地。管理打印机调度时,有几种选项需要注意:
-Stop:为实现某种打印机维护,必需将假脱打印机转换成 off。
-Begin:假脱机转换成 on。
-Accept :允许把打印请求送往打印机或 class 中。
-Reject:阻止请求假脱机打印。
-Enable:允许从打印机或 class 上打印。
-Disable:阻止打印,但允许假脱机出现。
每个打印请求都会赋予一个优先数,决定何时打印,优先数据取值范围为 0(最高)到 39 (最低)。默认优先数值同样是 20。所有打印请求或单个打印请求都能移到不同的队列或打印机上,若打印机的队列阻塞或打印机不能用,就要移去打印请求;打印机要维护,也要移去打印请求。如果已移去了所有请求,这个打印机就不再接受新请求,直到打印机启用为止。
要清理打印机请求,先要指出打印机或请求 ID ,若指定了打印机,则当前正在打印的作业也被清除,但是,不能使用通配符去匹配清理打印请求。
第十一讲:TCP/IP 管理
文:Santa Cruz Operation,Inc.
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 vision.sco.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
文:Santa Cruz Operation,Inc.
向远地注册的能力非常有用,它让我们不用到远地系统所在处,就能运行远地主机上的程序,执行远地系统管理,有两道指令可用於远地主机注册,就是 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?
|
|