本手册的章节按照以上给出的标题顺序安排,你还必须了解何时及如何进行如下管理工作: (本手册不包含如下系统管理工作:安装系统软件、安装第三厂家软件、建立和管理网络服务、建立和管理邮件服务、扩充和删除硬件、管理安全性和记帐、监视系统和网络性能。)这章其余部分将描述如何完成系统管理员的工作,并介绍一些基本命令和管理工具。
1.1了解超级用户状态
超级用户是一个具有特权的用户,它可不受任何限制地使用全部文件和命令,超级用户有一个特定的UID(=0),这个帐号的用户名为root(其实只要是UID为0的用户就是超级用户)。许多系统管理任务都必须在超级用户下完成,如安装和拆卸文件系统、改变文件和目录的存取权和所有权、备份和恢复文件系统、创建设备文件,以及关闭系统。
我们可以用如下办法进入超级用户:
1、 在其它用户状态下,用不带任何参数的su命令,并按需要键入root的口令。
2、 在login提示下,键入root及其口令。
在入进超级用户后,shell将给出一个特殊的提示符“#”,提醒你对系统有着至高无上的存取权,做任何事情都要小心,通过查询记录文件/var/adm/sulog,可以跟踪谁正在使用超级用户帐号。
最好在必要时才进入超级用户,应该避免在超级用户下做一般的事情。如果某项任务需要你是超级用户,它会提示你应该进入超级用户。当你完成必要的工作后,应立即回到一般用户状态。
由于超级用户非保护的存取权限严重威胁系统的安全,所以root帐号总是设有一个口令,而且为了增加安全性,要经常更换口令。
1.1.1成为超级用户(su)
仅当需要使用root权限完成一定的工作时,你才进入超级用户,下面是从普通用户成为root的方法:
1、 在Shell的$或%提示符下,输入su。如果root帐号有口令的话,系统会提示你键入口令。
2、 键入超级用户口令,如果口令正确,你就具有了超级用户权限,系统显示“#”提示符。
gtxa%su
Password:
#
如果想使用root本身的环境变量,键入su -。
1.1.2退出超级用户状态
要退出超级用户状态,就简单地键入exit。
#exit
gtxa%
1.1.3以root注册
要直接注册成root,必须在login提示下完成:
1、 在login提示下,输入root,于是系统提示你输入root口令。
2、 输入root的口令,如果口令正确,系统将出现root提示符#:
login: root
Password:
#
1.2与用户通信
系统管理员工作的一个重要部分是与用户通信,使用户了解管理员所做的事情对系统功能所造成的影响,要让用户及时知道你所做的管理工作(如:重新引导系统,安装新的软件,或以某种方式改变系统环境)何时将对它们产生影响。
管理员可以口头与用户通讯,但最普遍的方式是:
;在注册时显示当前系统专用信息.
;用write命令直接将消息发送到某个用户终端上.
;用wall使用将消息发送给一个系统上的所有用户.
;用rwall命令将消息发送给网络上的所有用户.
;通过电子邮件将消息发送一个或一组用户.
1.2.1在注册时显示系统专用信息
每次用户注册进系统,屏幕上都会显示当天的系统消息,这个消息存贮在文件/etc/motd中。已经注册进系统和正在使用系统的用户看不见此信息,可使用motd命令查看此消息,这些信息包括:操作系统版本号,系统软件的变化,新安装(或删除)的第三厂家文件的名称,或系统的调度时间表。必须确保motd文件是最新的,如果motd显示的是过时的消息,用户会因此而失掉一个关键信息,消息应尽量简短,如果其长度超过一屏,用户就读不到开头部分。/etc/motd文件所在者应该是root, 而且root应是唯一对此文件具有写权限的用户。
gtxa% ls -1 /etc/motd
-rw-r--r-- root sys 49 Jan 1 1970 /etc/motd
gtxa%
注意:系统软件安装后,有几个文件(包括/etc/motd 在内)的更新时间为“Jan 1 1970”这个日期是UNIX的起始日期,当你对这些文件编辑后,这个时间会随之改变。
1.2.1.1建立日期消息
用如下步骤建立日期消息:
1、 成为超级用户
2、 用编辑工具(如vi)编辑/etc/motd文件
3、 删除不用的消息,输入新的消息
4、 保存修改后的文件,这些消息在用户下次登录进系统时显示
1.2.2将信息发送给单个用户
可以使用write命令将信息发送到用户的终端上,当使用窗口系统(如Open Windows)时,每个窗口都有一个独立的帐号,如果用户登录多次,则信息会直接显示在控制台窗口中。
1.2.2.1发送一个短消息给一个单独的用户
用以下步骤将一个一次性的短消息发送给单个用户:
1、 键入write username,username是用户的注册名。
2、 键入要发送的消息。
3、 输完消息后,键入Control-D. 则在username用户的控制台窗口中显示你键入的内容。
下面给出系统管理员发送消息的例子:
gtxa% write ignatz@elm
Ill come by at 12:00 to look at your problem.
gtxa%
下面是在用户控制台窗口显示的消息:
Message from fred@gtxa on ttypl 11:20...
Ill come by at 12:00 to look at your problem.
EOF
1.2.2.2将作为一个文件的消息发给个别用户
如果你想发送消息给一些用户,建立一个消息文件,再使用带参数的write命令来实现,其中的一个参数是消息文件名。
建立一个文件,此文件含有想要发送的消息。 键入write username < filename
在下面的例子中,管理员用cat命令建立消息文件:
gtxa% cat > message
Ill come by at 12:00 to look at your problem.
gtxa% write ignatz@elm < message
write: ignatz logged in more than once...
writing to console
gtxa%
如果用户进入了多个窗口系统,消息就显示在用户的控制台窗口中。下面是显示在控制台上的消息格式:
Message from fred@gtxa on ttypl at 11:20...
Ill come by at 12:00 to look at your problem.
象以上显示的那样,键入的消息与显示的消息是相同,用户可以用write命令响应并初始化一个双向对话,但这种对话不是真的交互式的。有两条打开的write 路径,两个方向各一条,详细介绍见write(1)说明。
1.2.3将消息发送给一个系统或网络中的所有用户
可以使用wall命令(write all)将消息同时发送给系统中的每个用户,用rwall(remote write all)命令将消息同时发送给网络中的所有用户。
要将消息发送给系统中的所有用户:
1、 键入wall
2、 键入想要发送的消息
3、 输入完消息后,键入control-D, 消息就会显示在系统中每个用户的控制台窗口中。
下面是一个实例:
gtxa% wall
System will be rebooted at 12:00
gtxa%
显示在用户控制台窗口的消息:
Broadcast message from root on console...
System will be rebooted at 12:00
EOF
注意:使用rwall命令要非常小心, 因此此命令消耗大量的系统和网络资源,要将消息发送给网络上的所有用户:
1、 键入rwall-n
2、 键入要发送的消息
3、 消息输入完后,键入Control-D, 消息就显示在网络系统各个用户的控制台窗口中。
下面是一个实例:
gtxa%rwall-n Eng
System gtxa will be rebooted at 12:00
gtxa%
显示在用户控制台窗口中的消息是:
Broadcast message from root on console...
System will be rebooted at 12:00
也可以用rwall命令将消息发送给某个系统中的所有用户, 其命令格式为:rwall hostname
1.2.4通过电子邮件发送消息
E-mail是传播某些系统管理信息的一种有效方式,但本手册不介绍如何使用电子邮件,有关邮件信息的详细说明见mail(1)、mailtool(1)和mailx(1)。
1.3启动和关闭系统
启动及关闭系统是系统管理工作的一个组成部分,这一节描述正常启动和关闭系统的过程,如果系统启动出现错误,参阅系统文档中有关如何诊断引导问题。
SunOS 5.x系统软件总处于连续运行状态,这样电子邮件和网络软件能正常地工作,但在以下几种情况下,系统却必须关闭或停止。
;切断系统电源
;安装一个新版本的操作系统
;电源老化
;系统扩充硬件
;进行文件系统维护
1.3.1选择init状态
Solaris系统软件有八个init状态: 缺省init状态/etc/inittab 中确定。Solaris系统软件的缺省init状态是运行级3。表1.1列出了7个可能的运行级别和系统在每级上的状态。
表1.1 系统初始状态
初始状态功能
0掉电状态
1.S.s系统管理员状态(单用户)
2多用户状态(不输出资源,没有启动NFS)
3多用户状态(输出资源,启动NFS进程)
4替换多用户状态(目前不用)
5软件重引状态(目前不用)
6系统重引导状态
/sbin/init 程序负责确保系统正常地运行,也可以用它来改变init 状态的命令,还可以用init 状态(带用-i选择项)作为shutdown命令的参数。以下是四种系统状态类型:
1、 掉电(运行级0)
2、 单用户(运行级1和s或S)
3、 多用户(运行级2和3)
4、 重引导(运行级5和6)
若准备做系统管理工作,必须确定对系统及所需要做的工作来说哪种init状态是合适的。
1.3.1.1查看系统运行级
要查看某系统的运行级,键入who -r:即显示出运行级、日期及时间、进程终止状态、进程id、进程退出状态。
在下面的例子中,系统gtxa处在缺省多用户运行级(3),日期和时间是在Feb 6 15:46,进程终状态是3,进程id是0, 进程退出状态是S:
gtxa%who -r
run-level 3 Feb 6 15:46 3 0 S
gtxa%
下面描述如何使用每个init状态。
1.3.1.2使用掉电状态,运行级0
用此级关闭系统以便安全切断电源。
1.3.1.3使用系统管理员状态,运行级1
当某项管理任务需要你是系统的唯一用户时,使用这一级,在这级状态下,只安装了root和/usr文件系统,只允许使用最少的核心实用程序,发出该命令的终端成为控制台,没有其它用户登录。
1.3.1.4使用多用户状态,运行级2
一般操作都在此状态下进行,在这级状态下多个用户可以访问系统和整个文件系统,除了nfs服务器、syslog和远程共享进程之外,所有的系统管理进程都在运行。
1.3.1.5使用远程资源共享状态,运行级3
此状态一般操作和nfs资源共享一起有效。
1.3.1.6使用替换多用户状态,运行级4
此运行级目前不用。
1.3.1.7使用交互重引导状态,运行级5
要从非缺省引导设备引导系统时,用此级。也可以用reboot -a 命令进入这个状态级。
1.3.1.8使用重引导状态,运行级6
使用此运行级关闭系统,使系统状态为运行级0, 然后重引导到多用户级(或到inittab文件中指定的缺省运行级)。
1.3.1.9使用单用户状态,运行级s或S
使用这一级使系统处于单用户状态,而所有的文件系统被安装且可访问。
1.3.1.10改变运行级
用telinit或init命令改变运行级,telinit命令需要一个单字符参数,此参数为init指定使用的运行级,尽管用户可以直接用init命令,但最好使用telinit命令去改变系统运行级。
1、 变成超级用户
2、 键入telinit n。参数n是要使用的init状态号。
要关闭系统
gtxa% su
Password:
# telinit 0
变成单用户状态:
gtxa% su
Password:
# telinit 1
要变成无nfs服务器系统管理进程运行的多用户状态:
gtxa% su
Password:
# telinit 2
要变到具有nfs服务器系统管理进程的多用户状态:
gtxa% su
Password:
# telinit 3
要关闭且重引导系统到运行级3:
gtxa% su
Password:
# telinit 6
1.3.2选择所用的关闭命令
准备做系统管理工作时,需要确定合适的关闭命令,下面介绍如何使用系统提供的关闭使命。
/usr/sbin/shutdown
/etc/telinit and /sbin/init
/usr/sbin/halt
/usr/sbin/reboot
以上命令皆完成:初始关闭过程,杀死所有的运行进程,将新数据写入硬盘将Solaris系统关闭为适当的运行级。
1.3.2.1 shutdown
在多用户状态下关闭系统,使用shutdown命令,此命令将警告消息发送给注册到此系统的所用用户,等待60秒钟(缺省)后将系统关闭为单用户状态,可以选择不同的缺省等待时间。
1.3.2.2 telinit和init
用telinit或init 命令可以关闭一个单用户系统或改变此系统的运行级,init命令改变系统的运行级,telinit命令init 你想要的运行级,两者可交替使用,但telinit命令更好,可用telinit将系统置成掉电状态(init 0)或进入单用户状态(init)。
注意:telinit/init和shutdown命令是改变系统运行状态的好方法,由于它们是用一级rc shell程序来杀死行进程, 因此用这些程序来关闭系统是最可靠的方式。
1.3.2.3 halt
当系统必须马上停止且不必警告任何用户时,用halt命令。halt命令在关闭系统时没有任何延时也不给系统中的用户以任何警告。halt命令不运行任何 rc shell程序,所以不是一个关闭系统的好方法。
1.3.2.4 reboot
系统不在多用户状态下,用reboot命令关闭系统并重新引导到多用户状态,reboot命令不警告系统中的用户,不运行rc shell程序,所以不是一个关闭系统的好方法。
1.3.3 引导系统
如果系统电源被切断,则开启电源就开始了多用户引导过程。下面说明从ok PROM提示下引导系统到不同状态下的方法。如果PROM 提示是>,键入n即显示出ok提示。
1.3.3.1 引导到多用户状态
要引导系统到多用户状态,在ok提示符下,键入boot,则在缺省驱动器上启动自动引导过程,显示一系列启动信息,最后系统进入多用户状态。
1.3.3.2 引导到单用户状态
要引导系统到单用户状态,在ok提示符下,键入boot -s,系统引导到单用户状态且提示输入root口令:
ok boot -s
INIT: SINGLE USER MODE
Type Ctrl-d proceed with normal start-up
(or give boot password for system maintenance)
键入root口令,注意要继续将系统引导到多用户状态,则键入Control-D。
1.3.3.3交互式引导
如果想对系统文件或核心作暂时改动,可以采用交互式引导,在这种情况下,可以测试所作的改动,且当出现问题时很容易恢复。
1、 在ok>的PROM提示下,键入boot-a,引导过程会按交互式方式提示你。
2、 若响应回车,即缺省/kernel/unix核心引导,若不用缺省核心,则键入要用的核心名称。
3、 若响应回车,即用缺省/etc/system文件,否则键入所用的系统文件名。
4、 若响应回车,即用缺省模块目录路径,否则键入模块目录路径名。
5、 若响应回车,即用缺省root文件系统,也可键入ufs从本地盘引导,或者键入ufs无盘客户。
6、 若响应回车用root设备的缺省物理名,否则键入想使用的设备名。
7、 若响应回车则用缺省交换文件系统类型swapfs(注意:swapfs是唯一允许的交换文件系统类型)。
以下例子中,接受的是缺省选择:
ok boot -a
(Hardware configuration messages)
rebooting from -a
Boot device: /sbus/esp@0,800000/sd@0,0 File and args:-a
Enter[/kernel/unix]:
(Copyright notice)
Name of system file [/etc/system]:
Name of default directory for modules [ ]:
root filesytem type [ufs]
Enter physical name of root device[/sbus@1, f8000000/esp@0,800000/sd@0,0:a]:
Swap filesystem type [swapfs]
configuring network interfaces: leo
Hostname: gtxa
(fsck messages)
The system is coming up. Please wait.
(More messages)
gtxa login:
1.3.3.4查看引导信息
引导信息存贮在/var/adm/messages文件中,引导完系统后若要查看这些信息,键入/usr/sbin/dmesg或more /var/adm/messages,则显示引导信息。
gtxa% /usr/sbin/dmesg
Jan 13 11:22 SunOS Release 5.0 Version [UNIX(R) System V Release 4.0]
system file (etc/system) error: readline error on line 1.
root nexus=Sun 4-60
mem=16384K (0x4000000)
avail mem =14688256
Ethernet address=8:0:20:7:83:17
sbuso at obio 0xf8000000
dma0 at SBus slot 0 0x400000
exp0 at SBus slot 0 0x800000 SBus level 3(sparc ipl 3)
sdl at sep0 target 1 lun 0
/sbua@1, f8000000/esp@0,800000/sd@1,0(sd1):
sd3 at esp0 target 3 lun 0
/sbus@1, f8000000/esp@0,800000/sd@3,0(sd3):
root on /sbus@ 1, f8000000/esp@0,800000/sd@3,0:a fstype ufs swap on swapfs fstype swapfs size 1348K
le0 at SBus slot 0 0xc00000 SBus level 4 (sparc ipl 5)
zs0 at obio 0xf1000000 sparc ipl 12
zs1 at obio 0xf0000000 sparc ipl 12
dump on /dev/dsk/c0t3d0sl size 32748K
Dec 24 12:30:01 sendmail[82]:alias database out of date
Dec 24 12:30:01 sendmail[82}: AA00082: message- in=<9112242030. AA00082@gtxa. Eng. Sun. COM>
Dec 24 12:30:01 sendmail[82]: AA00082: from=root, size=592, class=0, received form local
Dec 24 12:30:02, stat=Sent
Dec 24 12:30:58 sendmail[153]: network daemon starting
Dec 31 15:20:24 rlogind[734]: pcktread: suspeet zero len fdo at obio 0xf7200000 spare ipl 11
cgsix0 at SBus slot 1 0x0 SBus level 5(spare ipl 7)
cgsix0: screen 1152x900, single buffered, IM
mappable 1 gtxa%
1.3.3.5增加新的硬件后引导系统
当系统中增加新的硬件后,boot命令必须使用-r选择项,以便使操作系统在引导过程中查看并装入新的设备驱动程序。
1、 按硬件中的说明装入新的设备驱动程序。
2、 关闭系统且安装新的硬件。
3、 键入boot -r并回车,则运行重配置shell程序,装入在模块目录中的所有的设备驱动程序且建立相应的硬件结点(nodes)。
1.3.3.6退回引导进程
在有些情况下,你也许想退出或中断引导过程,具体的中断键依键盘类型不同而有所不同,例如,可键入stop -A或L1 -A。在tty 终端上,键入Break键。要中断引导过程,键入系统对应的中断键,当中断引导过程后,监视器将显示ok PROM提示:ok
键入boot重新启动引导过程,或键入help显示一组帮助信息。如果终端示出>提示,键入n获得ok提示。
1.3.4关闭系统
下面介绍如何用shutdown和init命令关闭系统。
1.3.4.1关闭一个多用户系统
在关闭一个多用户系统之前,要通知系统中的用户,给用户完成一些处理过程的时间。
1、 键入who,显示出注册的所有用户清单。
2、 键入ps-ef,显示出系统活动进程表,如果系统进程允许关闭,转到下一步。
3、 变成超级用户。
4、 键入cd /,必须在根目录下运行关闭命令。
5、 键入shutdown,系统要你确认是否要关闭系统。
6、 键入y,所有的用户将接收到一个消息,等待60秒后,系统关闭,进入单用户状态且提示键入root口令。
7、 键入root口令,系统处于单用户状态,这时可以进行维护工作。
8、 键入Control-D返回到缺省运行系统级。
# cd /
# shutdown
Shutdown started Fri Aug 6 10:50:35 EDT 1993
Broadcast message from root(console) on earth Fri Aug 9 10:59:35
THE SYSTEM IS BEING SHUT DOWN NOW!!!
LOG OFF NOW OR RISK YOUR FILES BEING DAMAGED
Do you want to continue?(y or n): y
The system is down.
Changing to init state s-please wait.
#more /etc/vfstab
#device device mount FS fsck auto- mount
#to mounto fsck point type oass mount? options
/dev/dsk/c0t0d0s0 /dev/dsk/c0t0d0s0 / ufs l no -
proc - .proc proc - no -
/dev/dsk/c0t0d0s1 - - swap - no -
swap - /tmp tmpfs - yes -
/dev/dsk/c0t0d0s6 /dev/dsk/c0t0d0s6 /usr ufs 2 no -
/dev/dsk/c0t3d0s7 /dev/dsk/c0t3d0s7 /files7 ufs 2 no -
cheers: /export/svr4/,man.ja5 - /usr/man nfs yes hard
cheers: /export/svr4/openwin V3.ja4 - /usr/openwin nfs yes
hard
#
注意:/和/usr的自动安装(automount)域说明为no,这是因为在mountall命令运行前,在系统启动时/和/usr已被安装上了,如果将此值定义为yes,则mountall命令试图再去安装这两个已经安装的文件系统。/etc/vfstab文件中的每个域必须有值,若无值(即值为no)必须填上一个"-"号。
/etc/vfstab文件的域
域 说明
Device to mount 可安装的设备有:
 本地ufs文件系统的块设备 (如:/dev/dsk/c0t0d0s0)
 远程文件系统的资源名(如nfs文件系统myserver:/export/home)
磁盘的swap区名(如:/dev/dsk/c0t4d0s1)
 /proc目录和proc文件系统
 hsfs类型的CD-ROM
 pcfs和ufs类文件系统的软盘dev/diskette, 这一域也用于说明swap文件系统
Device to fsck
对应于则域说明的文件系统的原始(字符)特别设备(例如:/dev/dsk/c0t0d0s0)定义了fsck使用的原始接口,当没有对应的设备时用“-”号说明,例如只读文件系统或网络文件系统。
Mount point 缺省的安装点目录(如/usr目录下安装/dev/dsk/c0t4d0s6)。
FS type 由域说明的文件系统类型。
fsck pass
Fsck检测次数,用于决定是否需要检测文件系统,当该域是"-"号时不检测文件系统,当该域的值大于1时,则检查文件系统;等于0时,则检查非ufs文件系统,而不检查ufs文件系统,当fsck作用多个ufs文件系统,而fsck
pass值大于1,并且使用了-op选择项时,fsck 自动以最高的效率并行检测不同盘上的文件系统,当fsck
pass值为1时,则顺序检测文件系统,否则fsck pass值无效。
Automount? 系统启动时,若需mountall命令自动安装文件系统,则为yes,否则为no.注意该域与自动安装软件毫无关系。
Mount options
安装文件系统统的选择项列表,它们以","号分隔(无空格),"-"号说明无任选项,任选项的值请参见mount-(1M)手册。
4.3.1 文件系统表项的建立
下面建立文件系统表的步骤:
1、 进入超级用户;
2、 用vi等命令编辑/etc/vfstab文件;
3、 加入各项。用空格或Tab键分隔其中每个域,如果某个项没有值,则填上”-”号;
4、 保存该文件;
5、 检查安装点目录是否存在,不存在则建一个:改变目录到需要安装的地方然后键入mkdir
6、 键入mount 此项被安装上
下面的例子说明了将/dev/dsk/c0t3d0s7盘区作为ufs文件系统安装到/test1目录中,安装任选项(读/写)为缺省值,fsck设备是/dev/rdsk/c0t3d0s7字符设备,fsck
pass值为2,说明该文件系统不采用顺序方式检测
#device device mount FS fsck auto- mount
#to mount to fsck point type pass mount? options
#/dev/dsk/c0t3d0s7 /dev/rdsk/c0t3d0s7 /test1 ufs 2 yes -
下面的例子说明将panda系统的/export/man目录作为nfs文件系统安装到/usr/man上,对nfs文件系统不必说明fsck
devices和fsck pass域,这一例中,安装任选项是ro(只读)软方式,为提高可靠性,对读/写的nfs文件系统应采用硬式。
#device device mount FS fsck auto- mount
#to mount to fsck point type pass mount? options
panda:/export/man - /usr/man nfs - yes ro.soft
下面的例子说明将CD-ROM安装到/hsfiles目录上,一般情况下CD-ROM文件是只读的,所以安装任选项应设置为ro,目前流行的是CDROM自动安装,所以automount项为yes,由于hsfs是只读的,所以fsck
device和fsck pass均为无值。
#device device mount FS fsck auto- mount
#to mount to fsck point type pass mount? options
/dev/dsk/c0t6d0s2 - /hsfiles hsfs - yes ro
下面的例子说明将软盘安装到/pcfiles上,autmount项为无值,是由于经常在命令行中安装和拆卸,pcfs文件系统不支持fsck,所以fsck
device和fsck pass均定为无值。
#device device mount FS fsck auto- mount
#to mount to fsck point type pass mount? options
/dev/diskette - /pcfiles pcfs - no rw
下面例子说明安装根文件系统到循环安装点/etc/newroot上,automount项为yes,fsck device项和fsck
pass项为无值,循环文件系统必须在组成它的文件系统安装好后才能安装,要确保循环项是/etc/vfstab
文件中的最后一项,使其跟随在它所依赖的项的后面。
#device device mount FS fsck auto- mount
#to mount to fsck point type pass mount? options
/ - /tmp/newroot lofs - yes -
4.4文件管理命令
这一节将介绍文件系统管理命令及其语法规则、大部分文件系统管理命令包含普通文件系统命令和特别文件系统命令两部分。普通文件系统命令,可加到特别文件系统部分一起使用,表4.3列出了普通文件管理命令,这些命令在/usr/sbin目录中,它们大部分有一个对应的特别文件系统命令。
文件系统忙时,umount命令不会拆卸它。所谓文件系统忙是指用户正在该文件系统的某个目录中操作,或是某个程序找开了该文件系统中的文件。
4.5.1.2查找已安装的文件系统
为了显示已安装的文件系统,可键入mount命令,这时当前安装的文件系统将显示出来
panda%mount
/on/dev/dsk/c0t0d0s0 read/write/setuid on Wed Oct 23 10:08:501991
/usr on /dev/dsk/c0t0d0s6 read/write/setuid on Wed Oct 23 10:08:501991
/proc on /proc read/write/setuid on Wed Oct 23 10:08:50 1991
/tmp on swap on wed Oct 23 10:08:50 1991
/usr/openwin on cheers:/export/openwin hard/remote on Wed Oct 23 10:11:08
1991
/home on blowuppid136)read only/intr/map=auto.home/indirect on Wed Oct
23 10:11:10 1991
/vol on blowuppid136)read only/intr/map=auto.vol/indirect on Wed Oct 23
10:08:50 1991
/nse on blowuppid136)read only/intr/map=/etc/auto.nse/indirecton Wed Oct
23 10:08:50 1991
panda%
4.5.1.3安装/etc/vfstab文件中的全部文件系统
下面是安装/etc/vfstab文件中全部文件系统的步骤:
1、 进入超级用户;
2、 键入mountall /etc/vfstab中所有的本地文件系统被安装上。
panda%su
Password:
#mountall
#
4.5.1.4安装特定类型的文件系统
下面说明/etc/vfstab文件中,特定类型的文件系统的安装步骤,最常见的是本地硬盘的ufs文件系统和网络文件系统nfs。
1、 进入超级用户
2、 键入mountall -F,/etc/vfstab中的此种类型的文件系统被安装上。
下面是安装nfs类型文件系统的例子。
panda%su
Password
#mountall -F nfs
#
4.5.1.5安装单个文件系统(mount)
安装/etc/vfstab中单个文件系统的步骤是:
1、进入超级用户:
2、键入mount
panda%su
Password:
#mount /opt
#
4.5.1.6拆卸所有的远程文件系统(umountall -F nfs)
下面是拆卸远程文件系统的步骤:
1、进入超级用户;
2、键入umountall -F nfs,拆掉/etc/vfstab中全部远程文件系统。
panda%/su
password:
#umountall -F nfs
#
注意:如果你要拆掉全部文件系统(用umountall命令且不带参数),系统就不能再使用。必须重新启动。
4.5.1.7拆卸个别的文件系统(umount)
不能拆卸正在使用的安装目录,若想拆卸一个正在使用的目录,必须让所有的用户转出这一目录。
1、进入超级用户;
2、如果必要,让用户转出你要拆除的目录;
3、键入umount 指定的文件系统就被拆除了。
下面是用mount命令查找安装点,并拆掉这一安装点的例子:
panda%mount
/on/dev/dsk/c0t0d0s0 read/write/setuid on Wed Oct 23 10:08:501991
/usr on /dev/dsk/c0t0d0s6 read/write/setuid on Wed Oct 23 10:08:501991
/proc on /proc read/write/setuid on Wed Oct 23 10:08 50 1991
/tmp on swap on wed Oct 23 10:08:50 1991
/usr/openwin on cheers:/export/openwin hard/remote on Wed Oct 23 10:11:08
1991
/home on blowup: (pid136)read only/intr/map=auto.home/indirect on Wed Oct
23 10:11:10 1991
/vol on blowup: ( pid136)read only/intr/map=auto.vol/indirect on Wed Oct 23
10:08:50 1991
/nse on blowup: (pid136 read only/intr/map=/etc/auto.nse/indirecton Wed Oct
23 10:08:50 1991
[41] panda%su
Password:
#cd /
#umount /home
#
4.5.2自动安装程序
可以通过nfs实现共享文件系统的安装,这种方法称为自动安装(automounting)。自动安装程序在后台运行,根据需要安装或拆卸远程目录。正在运行自动安装程序的客户系统,一旦用户存取自动安装程序可访问的远程文件或目录,自动安装程序就自动将用户要访问的文件系统安装到该用户系统。只要用户在远程目录中或正在使用其中的文件,远程目录或文件就是安装着。如果一定的时间内没访问远程文件系统,则它自动地被拆掉。自动安装程序根据需要自动地安装或拆卸文件系统,除了进入或转出目录的操作外,不需用户进行任何干预。
7、 键入put <本地文件> <目标文件>,系统就显示文件传送信息并出现ftp>提示。
8、 键入quit则goodbye信息及shell命令提示符出现
panda%ftp
ftp>open elm
Connected to elm
220 elm FTP server(unix(r ) system v Release 4.0)ready.
Name(elm:testuser):testuser
331 Password required for testuser
Password:
230 User ignatz logged in .
ftp>asc
ftp>put quest/tmp/quest
200 PORT command successful.
150 ASCII data connection for /tmp/quest
(129. 144.52.199.1333)
226 Transfer complete
ftp>quit
221 Goodbye.
panda%
可以使用send命令替代put命令,还可以使用mput命令拷贝多个文件,但没有msend命令,详细内容请见ftp(1)手册。注:你必须在对方系统上有一个帐号或对方系统允许匿名登录才能使用文件传送程序
7.3.1C shell的初始文件
C shell使用两个初始化文件,用于设置用户的环境变量,这两个初始文件名分别是.login和.cshrc,也放在用户基本目录之下。
当用户注册时,C shell首先读.login,然后再读.cshrc文件。当用户是从命令行中启动C shell时,只读.cshrc文件(C
shell运行控制)。因为.login文件不是每次启动C
shell都读入,因此用户应该在.login中设置环境变量,而在.cshrc文件中设置用户的查找路径名。
7.3.2C shell环境变量的定义
使用命令setenv ,例如:
panda%setenv display rogue:0
panda%
7.3.3建立C shell的别名
用户可以在.cshrc文件中定义所需的别名。建立一个别名的语法为:
alias
例如,你想简写别名(alias)这个命令成为a,则可以在.cshrc文件加入下列一行:
alias a alias
下面的实例选自.cshrc文件。注意,如果命令行中包含有空格,则必须把整个命令中用引号引起来,引号可以是双引号,也可以是单引号:
alias a alias
a h hiostory
a c clear
a lf 1s -F
a ll "ls -l | home"
a la ls -a
a s "source .cshrc"
a f ‘find -name core -print
a copytotape "ter cvf /dev/rmt/0 *"
7.3.4设置C shell的历史功能
要设置C shell的历史功能,只需在命令行中打入:
set history=
其中,n可理解为C shell可以存贮的命令条数。举例:
panda%set history=18
panda%
用户既可在shell窗口中"临时"设置历史功能,也可以把它放在.cshrc文件中设置"永久"的历史功能。
7.3.5使用C shell历史功能
在命令行中,打入history命令,即可显示已经打入过的命令,这些命令是你打入的最后n条命令,n是像7.3.4节所述的方法设置的。
panda%history
26 pwd
27 kermit
28 cd howto
29 tar avf /dev/rmt/0
30 ls -l howto*
31 cd
32 cd Config/Art
33 ls -1
34 tar cvf /dev/rmt/0
35 histoty
panda%
要想重复执行刚打入的命令,可打入!!和回车,即复执行上一条命令:
panda% history
26 pwd
27 kermit
28 cd howto
29 tar avf /dev/rmt/0
30 ls-l howto*
31 cd
32 cd Conrig/Art
33 ls-1
34 tar cvf /dev rmt/0
35 histoty
panda%!!
history
27 kermit
28 cd howto
29 tar avf /dev/rmt/0
30 ls-l howto*
31 cd
32 cd Conrig/Art
33 ls-1
34 tar cvf /dev rmt/0
35 history
36 history
panda%
要重复最后一条命令的最后一个词,可打入!$,这样上一条命令的最后一个词即可作为当前命令行中的一个变量。例如,你可能已经输入了某个文件的全程路径,然后想用这个路径名作为变量,来用vi编辑此文件或打印此文件:
panda%ls -l /home/ignatz/quest
panda%lp !$
panda%
!$可以用在命令行的任何地方,在下面的命令行中,文件/home/ignatz/quest将拷贝到/tmp目录之下:
panda%ls -1 /home/ignatz/quest
panda%cp !$ /tmp
cp /home/ignatz/quest /tmp
panda%
要想重复C shell历史令表中的某个序号的命令,则打入!,例如:
panda%history
29 tar avf /dev/rmt/0
30 ls -l howto*
31 cd
32 cd Config/Art
33 ls -1
34 tar avf /dev/rmt/0
35 ls -l
36 cd
37 lp howto*
38 history
panda%!32
cd Config/Art
panda%
7.3.6设置C shell的退格键(stty erase)
如果用户想把删除字符的键从Delete键变为Backspace键,则可以输入下面的命令:
panda%stty erase ^H
panda%
此后,退格键(Backspace)即作为字符删除键使用。
7.3.7新命令的嵌入
C shell为所有命令路径变量建立一个内部命令表,因此当用户把新命令放入某个目录中时,这个新命令并不在这个表中,这样,C
shell就不会执行此新命令。C
shell为了解决这个问题,把用户的新命令加入到查找路径内部表中,为用户提供了rehash命令,用户只需打入rehash命令,即可使这条新命令有效:
panda%newcommand
newcommand: Command not found
panda%rehash
panda%newcommand
panda%
7.3.8Cshell历史命令的编辑
用户可以从C shell的历史表中编辑命令,其语法:
S//
下面我们举例说明:
panda% history
31 cd
32 ls
33 cd/home/frame3.1
34 ls
35 cd
36 tar cvf /dve/rmt/0 frame3.1
37 lp questionnaire
38 lpstat -t
39 echo $PaTH
40 history
panda%!39:s/a/A/
echo $ PATH
.:/home/winsor:/usr/openwin/bin:/usr/deskset/bin:/home/
winsor/bin:/bin:/home/bin:/etc:/usr/etc:/usr/bin:/home/
frame3.1/bin
panda%
在此例中,第39条命令行中用户打错了一个字母,然后用户用C shell编辑命令改正了打错的那个字母,命令执行也就正常了。
7.4Korn shell
Korn shell是AT&T Bell实验室的David Korn开发的,是标准shell超集,Korn
shell使用标准shell一样的语法,只不过Korn shell本身又加入了许多新的功能, Korn shell 比C
shell提供了更加方便的命令编辑方式,Korn shell一样亦具有历史和别名功能。
7.4.1Korn shell的初始化文件
korn
shell使用两个初始文件,它们都存放在用户的基目录之下,其名分别为.profile和.,第二个文件名是可以让用户自己选择命名的,其主要功能是设置环境,同C
shell类似,你可以把第二个文件名选择为.kshrc,以后我们即用.kshrc这个名称来说明第二个文件。
当用户注册时,Korn shell首先读.profile文件,然后读.kshrc。.kshrc主要让用户建立使用Korn
shell的习惯约定,在.kshrc应该包括只有Korn shell才能执行的命令。
用户必须用ENV环境变量来指定这.文件的名称,Korn shell设置环境变量的命令语法同标准shell:
=;export
其中export命令是必须的,它使此变量对Korm shell以及它的所有子进程都有效,下面为.kshrc文件设置环境变量:
$ENV=$HOME/.kshrc;export ENV
$
很显然,用户必须将ENV这个环境变量在.profile中设置好,否则当用户注册时,Korn
shell就会找不到.kshrc文件。注意,ENV环境变量是没有缺省设置的,用户不设置ENV,就不能使用这此性质。
不论是在注册时,还是在命令行中启动Korn shell,.kshrc文件在每次启动Korn shell时都必须读入。
7.4.2Korn shell的选择项
Korn shell有许多变量可用来指定用户的环境和控制命令的执行,要想显示当前的选择项设置情况,可输入:
$set -o
下例显示了Solaris 2.x软件系统中Korn shell的缺省设置情况:
$set -o
Current option settings
allexport off
bgnice on
emacs off
errexit off
gmacs off
ignoreeof off
interactive on
keyword off
markdirs off
monitor off
noexec off
noclobber off
noglop off
nounset off
privileged off
restricted off
trackall off
verbose off
vi off
viraw off
xtrace off
$
我们在表7.2中说明这些缺省选择项的具体意义。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表7.2 Korn shell的选项
选择 缺省值 说明
allexport off 当定义时,自动地报告变量
bgnice on 要低优先级执行所有的后台作业
emacs off 设置emacs/gmacs为联机编辑器
errexit off 如果命令返回伪值,则shell执行ERR陷井并立即 退出
gnaces off 设置gmacs/gmacd为联机编辑器
ignoreeof off 当运行在交互式shell 时,则在文件的未尾也不退出shell,只有打入exit才退出shell
interactive on shell自动进入交互式方式,因此也立即显示shell提示符
keyword off shell根据变量赋值语法将每个字放入变量赋值表中
markdirs off 在所有目录名后显示一个"/"
monitor on 使能作业控制
noclobber off 当使用转向输出>时,不覆盖一个已经存在的文件
noexec off 只读此命令,而不执行它,利用此命令可以调试shell文件的语法错误
noglob off 取消文件名的扩充
nolog off 在历史文件中不存贮功能定义
nounser off 当shell想要扩展一下已经设置的变量时,显示一条错误信息
privilrged off 当此选择项是off时,使用实际UID和GID,若是on,则把UID和GID设置成启动此shell时有效值
restricted off 设置一种受限制的shell
trackall off 当命令第一次出现时,使得它成为别名
verbose off 当读入时,即是显示输入
vi off 设置vi为联机的编辑器
viraw 0ff 指定从vi中,每次只输入一个字符
xtrace off 当执行命令的变时时,显示它们
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
按照korn shell的习惯用法,这些选择都在.kskrc文件中设置。
要想使某选择项有效,可输入:
set -o
若要取消这个选择项,可输入:
set +o
例如在.kshrc中输入:
set -o vi
即设置联机编辑器为vi,而是如果是下面这一行:
set +o vi
则是关闭vi作为联机编辑器使用。
用户亦可以用同样的语法,在命令行中设置Korn shell的其它选择项。
7.4.3创建Korn shell的别名
Korn shell创建别名的语法是:
Alias =
例如把别名命令alias别名为a,其命令为:
$alias a=alias
$
Korn shell本身带有一些预先定义好的别名,要显示这张别名表,只需打入alias命令即可:
$alias
autoload=typeset -fu
false=let 0
functins=typeset -f
hash=alias -t -
history=fc -1
integer=typeset -i
nohup=nohup
r=fc -e -
stop-kill-STOP
suspend=kill -STOP $ $
true=:
type=whence -v
$
表7.3描述这些缺省别名的意义。
表7.3 Korn shell缺省别名
别名 值 定义
autoload typeset -fu 定义一个自动装入函数
false let -0 返回非零状态,经常用于产生无限循环
functions typeset -f 显示函数表
hash alias –t - 显示跟踪别名表
history fc -1 从历史文件中列出命令
integer typeset -i 整型变量的说明
nohup nohup 即使退出系统(log out),也继续执行正在运行的作业
r fc -e- 重复执行前面的命令
stop kill -STOP 停止作业
suspend kill -STOP$$ 挂起作业
true ; 返回一个零退出状态
type whence-v 显示命令的信息
7.4.4用Korn shell的联机编辑器编辑命令
使用Korn shell的联机编辑器,用户在执行命令以前可以编辑当前命令。Korn
shell的联机编辑器可以是emacs、gmacs或vi,利用Korn Shell的选择项功能,使用下面命令:
set -o
或使用EDITOR或VISUAL环境变量来设置联机编辑器。
Korn shell的在线(或联机)编辑器vi是普通vi程序改进后的子集,使用联机vi编辑器时会自动进入插入方式。
用户在一般情况之下,不需要使用联机vi编辑器,而可直接打入命令并执行之。如果想要编辑某个命令,则打入Escape键进入命令方式,用户可以使用标准的光标移动命令向前移动,也可以使用vi编辑命令编辑这一行的内容。当用户在编辑命令时,按回车即执行此命令,而打入Escape则是回到输入方式。如果用户想要编辑的命令行是在一个vi文件中,则打入v命令即可打开一个含有命令行的文件。当退出vi时即执行命令,有关vi的常见命令请参见第2章的快速参考表。
要设置一个历史表的大小,可键入:
HISTSIZE=;export HISTSIZE
例如,下面命令行把历史表的大小设置为200:
$HISTSIZE=200;EXPORT HISTSIZE
$
用户可以在某个shell窗口中临时设置历史表的大小,也可以把这些设置命令放入.profile或.kshrc文件中使之“永久”有效。
7.4.6显示Korn shell的历史命令
用户可以利用fc和history这两条命令来显示历史表中的命令,这是因为history已经缺省别名为fc -1,所以用户可以交替使用这两条命令。
下列例子显示历史表中最后的16条命令。
$history
16 pwd
17 ps -el
18 ps -el | grep openwin
19 cd
20 more questionnaire
21 su
22 lp/etc/passwd
23 lpstat -t
24 man ksh
25 du
26 maker&
27 tip -2400 5551212
28 alias h=history
29 find /-name ksh -print
30 df -k
31 history
$
同样,用户打入命令$fc -1也可以显示同样的这些信息。
history和fc命令还可以有附加的变量,这样就可以让用户指定某个显示范围,例如可以显示最后的条命令或以倒序显示命令,有关ksh的详细材料,请参见ksh的手册。
7.4.7使用Korn shell的历史命令
要想利用Korn shell历史表中的命令,可以打入:
r
来重复使用由指定的这条命令,例如要重复使用第27条命令:
$r 27
tip -2400 5551212
(接着显示连接好的一些信息),若是重复执行历史表中的最后一条命令,则只需打入r即可。
7.4.8编辑Korn shell的历史命令
利用fc命令,用户可以显示特定的历史命令和编辑此命令,其语法为:
fc[-e ][-r][]
或
fc-
e-[=选择项-e是用来指定某个编辑器,若不指定编辑器,则使用FCEDIT环境变量,这个环境变量的缺省值为/bin/ed。-r的选择项是倒序显示历史表中的命令,即把最近的命令显示在历史表最上面,若不指定范围,则编辑最后一条命令。
举例来说,用户想使用vi编辑历史表中的最后一条命令,则打入:
fc -e vi
此时创建一个含有历史表最后一项的文件,只要用户编辑此命令并保存这些改变,就可执行此命令了。
第8章、管理系统
本章将介绍:显示系统专有信息、配置附加的交换空间、创建本地邮件别名
8.1显示系统专有信息
使用本节的命令来获得系统专有信息,如主机ID号、硬件类型、处理机类型、OS版本号、系统配置、系统运行多长时间、以及系统日期和时间,随后还说明如何设置系统日期和时间,以及改变系统时域。
另外,当改变用户组的所有权或将用户从/etc/group数据库中删除时,也会遇到同样的问题。
9.2.1改变文件的所有权
注意:当你拥有某文件或目录或者你是超级用户时,你才能修改它的所有权。
按以下步骤改变文件所有权。
1、键入ls –l 命令,在第三列显示文件的所有者;
2、成为超级用户;
3、 键入chown ,文件的所有权即指定给了新的所有者;
panda%ls - l quest
-rw-r-r-1 fred other 6023 Aug 512:06 quest
panda%su
Password:
#chown iqnatz:staff quest
#ls - l quest
-rw-r-r-l ignatz staff 6023 Aug 5 12:06 quest
#
9.2.2改变文件的权限
chmod命令可用于改变文件的权限。一般有两种方法,一是使用字符,其语法如下:chmod [who] [permission(s)]
,其中who可以是u、g或者o(即用户组或其它),你还可将它设成A用来改变所有权限(A缺省值),运算符可以是+或-,+表示增加权限,-表示删除权限,权限为R、W或X,即写、执行,有关权限的更多信息请参阅手册中的chmod(1)。
例如:为每个人设置读、写执行权限,可键入:
panda%chmod +wrx dog
panda%ls -l dog
-rwxrwxrwx 1 janice Staff 54 ju1 7 11:33 dog
panda%
为每个人设置读和执行权限,可键入:
panda%chmod +rx dog
panda%ls -l dog
-r-xr-xr-x l janice staff 54 ju1 7 11:34 dog
panda%
为了禁止任何人写此文件,可键入:
panda%chmod -w dog
panda%ls -l dog
-r-xr-xr-x 1 janice staff 54 ju1 7 11:35 dog
panda%
在下面的例子中,对dog文件的所有者赋予读写执行权限:
panda%chmod u+ wrx dog
panda% ls - l dog
-rwxr-x r-x 1 janice staff 54 ju1 7 11:36 dog
panda%
为限制同组成员和其它人员执行该文件,可键入:
panda%chmod go -x dog
panda% ls - l dog
-rwxr-r-1 janice staff 54 ju1 7 11:37 dog
panda%
改变文件权限的第二种方法是使用chmod命令的数字形式。你可以使用3位数字来分别设置owner,group和other的权限,例如,644表示对所者设置读写权限,对同组用户及其它用户设置只读权限。