Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2474545
  • 博文数量: 867
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 9800
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-27 14:44
文章分类

全部博文(867)

文章存档

2007年(6)

2006年(861)

我的朋友

分类:

2006-07-30 23:12:45

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

I'll come by at 12:00 to look at your problem.

gtxa%

下面是在用户控制台窗口显示的消息:

Message from fred@gtxa on ttypl 11:20...

I'll come by at 12:00 to look at your problem.

EOF

1.2.2.2将作为一个文件的消息发给个别用户

如果你想发送消息给一些用户,建立一个消息文件,再使用带参数的write命令来实现,其中的一个参数是消息文件名。

建立一个文件,此文件含有想要发送的消息。 键入write username < filename

在下面的例子中,管理员用cat命令建立消息文件:

gtxa% cat > message

I'll 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...

I'll 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.

INIT: New run level S

INIT: SINGLE USER MODE

Type: Ctrl-d to proceed with normal start-up,

(or give root password for system maintenance):

1.3.4.2关闭系统:可选方式

如果想改变shutdown命令的缺省功能,选择以下所述的六种方式之一来完成。

1、 在不确认的情况下关闭系统:

*变成超级用户

*键入cd /,必须在root目录下运行shutdown命令。

*键入shutdown等待时间(Grace Period)

2、 为了改变shutdown等待时间(Grace Period),用以下几步:

*变成超级用户。

*键入cd /,必须在root目录下运行shutdown命令。

*键入shutdown -t .系统在等待用户确定的秒数后关闭。

*下面是改变等待时间(Grace Period)例子:

# cd /

# shutdown -g 120

3、 关闭且重新引导多用户系统

*变成超级用户。

*键入cd /, 必须在root目录下运行shutdown命令。

*键入shutdown -i6 将一条消息发送给所有的用户且执行re6 shell程序;系统关闭为掉电状态,然后恢复到多用户状态。

4、 关闭单用户系统

要关闭一个单用户系统,键入telinit 0(或init 0)命令运行shell程序使系统很快地关闭,没有警告信息。

5、 关闭且重新引导单用户系统

要关闭且重新引导单用户系统,键入telinit 6 (或init 6)。此时系统信息写到硬盘上,杀死所有的活动进程且系统回到掉电状态。系统再重新引导到缺省级(通常是多用户级)。

6、 紧急关闭系统

要紧急关闭一个系统,键入uadmin 2 0. 将系统信息写到硬盘上,系统回到掉电状态,且显示PROM提示。

1.4监视进程

某一时刻在系统中运行的程序称为进程。用户可以监视进程的状态,控制一个进程获得的CPU时间,挂起或终止一个进程的执行。

ps命令是获得进程信息的主要工具。可以用ps和grep命令查寻所需要的信息,可以确定哪些进程正在(或没有)运行,而且可以获得一个进程的详细信息,这些信息包括:

*PID <进程ID>

*UID <用户ID>

*优先级

*控制终端

*存贮器的使用

*CPU时间

*当前状态

ps命令反映的是命令被键入时的系统状态,因此当你正在监视系统时间的活动情况时,必须明白当你读结果时它们已经有点过时,表1.2列出了ps(1)手册。

表1.2 ps 命令最常用的选择项目

可选项说明

-e 报告所有的进程

-l 生成一个长报告,此报告中包括除STIME之外的所有域。

-f 显示进程启动程序的全路径名

1.4.1 ps命令报告的内容

当键入ps-e时,可获得如下所示的信息

gtxa% /usr/bin/ps -e

PID TTY TIME COMD

0 ? 0:02 sched

1 ? 0:01 init

2 ? 0:00 pageout

192 ? 0:00 sac

79 ? 0:10 inetd

75 ? 0:01 in route

136 ? 0:04 automoun

143 ? 0:01 crom

123 ? 0:01 statd

104 ? 0:01 rpcbind

106 ? 0:01 rpc. rwal

108 ? 0:01 rpc. ruse

110 ? 0:01 rpc. spra

113 ? 0:01 ypbind

115 ? 0:00 keyserv

117 ? 0:01 kerbd

127 ? 0:02 lockd

251 pts/0 0:00 ps

165 ? 0:00 scndmail

193 ? 0:01 ttymon

174 ? 0:03 sysylogd

156 ? 0:01 lpsched

209 ? 0:02 in rlogi

211 pts/0 0:03 csh

164 ? 0:00 lpNet

gtxa%

各栏内容说明如下:

*PID: 进程标识号

*TTY: 启动此进程(或其父进程)的终端。如果进程没有控制终端这一栏显示一个问号 <?>──显示问号的进程常常是系统进程。

*TIME: 进程所用的CPU时间

*COMD: 产生此进程的命令名,注意:ps-e 命令仅显示出文件名的头八个字符。

当键入ps -el时,可看到如下的显示内容:

gtxa% /usr/bin/ps -el

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME COMD

19 T 0 0 0 80 O SY f010f1c8 0 ? 0:02 sched

8 S 0 1 0 251 0 20 fflad800 48 fflad9c4 ? 0:01 init

19 S 0 2 0 0 0 SY fflad000 0 fflad07d ? 0:00 pageout

8 S 0 192 1 49 1 20 ff1f7000 238 ff2de348 ? 0:00 sac

8 S 0 79 1 80 1 20 ff232800 258 f010fla4 ? 0:10 inetd

8 S 0 75 1 80 1 20 ff249000 327 ff2de448 ? 0:01 in route

8 S 0 136 1 80 1 20 ff2c3000 287 f010fla4 ? 0:04 automoun

8 S 0 143 1 80 1 20 ff293000 270 f010fla4 ? 0:01 cron

8 S 0 123 1 49 1 20 ff28e800 258 f010fia4 ? 0:01 statd

8 S 0 104 1 80 1 20 ff25a000 301 f010fla8 ? 0:01 rpcbind

8 S 0 106 1 77 1 20 ff258800 272 f010fia4 ? 0:01 rpc.rwal

8 S 0 108 1 80 1 20 ff260800 272 f010dla4 ? 0:01 rpc.ruse

8 S 0 110 1 78 1 20 ff266800 272 f010fla4 ? 0: 01 rpc. spra

表1.3是ps -el长报告中各域的说明表

域说明

F 十六进制标示,加在一起表示进程目前的状态

      00进程已经终止,它对应的进程表项已空

      01此进程是一个进程且总是在内存中

      02此进程正被它的父进程跟踪

      04此进程在被它的父进程跟踪,且已经停止运行

      08此进程不能用信号激活

      10进程正在内存中且在一个文件完成之前被锁住

      20此进程不可换出

S 进程的当前状态,由下列字母之一表示:

      O正在处理器上运行

      S睡眠;等待IO事件完成

      R运行就绪。

      I空闲状态,进程正在创建

      Z僵尸状态;进程已经终止且父进程不再等待,但此死进程仍留在进程表中。

      T因父进程正在跟踪它而停止执行

      X等待获得更多的内存

UID 进程所有者的用户ID号

PID 进程标识号

PPID 父进程的标识号

C 进程所用的CPU时间(该进程所用CPU时间的百分比估计值)

PRI 进程调度优先级,数字越大表示优先级越低

NI 进程的nice数,影响其调度优先级,提高进程的nice数意味着降低其优先级、使用更少的CPU时间

SZ 进程所需虚存数量,它很好地表示出进程对系统存贮器的要求。

TTY 启动此进程(或父进程)的终端,或者是“?”表示无控制终端(通常表示系统进程)。

TIME 进程从启始到目前所使用的CPU时间总和

COMD 产生此进程的命令。4.2使用ps报告

当需要哪些进程或系统管理进程正在运行时,使用ps -e选择项,如果还想得到过程的更详细信息,用ps -el选择项。各选择项的详细说明参考ps(1)命令手册。

下面是如何发现潜在问题的指南:

*查看有没有由同一用户所有的相同作业,若有,这可能是由于某用户运行了启动一组后台作业的shell程序,但没有等待作业终止,找用户谈谈,看是否是这种情况,如果必要,用kill命令杀死其中一些进程,有关杀死一个进程的详细介绍参见后面几节。

*查看TIME域,看哪些进程占用了大量的CPU时间,这样的进程可能导致死循环。

*查看C域,找出占用大量CPU时间且不重要的进程,如果认为此进程确实不值占用如此多的CPU时间,可以用priocntl命令降低它的优先级,有关priocntl命令的详细信息,参考prioentl(1)手册。

*查看SZ域,找出占用太大内存的进程。如果某个进程占用了过于大的内存,将它杀死,如果系统中有许多进程都需要大量内存,则可能需要扩充内存。

*查找占用CPU时间越来越多的失控进程,可以用带-f可选项的ps命令查看其超始时间(STIME),也可直接看其TIME域所指的CPU累计时间。

1.4.3杀死进程

有时用户需要彻底地消除一个进程,这时用kill命令,kill命令的格式为kill-,此处是一个数或一个名称。

注意:仅当进程不能正常退出时用kill命令。

有时用kill命令后进程仍未死掉,最常见的三种情况:

;进程退出前正在等待一个设备(如磁带机)完成某种操作。

;进程正在等待由于nfs出现问题而无效的资源,在这种情况应该用kill-QUIT命令来杀死一个进程。

;进程处于僵尸态,正如ps报告的消息所显示,僵尸进程已经释放了它所占资源,但还没有接收到父进程的回应,一般接收到回应后删除对应的进程表项,在下次启动系统时,僵尸进程被消除,僵尸(ZombIEs)进程不影响系统性能,所以用户不必删除它们。

要杀死一个进程:

1、 变成超级用户,要杀死一个非你拥有的进程,你必须成为超级用户。

2、 键入ps -e,将显示出一组进程,使用第一栏的PID(进程ID)号作为下一步的输入,如果你知道是哪个进程出了问题,则可以键入:

ps -e | grep 来找到其进程ID

3、 键入kill-15 ,若仅键入kill,无参数,则缺省的信号是15。

4、 键入ps -e,检查进程是否已经终止,如果进程还存在,则到第5步。

5、 键入kill-9 ,这个进程应该被终止。 键入man -s5 signal,查看kill所使用的信号描述。

例如:如果gtxa系统上的Open Windows 死了,你必须从另一个系统远程注册来杀死此进程。

elm% rlogin gtxa

PassWord:

gtxa% ps-e │ grep openwin

PID TTY TIME COMD

2212 pts/0 0:00 openwin

2213 pts/1 0:00 grep openwin

gtxa # kill 2212

gtxa # exit

gtxa% logout

elm%

1.5基本管理工具

Solaris系统软件提供以下两种管理工具:

*一组通用的操作系统命令

*具有图形用户接口的管理工具(Administration Tool)。

1.5.1经常使用的命令

下面几节简单地介绍基本的Solaris命令,你很可能会使用它们作为系统管理例程的一部分,更详细的介绍参见第二章中的“Basic OS Commands”及附录A列出的SunOS 4.x命令与SunOS 5.x命令的对照表。

1.5.1.1在文件系统中移动

Solaris系统软件是有一个层次结构的文件系统,当管理系统时,你需要了解目前处于文件系统的哪个位置、如何转到不同的目录。

1.5.1.2查看在文件系统中所处的位置

要知道目前处于文件系统的哪一层,键入pwd。pwd(打印工作目录)命令显示当前目录:

gtxa&pwd

/etc

gtxa%

1.5.1.3改变目录

要改变目录,键入cd 。cd(改变目录)命令使你进入所键入的目录中:

gtxa% cd /usr

gtxa%% pwd

/usr

gtxa%

如果仅键入cd而没键入路径名,你就返回注册目录下。

1.5.1.4查看文件的有关信息

用ls命令可以显示目录内容以及文件的许可权、符号链、所有者、组、文件长度(字节数)、修改日期及时间和文件名,许多用户存取文件出错的原因,追根底在于拥有不正确的许可权或所有权,有关此类问题的详细说明见第10章“识别文件存取问题”。

1.5.1.5显示文件信息

要显示某个文件的有关信息,键入ls -1 ,则显示许可权、符号链、所有者、组、文件长度(字节数)、修改日期及时间和文件名。

要看目录中的全部文件,键入ls -1a,有关ls的选择项清单可参见命令手册。

gtxa% ls -1 /etc/passed

-r--r--r--lrootsys659 Feb 24 17:28/etc/passed

gtxa%

1.5.1.6查找一个文件

要从根目录开始搜索寻找到一个文件, 就键入find $HOME -name -print. $HOME变量表示查找从根目录开始。 -name选项表示要查找指定的文件名,-print 选项要求显示出查找的结果。如果没找到中指定的文件则系统回到提示符状态。

下面例子是查找文件core:

gtxa% find $HOME -name core -print

/home/ignatz/core

gtxa%

表1.4 find命令的可选项

可选项 说明

-fstype 查找指定类型的文件系统,通常用ufs或nfs中的文件

-prune 限制搜索到指定的目录

-nouser 查找不属于/etc/passwd中用户的文件

-nogroup 查找不属于/etc/group中组的文件

-atime 查找在最后天被存取过的文件

-mtime 查找在最后天被修改过的文件

-ctime 查找在最后天被改变过的文件, 这种改变包括改变文件的属性。如链接数、所有者或组

-Xdev 限制只对一个文件系统搜索

有关find命令可选项的完整说明见find(1)。

1.5.1.7查看一个文件的类型

某些情况下需要确定一个文件的类型,如要查看一个文件的类型,则键入file 。输出结果是指定文件的文件类型。

例如:如果一个用户试图执行一个无执行许可权的ASCII 文件或空文件,查看文件的类型可以得知此文件是ASCII 文件或空文件而不能执行。

以下是空文件的例子:

gtxa% file junk

junk: empty file

gtxa%

以下是ASCII文件的例子:

gtxa% file junk

junk: ascii text

gtxa%

以下例子中,文件是具有可执行许可权的文本文件,所以file命令报告该文件可执行,且是文本文件。

gtxa%chmod 777 junk

gtxa% file junk

junk: commands text

gtxa%

你也可以用ls -1命令来查看某文件是否有执行许可权。

可以用file *命令查看一个目录中全部文件的类型。文件按字母顺序列出,后面跟文件类型:

gtxa% file *

coterie: Directory

course: ascil text

dead. letter ascii text

ksyms English text

people: directory

personal: directory

showrev: ascii text

status: directory

text: directory

toodo: ascii text

gtxa%

1.5.1.8查看文件中的信息

用grep和egrep命令可查找文件或命令输出的某些特定信息。

1.5.1.9查找文件中的字符串

键入grep 可查找文件中的指定字符串,且显示文件可包含该字符串的行。

例如:查找passwd文件中包含csh的行:

gtxa% grep csh /etc/passwd

ignatz: 6693: 10:Ignatz 64607:/home/ignatz: /bin/csh

fred: 14072:10:Fred Lux:/home//home/fred:/vin/csh

gtxa%

同时查找多个文件的方法是:在命令中输入多个文件名,它们之间以空格分开;或者用无字符代文件名(或与文件名一起使用)。

为显示出不包含某字符串的行,可以键入grep -v 。

查找具有某种模式的输入行,可以将grep以管道的方式与许多管理命令结合起来使用。

例如:要查找某一用户当前的全部进程,可以将ps命令和grep结合起来使用,并查找该用户名,键入ps -e│grep 。即显示该用户名的清单。可用下面的命令查找Open Windows的全部进程:

gtxa%ps -e │grep openwin

PID TTY TIME COMD

2212 pts/0 0:00 openwin

gtxa%

1.5.1.10查看文件

毫无疑问,人们要花很时间查看文件的内容,需要查看整个文件时可以用more命令,当只需看文件尾的内容时(如日志(log)文件),可用tail命令来显示文件的最后10行,当重要信息在文件头时,可用head命令显示文件的前10行。

1.5.1.11浏览文件

可以键入more 来浏览文件,文件一次只显示一屏,按空格键显示下一屏。当你用more浏览文件时,若想查找文件中的某个字符串,可以键入/。屏幕滚到你要查找的字符串的位置, 并在窗口顶部显示要找的字符串的“... skippin”信息。如果未找到,则屏幕不滚动并显示出“Pattern not found”。

例如:要查找/etc/mail/aliasses文件中的Local aliases串, 可键入/Local aliases.

/Local aliases

... skipping

# # # # # # # # # # # #

# Local aliases below #

# # # # # # # # # # # #

注意:在more命令中一定要用正确的大小写字母。上例中,如果你键入了/local aliases,则会告诉你没有找到。

为了查找下一个匹配的字符串,键入n。键入q退出more命令,显示shell 提示符。

为显示shell intr 字符,可键入stty -a,就显示stty的设备清单,下列中:^h(退格键)是删除字符:

gtxa%

speed 9600 bau;

rows=35; columns=80; ypixel =9; xpixels=0;

eucw 1:0:0:0, scrw 1:0:0:0

intr=^c;quit=^│; erase=^?;kill=^u

eof=^d; eol+^; eo12=;swtch=;

start=^d; stop =^s;susp=^z;dsusp=^y;

rprnt=^r; flush =^o; werase=^w; lnext =^V;

parenb-parodd cs-cstopb hupcl cread-clocal -loolk -

crtscts-parext

-ingbrk btkint ignpar-parmrk-inpck istrip -inncr -

igncr icrnl-iucle

ixon-ixany-ixoff imaxbel

isig icanon-xcase echo echoe echok-echonl-noflsh

-tostop echoctl -echoprt echoke -defecho -flusho -

pendin inxten

opost-olcuc onler -onocr -ofill-ofdel

1.5.1.12查看文件尾

若要查看文件尾,键入tail , 显示出文件的最后10行(缺省情况),下例显示了/etc/lp/system文件尾:

gtxa% /usr/bin/tail /etc/lp/system

#

# Kepler:x:-: s5: -:n:10:-:-:SVR4.0 OS

# fubar:x:-bsd:10:n-:-:BSD OS

# Galialeo:x:-:s5:-30:10-:-:

# # # # #

billboard:x-:bsd:-:n:10:-:-:

homeboyl:x-:s5:-:n:10-:-:

regal:x:-:s5:-:n:10-:-:

mrplod:x:-:s5:-:n:10:-:-:

gtxa%

缺省时,head和tail命令显示10行,可靠用-n任项来控制显示行数,用你要显示的行数代替n。例如:要显示最后20行, 可键入tail -20 。

注意:tail命令最多能显示4096字节(大约400行)。

1.5.1.13查看文件头

若要查看文件头,可键入head这时显示出头10行

下例中显示/etc/password文件:

gtxa% /usr/bin/head /etc/pased

rood:x:0:1:0000-Admin(0000):/:sbin/sh

daemon:x:1:1:0000-Admin(0000):/:

bin:x:2:2:0000-Admin(0000):/var/adm:

sys:x:3:3:0000-Admin(0000):/:

adm:x:4:4:0000-Admin(0000):/var/adm:

lp:x:71:8:0000-lp(0000):/usr/spool/lp:

smtp:x:0:0:mail daemon user:/:

uucp:x:5:5:0000-uucp(0000):/usr/lib/uucp:

nuucp:x:9:9:0000-

uucp(0000):/var/spool/uucppublic:/usr/lib/uucp/uucico

listen:x:37:4:Network Admin:/usr/net/nls:

gtxa%

1.5.1.14改变文件的所有权和许可权

用户的许多问题可能是由文件的所有权和许可权问题产生的,用ls命令可查看文件的所有权和许可权,如果要改变它们,可用:chown、chmod和chgrp命令。

*改变文件所有权

你必须拥有一个文件或目录(或者你是超级用户)你才能成为属主

1>键入ls -1 。文件的属主显示在第三列中

2>进入超级用户

3>键入chown . 所有权按赋予指定的新属主文件。

gtxa% ls -1 quest

-rw-r--r--1fred staff 6023 Aug5 12:06 quest

gtxa% su

Password:

# chown ignarz quest

# ls-1 quest

-rw-r--r--lignatzataff6023 Aug5 12:06 quest

#

更详细的介绍请参见第10章。

* 改变文件的许可权

表1.5列出的设置文件许可权的8进制值。可以用三个这样的数来分别设置属主、组和其它用户的许可权。例如:644 说明属主有读/写权限,同组用户和其它用户有只读权限。

表1.5 文件权限的八进制值

值 说明

0 无权限

1 只可执行

2 只可写

3 可写、可执行

4 只读

5 可读、可执行

6 可读、可写

7 可读、写、执行

1>键入ls -1 。列表显示出文件当前的权限。

2>键入chmod 。改变文件的权限变为你指定的值。

注意:可以用元字符(如* ?)替换文件名,或与它们一起使用来更改多个文件或一个目录中所有文件的权限。

下例中,将一个文件权从666改为644。

gtxa% ls - 1 quest

-rw-rw-rw-lignatzstaff 6023 Aug5 12:06 quest

gtxa% chmod 644 quest

gtxa%ls -1 quest

-rw-r--r--lignatzstaff6023 Aug5 12:06 quest

gtxa%

1.5.1.15改变文件组

若要改变文件组,键入chgrp 。改变指定文件的组ID

$ls -lg junk

-rw-r--r--l other 0 Oct 31 14:49 junk

$chgrp 10 junk

$ls -lg junk

-rw-r--r--l ataff 0 Oct 31 14:49 junk

组ID号在Group数据库或本地/etc/group文件中定义, 关于组的详细信息请参见第7章。

1.5.1.16设置或显示系统环境

shell使用shell初始化文件中给出的一组说明来维护环境,用户也可以直接发命令给shell来修改shell从环境变量中得到有关环境的信息。Solaris系统软件提供7个缺省的环境变量。

*PSI:定义shell提示符。Bourne和Korn shell的缺省提示符是$。C shell的缺省提示符是%,任何shell中root的缺省提示符皆是#。用户可以在.profile,.login 或.cshrc 文件中下义不同的shell提示符。

*HOME:定义用户主目录的绝对路径。作为注册进程的一部分,自动定义HOME的缺省值,并且设置为/etc/passwd 文件中说明的注册目录。当键入cd命令且无参数时,shell转到HOME 变量所确定的目录之下。

*LOGNAME:定义用户的注册名。作为注册进程的一部分,LOGNAME的缺省值被自动定义且设置为/etc/passwd文件中说明的注册名。

*PATH:列出一组目录。当用户敲入命令后,shell 按顺序从这些目录中查找要执行的程序。如果一个命令所在的目录不在该查找路径中,则用户必须键入该命令的全部路径。做为注册进程的一部分,PATH的缺省值是按.profile(Bourne和Korn shell)或.cshrc(C shell)文件中的说明设置。查找路径的顺序是非常重要的。当同名的命令在不同的目录存在时,执行的是第一个找到的命令。例如:假设PATH(以Bourne 和Korn shell方式)定义为PATH =/bin:/usr/bin/:usr/sbin:$HOME/bin,在usr/bin和/home/jean/bin目录中均有名为sample的程序,当用户不键入路径,而只是键入sample命令时,则执行/usr/bin目录中的sample程序。

其它环境变量包括:

*LPDEST:设置用户的缺省打印机

*OPENWINHOME:设置Open Wimdows可执行码的路径

*DESKSET:设置DESKSET的可执码的路径

*LANG:设置本地语言,可能值是:english、japanese、German、French、Swedish和Italian等

*HZ:设置Borne和Korn shell的历史

*TZ:设置时区

*SHELL:设置make,vi或其它工具所使用的缺省shell

*MAIL:告诉shell到哪去查找新的邮件

*MANSECTS:设置手册的有效章节

用户和系统管理员可另外定义自己使用的环境变量,当用户从shell命令中定义环境变量时,只要用户不退出shell,则定义的环境变量就一直起作用。退shell,则不再起作用。可将“永久”环境变量存在.profile、.login或.cshrc文件中,定义环境变量的语法依不同的shell而不同。

1.5.1.17定义Bourne和Korn shell环境变量

若要定义Bourne和Korn shell环境变量,键入=;export .

$HZ=100;export HZ

1.5.1.18定义C shell环境变量

若定义C shell 环境变量,键入setenv .

%setenv DISLAY rogue:0

1.5.1.19显示环境变量的设置

若要显示出当前的环境变量设置,键入env。

$env

HOME=/home/irving

HZ=100

LOGNAME=irving

MAIL=/var/mail/irving

MANSECTS=\1:1m:1c:1f:1s:1b;2\3:3c:3i:3n:3m:3k:3g:3e:3x11:3xt:3w:3b:9:4:5:7:8

PATH=/usr/bin

SHELL=/bin/sh

TERM=sun

TZ=ESTS5EDT

1.5.1.20使用PATH变量

PATH环境变量是非常重要的。当用户执行一个带有全路径名的命令,shell按给定的全路径名去查找命令,当用户只给出命令名时,shell就按PATH环境变量给定的路径顺序去查找目录,若在某一目录中找到该命令时,就执行它。

缺省的根PATH(sbin:/usr/sbin:/usr/bin:/etc)是由系统设置的,但许多用户还在上面添加一些别的命令目录,用户的许多问题,如有关设置环境使用命令或工具的不正确版本等,常常是由于路径设置不正确所产生的。

1.5.1.21设置Bourne和Korn shell路径

Bourne与Korn shell的路径是在用户的$HOME/.profile 文件中如下设置的:

PATH=.:/usr/bin:/$HOME/bin

1.5.1.22设置C shell路径

C shell的路径是在用户的$HOME/.cshrc 文件如下设置的:

set path=(./usr/bin $ home/bin)

更详细说明请参阅有关手册和第10章。

1.5.2使用管理工具

管理工具是Open Windows的一个具有图形用户接口的工具。它用来管理主机系统和/etc下的17个数据库。使用这一管理工具可以管理用户和组,可以管理NIS+数据库和本地/etc目录下的文件。

第2章、基本OS命令

本章将介绍:查找用户信息、查找环境信息、创建和编辑文件、命令组合和输出定向、使用手册、查找硬盘信息 。

本章解释基本的操作系统命令,提供查找有关用户和系统环境信息的方法,同时讲述建立和编辑文件、命令组合、输入重定向,显示手册以及查寻基本磁盘信息的各种方法。

2.1查找用户信息

在管理系统时,经常需要知道谁在使用系统及他们在做些什么。本节描述了解用户信息的命令:who、finger、rusers -1、whodo、id等。

2.1.1确定系统中有谁注册

(who、finger、rusers -1、whodo、id)可以使用上述四个命令之中的一个来发现谁注册进入系统。每个命令还显示各种不同附加信息。

2.1.1.1使用who命令

who命令显示注册进入系统的用户名单,注册的tty端口,以及日期和时间,如果某用户是远程注册的,那么本命令还显示该用户的远程系统名,使用who命令的方法是:键入who。

在下例中,用户irving是远程注册的,用户ignatz是系统gtxa 的本地用户。

gtxa% who

irving pts/1 Oct 31 14:33(elm)

ignatz console Oct 31 12:22

gtxa%

2.1.1.2使用finger命令

finger命令显示注册进入系统的用户注册名,同时显示用户全名(取名/etc/passwd文件对应项的information域),tty端口,星期几,注册时间,如果是远程注册的用户,还显示远程系统名。使用finger命令的方法是:键入finger

在这个例子里,用户winsor从系统castle远程注册

gtxa%flogin @openet

openet%finger

Login Name TTY Idle When Where

Winsor Janice Winsor pts/0 11 Thu 09:59 castle

gtxa%

2.1.1.3使用rusers -1命令

rusers -1(远程用户注册)命令,显示从远程系统注册的用户名清单,同时显示用户注册的系统名,tty端口,日期,登录时间以及空闲时间(idle time)。如果主机不空闲,那么最后一列不显示,使用本命令的方法是:键入rusers-1后再回车。

gtxa%rusers -1

Sending Broadcast for rusersd protocol version 3...

Sending Broadcast for rusersd protocol version 2...

jah caps:consloe Mar 3 13:03 22:03

amber facehole: console Mar 2 07:40

sebree ondine: consloe Mar 2 10:35 14

tut cairo: consloe Mar 2 16:48

jrt cairo: ttyp5 Mar 2 16:20 47:54(gap)

ramseyis mowthelawn: consloe Mar 2 16:33 28

ramseyis mowthelawn: ttpy6 Mar 3 14:20 25:14

(:0.0)

(More logins not shown)

gtxa%

2.1.1.4使用whodo命令

whodo命令显示日期、时间和系统名。它为每一个注册的用户显示设备名、UID、注册时间以及一个与此UID相联系的活动进程表。此表的内容包含设备名、PID、使用的CPU时间(分、秒)以及进程名。

键入Whodo,可以看到谁注册了,以及注册者在做什么。

gtxa%whodo

Tue Mar 12 15:48:o3 1992

SunOs

tty09 men 8:51

tty09 28158 0:9sh

tty52 bdr 15:23

tty52 21688 0:05sh

tty52 22788 0:01whodo

tty52 22017 0:03vi

tty52 22549 0:01sh

2.1.2检查用户的用户号和组号(id命令)

使用id命令可以显示注册用户的用户id和组id号,当用户不能访问他们认为属于自己的文件时,使用这些信息来查找错原因,据此信息也可知道用户所属的组。使用id命令时,用户先注册,然后键入id命令。如果uid和uid与出现问题的文件的uid或gid不匹配,就需要改变文件的属主或组,或者将用户加入相应的组中。详见第5章。

gtxa%id

uid=6693(winsor)gid=10(staff)

gtxa%su

Password:

#id

uid=0(rood) gid=1(other)

#

2.2查寻环境信息

每个系统都有一个运行环境,这些环境说明在用户初始化文件标准shell和Korn shell的.profile或C shell的.cshrc和.login中定义,也可通过shell直接定义环境变量。环境变量可以规定诸如用户主目录,注册名,缺省打印机,电子邮件地址以及访问Open Windows环境的路径。本讲讲述如何查到环境变量的设置。这方面的更详细信息请见第8章。

为了显示用户的环境变量设置,键入env命令。这样系统地显示出环境变更的设备清单,关于环境变量的缺省设置值及如何设置环境变量,请见第1章的有关内容。

gtxa%env

HOME=/

PATH=:/home/ignatz:/usr/bin:

/home/ignatz/bin:/bin:/home/bin:/etc:/usr/etc

LOGNANME=ignatz

HZ=100

TZ=PST8PDT

TERM=sun

SHELL=/bin/csh

MAIL=var/mail/ignatz

PWD=/

MANSECTS=\1:1m:1c:1f:1s:1b:2:\3:3

c:3i:3n:3m:3k:3g:3e:3x11:3xt:3w:3b:9:4:5:7:8

gtxa%

2.3创建和编辑文件

本节描述如何使用cat、touch、cp、mv、Text Editor和vi命令来创建和编辑文件。

2.3.1使用cat命令

使用cat命令可创建短文件或附加少量文本信息到一个已存在的文件末尾。用cat命令创建文件可以:

1、键入cat ;

2、录入文本内容;

3、键入回车;

4、键入Control-D。

文本被存盘,shell提示符重新出现。

用cat命令将文本附加到已存在的文件上可以:

1、键入cat ;

2、录入内容;

3、键入回车;

4、键入Control-D。

文体被存盘,shell提示符重新出现。

2.3.2使用touch命令

touch命令将每个文件的访问和改动时间设为当前时间,如果文件不存在,就创建一个新文件。可以用touch命令创建一个空文件来检查允许权和属主,或创建一个文件用于以后录入文本。

要创建一个空文件,只需键入touch 这样一个新的空文件就创建出来了,如果此文件已存在,那么文件的修改时间就变为当前的日期和时间。

gtxa%ls -1 junk

junk: No such file of directory

gtxa%touch junk

gtxa%ls -1 junk

-rw-r--r--livringstaff 0 Sep 11 15:06 junk

gtxa%

2.3.3文件拷贝(cp)或改名(mv)

可以通过一对一已存在的文件进行拷贝或改名来创建一个新文件。

拷贝已存在的文件的方法是:键入cp ,这样就得到了原文件的拷贝,而且保留了原来的文件。

mv

原文件被改名,原名文件就不再存在。

gtxa%mv quest /tmp/quest。old

gtxa%

2.3.4文本编辑器的使用

可以使用Open Windows的文体编辑来创建和编辑文件。然而普通用户在使用文本编辑器来编辑具有根允许权限(root pemissions )的文件时可能会出现一些问题。

进入Open Windows工作区的主菜单中选择programs,再在programs菜单中选择Editor来打开文体编辑器,也可以在命令行键入:textedit &来打开文体编辑器。打开之后,显示一个文本编辑器窗口。进行编辑时,可使用键盘上Cut、Copy、Paste、Undo键来加快文本的编辑速度。

2.3.5 vi的使用

全屏幕编辑器vi,通常是由系统管理员编辑文本文件。有专门的一些书讲述vi使用法。本节仅提供其中最常用的编辑命令供用户参考。只需键入 vi 。就可启动vi,如果文件不存在,那么就打开一个新文件,当存入内容时,此新文件就创建出来,如果文件已经存在,则在启动完vi以后,就在屏幕上显示此文件的开头一部分内容。

表2.1一些基本的vi命令

功能命令

不存盘退出:qi

存盘:w

存后退出:wq

存后退出ZZ

左移一字符h

右移一字符i

上移一行k

下移一行j

移到文件尾G

插入文本(插入方式)v(文本)ESC

在光标后附加文本a(文本)ESC

在行尾附加文本A(文本)ESC

如何退出命令方式ESC

删行dd

删字符x

删词dw

在上一行开始加入新文本O

在下一行开始加入新文本o

拷贝一行到缓冲区Y

将缓冲区内容置于当前光标之前P

将缓冲区内容置于当前光标之后p

2.4命令组合及输出重新定向

SunOS 5.0系统允许以多种方法组合命令,本节讲述命令组合的三种方法。

2.4.1在同一命令行里键入多个命令

在命令之间用分号(;)隔开,就可以在同一命令行中键入多个命令,例如,可以用cd /usr/bin;ls命令先转到一个目录中,再列出此目录中的目录和文件,另外一个例子是为Bourne shell设定环境变量再输出(export)该变量。

PATH=。:/usr/bin:$HOME/;export PATH

2.4.2输出重新定向(

阅读(851) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~