| 网站首页 | IT技术中心 | 免费资料下载 | 图霸天下 | 访客留言 | IT资讯 | IT产品报价 | 网络社区 | 圣诞狂欢 | 
最新公告:

  没有公告

您现在的位置: ITVUE网络无极限 >> IT技术中心 >> 考试专区 >> Linux/Unix系列认证 >> 最新信息正文

 

 

专题栏目
更多内容
最新推荐 更多内容
相关文章
没有相关最新信息
更多内容
[推荐]Solaris9系统基本管理中文读书笔记(三)         ★★★★
Solaris9系统基本管理中文读书笔记(三)
作者:ITVUE整理 文章来源:chinaitlab 点击数: 更新时间:2004-10-31

Module8 Using Commands within the Korn Shell


Using the Shell Metacharacters

Korn shell支持用一些特殊的符号来代替特殊的意义,有3种metacharacters:
1.路径名(path name)metacharacters
2.文件名置换(file name substitution)metacharacters
3.重定向(redirection)metacharacters
注意不要在创建文件和目录名的时候使用这些metacharacters,因为它对Korn shell有着特殊的含义

Using the Path Name Metacharacters

波浪号~代表当前用户的主目录,是绝对路径的缩写,如下:
$ cd ~/dir1
$ pwd
/export/home/user1/dir1/
$
~在除了Borune shell的所有shell中都起作用

在~号跟着用户名可以切换到该用户的用户主目录,如下:
$ cd ~user2
$ pwd
/export/home/user2
$

波浪号和加号的组合(~+)代表当前工作目录
波浪号和破折号的组合(~-)代表之前的工作目录
如下是列出当前工作目录和返回到之前的工作目录:
$ cd
$ pwd
/export/home/user1
$ cd dir2
$ ls ~+
beans notes recipes
$ cd ~-
$ pwd
/export/home/user1
$ cd ~-
$ pwd
/export/home/user1/dir2
$

破折号(-)代表之前的工作目录,可以使用-进行目录之间的切换,shell自动显示当前目录路径,如下是在tmp和user1目录之间进行切换:
$ cd
$ pwd
/export/home/user1
$ cd /tmp
$ pwd
/tmp
$ cd -
/export/home/user1
$ cd -
/tmp
$

Using the File Name Substitution Metacharacters

星号(*)通常作为通配符,来代表0个或多个字符,如下是列出所有以f开头的文件和目录(除了隐藏文件和隐藏目录:
$ ls f*
feathers file.1 file.2 file.3 file4 fruit2 feathers_6 file1 file2 file3 fruit
$
列举以3结尾的文件和目录,如下:
$ ls *3
file.3 file3
dir3:
cosmos moon planets space sun vegetables
$

问号(?)代表了任何单个字符,比如列出以dir开头然后紧跟某个字符的所有文件和目录(除了隐藏文件和隐藏目录):
$ ls dir?
dir1:
coffees fruit trees
dir2:
beans notes recipes
dir3:
cosmos moon planets space sun vegetables
dir4:
constellation memo roses
dir5
$
假如没有找到匹配内容,将返回错误提示信息,如下:
$ ls z?
z?: No such file or directory
$

方括号([])代表单个字符中可选的一组范围,比如[abc]*即代表以a或者b或者c打头的,这个写法等同于[cab]*,即顺序与否无所谓.还可以使用连字符(-)来连接第一个和最后一个字符,比如[a-z]就是从a到z,[0-9]即为0到9.如下是列举所有以a到f开头的文件和目录:
$ ls [a-f]*
brands dante_1 file.1 file2 file4 celery feathers file1 file.3 fruit dante feathers_6 file.2 file3 fruit2
dir1:
coffees fruit trees
dir10:
planets
dir2:
beans notes recipes
dir3:
cosmos moon planets space sun vegetables
dir4:
constellation memo roses
dir5:
$
列举以f或者以p开头的文件和目录,如下:
$ ls [fp]*
feathers file.1 file.2 file.3 file4 fruit2 feathers_6 file1 file2 file3 fruit
perm:
group motd passwd skel vfstab
practice1:
appointments file.1 file.2 play
$

前引号(‘ ‘)告诉shell忽略其中的内容
双引号(“ “)告诉shell忽略其中除了$,`和\3种符号以外的内容
反斜线(\)防止shell把在它之后的内容解释成metacharacters
如下是前引号的例子:
$ echo ‘$SHELL‘
$SHELL
$
(echo命令把参数输出到标准输出上去)
再来看看双引号的实例,如下:
$ echo "$SHELL"
/bin/ksh
$
来看下反斜线的例子,如下:
$ echo "\$SHELL"
$SHELL
$
后引号(’ ’)让shell来执行和显示系统命令的输出,如下是执行pwd命令和执行date命令:
$ echo “The user is currently in the $(pwd) directory.”
The user is currently in the /export/home/user1 directory.
$ echo “Today’s date is ‘date‘”
Today’s date is Wed Apr 7 14:10:05 MDT 2004
$

Using the Redirection Metacharacters

先来看看标准输出标准输入的概念,如下图:

从上图可以看出:默认情况下,shell从键盘接收输入命令,将输出或者是错误信息显示到显示器上

对标准输入进行重定向,格式为:
command < filename或command 0< filename
比如使用dante文件作为输入,如下:
$ mailx user1 < ~/dante

对标准输出进行重定向,格式为:
command > filename或command 1> filename
把pe命令的输出输入到名为pslist文件中去,如下:
$ ps -ef > pslist
假如要将输出追加结果追加(即不是覆盖)到已有文件中去,使用下列格式的命令:
command >> filename
如果文件不存在,系统自动创建一个新文件
如下是把hello追加到文件my_file中去:
$ ps > my_file; cat my_file
PID TTY TIME CMD
663 pts/5 0:01 ksh
$ echo "hello" >> my_file; cat my_file
PID TTY TIME CMD
663 pts/5 0:01 ksh
hello
$

对标准出错进行重定向,格式为:
command 2> /dev/null
如下把错误信息重定向到/dev/null中去:
$ find /etc -type f -exec grep PASSREQ {} \; -print
# PASSREQ determines if login requires a password.
PASSREQ=YES
/etc/default/login
grep: can’t open /etc/inet/mipagent.conf-sample
grep: can’t open /etc/inet/mipagent.conf.fa-sample
grep: can’t open /etc/inet/mipagent.conf.ha-sample
grep: can’t open /etc/security/dev/audio
grep: can’t open /etc/security/dev/fd0
(略)
$ find /etc -type f -exec grep PASSREQ {} \; -print 2> /dev/null
# PASSREQ determines if login requires a password.
PASSREQ=YES
/etc/default/login
$
假如要把标准输出和标准出错重定向到相同的文件中去,使用以下命令格式:
command 1> filename 2>&1
把标准输出和标准出错打印到dat文件中去,如下:
$ ls /var /test 1> dat 2>&1
$ more dat
/test: No such file or directory                 (标准出错)
/var:                                      (标准输出)
adm                                      (标准输出)
audit                                      (标准输出)
(略)

管道符号(|)用来把第一个命令的输出作为第二个命令的输入,格式为:
command1 | command2 | command3……
如下是把ps -ef的输出作为tail +2的输入,再把输出作为wc –l的输入:
$ ps -ef | tail +2 | wc -l
74
$

Displaying the Command History

Korn shell的一大特性就是拥有命令历史的功能,记录了你曾经输入过的命令.history命令用于显示之前输入过的命令,默认显示最后输入过的16条命令,格式为:
history option
如下显示之前输入过的命令:
$ history
...
87 date
88 cd /etc
89 touch dat1 dat2
90 ps -ef
91 history
$
一些选项:
1.-n:不显示行标,如下:
$ history -n
...
date
cd /etc
touch dat1 dat2
ps -ef
history
$
2.-4(或其他数字):显示最后1条命令和在它之前的4条命令,如下:
$ history -4
...
107 date
108 cd /etc
109 touch dat1 dat2
110 ps -ef
111 history
$
3.-r:反序显示,如下:
$ history -r
111 history
110 ps -ef
109 touch dat1 dat2
108 cd /etc
107 date
...
$
4.显示最近输入过的cd命令到最近输入过的ls命令,如下:
$ history cd ls
31 cd
32 man lp
33 date
34 ls
(略)

可以使用r命令来重复某条命令,如下是重复之前输入过的cal命令:
$ cal
(略)
$ r
cal
(略)

可以和history命令结合起来使用,如下:
$ history
155 history
156 cat dante
157 history
158 date
159 cal
160 ls
161 cd
$r 160

重复执行最近输入过的以字母c打头的命令,如下:
$ r c
cd /etc
$
重复执行最近一次使用过的ps命令,如下:
$ r ps
ps -ef
$

Module9 Performing Basic Process and Job Control


Introducing Solaris Operating Environment Processes

在Solaris9 OE中,每条进程都分配的有一个唯一的进程标识号(process identifier number,PID).kernel用PID来跟踪和管理进程.每条进程和用户标识号(user identifier number,UID)以及组标识号(group identifier number,GID)相互关联

当一条进程创建另外一条进程以后,之前那条进程就叫父进程(parent process),被创建出来的新进程就叫子进程(child process).当子进程运行的时候,父进程等待,当子进程完成任务以后便通知父进程,父进程就结束子进程.如果父进程是交互性的shell的话,那shell提示符出现,等待输入新的命令

使用ps命令列出进程的一些相关信息,格式为:
ps options
对于每条进程,ps命令将显示PID,终端标识符(terminal identifier,TTY),累积执行时间(TIME)和命令名(CMD)

来看看ps命令的一些常用的选项:
1.-e:打印系统上每条进程的信息,包括PID,TTY,TIME和CMD
2.-f:完全列表显示,还将增加显示UID,父进程标识号(PPID)和进程开始时间(STIME)

Displaying a Listing of All Processes

如下是以完全列表的形式显示进程的信息:
$ ps -ef | more
UID   PID  PPID  C  STIME  TTY  TIME  CMD
root   0     0    0   16:46:41  ?    0:01   sched
(略)
看看输出的含义,如下:
1.UID:进程拥有人的用户名
2.PID:进程ID号
3.PPID:父进程ID号
4.C:CPU的调度利用
5.STIME:进程开始的时间
6.TTY:进程的控制终端,注意上面例子中该项是?,代表不是由终端开始的进程,是守护进程(daemon)
7.TIME:进程累积运行的时间
8.CMD:命令名,选项和参数

Searching for a Specific Process

要查找某条进程,可以使用ps命令和grep命令结合管道符号(|)来进行查找,比如我要查找以lp打头的进程,如下:
$ ps -e | grep lp
217  ?  0:00  lpsched
$

可以使用pgrep命令来根据名字对特定进程进行搜索,默认显示该进程的PID,命令格式为:
pgrep options keyword
先来看看pgrep的一些常用的选项,如下:
1.-x:显示精确匹配关键字的进程的PID
2.-n:显示最近创建的包含关键字的进程的PID
3.-U [UID/用户名]:显示某个用户所有的进程的PID,可以使用用户名或者是UID
4.-l:一起显示PID和进程名
5.-t [term]:显示和某个终端相关联的进程的PID

显示包含lp的进程的PID,如下:
$ pgrep lp
217
$
连同进程名和PID一起显示,如下:
$ pgrep -l lp
217 lpsched
$ pgrep -l mail
230  sendmail
13453 dtmail
显示和终端pts/2相关联的进程和PID,如下:
$ pgrep -lt pts/2
697 ksh
来看下精确匹配关键字的例子,如下:
$ pgrep -l mountd
155   automountd
$ pgrep -xl mountd
$ pgrep -xl automountd
155   automountd
$

Sending a Signal to a Process

信号(signal)是发送给进程的迅息,然后进程作出相应的反应.来看看一些比较常见的信号,如下图:


Terminating Using the kill and pkill Command

使用kill命令发送信号给一条或多条进程,如果你是普通用户,那你只能对你自己所拥有的进程使用kill命令;如果你是超级用户,你可以对任何进程使用kill命令.默认情况下,kill命令使用信号15,即终止信号.命令格式为:
kill [-signal] PID(s)
当然在你对进程进行操作的时候,首先你要知道进程的PID,如下:
$ pgrep -l mail
215    sendmail
12047  dtmail
$ kill 12047
$ pgrep -l mail
215 sendmail
$
由上面的例子可以看出进程dtmail被我们用友好的方式给终止掉了
有的进程能够忽略掉信号15,这时,如果需要的话,我们就不得不采取强硬措施,使用信号9来对其进行杀死,格式为:
kill -9 PID
尽量不要使用信号9来对进程进行终止

你还可以使用pkill命令来对进程发送信号,默认使用信号15,与kill命令不同的是,它采用进程的关键字作为参数而不是PID,格式如下:
pkill [-options] keyword
例子如下:
$ pgrep -l mail
215   sendmail
470   dtmail
$ pkill dtmail
$ pgrep -l mail
215   sendmail
$
使用硬杀死的方式来终止进程,使用以下命令:
pkill -9 -x process_name

Managing a Job in the Korn Shell

任务(job)是shell管理的进程,shell启动和管理任务,因为任务也是进程,所以每个任务都有和它相互关联的PID.shell还给任务分配任务ID号.shell允许你同时运行多个任务.有3种shell管理的任务:前台任务(foreground job),后台任务(background job)和停止任务(stopped job)

当你在终端窗口执行命令,命令占据终端窗口直到它完成,这样的任务就是前台任务.当你在命令行最后输入符号&的时候,命令就以不占据终端窗口的方式悄悄运行,当你按下Return键的时候,shell提示符随即出现,这样的就是后台任务.当你对一个前台任务使用了CTRL+Z或者对后台任务使用了stop命令,任务随即停止,即为停止任务

来看看一些任务控制的命令:
1.jobs:列举当前所有运行的任务和后台停止了的任务
2.bg %n:在后台运行任务(n为任务ID号)
3.fg %n:在前台运行任务(n为任务ID号)
4.CTRL+Z:停止前台任务,然后把它作为停止任务放到后台
5.stop %n:停止后台任务(n为任务ID号)

比如我们要在后台运行sleep命令,如下:
$ sleep 500 &
[1] 3028
$
当任务完成后,按下Return键,shell显示信息提示任务已经完成,shell提示符显示,如下:
[1] + Done       sleep 500 &
$
使用job命令,如下:
$ jobs
[1] + Running     sleep 500 &
$
把后台任务调到前台运行,如下:
$ fg %1
sleep 500
再来看看把前台任务调到后台的例子,如下:
$ sleep 500
^Z[1] + Stopped (SIGTSTP)   sleep 500
$ jobs
[1] + Stopped (SIGTSTP)     sleep 500
$ bg %1
[1] sleep 500&
$ jobs
[1] + Running               sleep 500
$
不管你把停止任务放到前台或者后台,任务重新开始
最后看看停止任务的例子,如下:
$ jobs
[1] + Running               sleep 500&
$ stop %1
$ jobs
[1] + Stopped (SIGSTOP)      sleep 500&
$
还可以使用kill命令来终止任务,如下:
$ jobs
[1] + Stopped (SIGSTOP)      sleep 500&
$ kill %1
[1] + Terminated             sleep 500&
$ jobs
$

Module10 Creating Archives


Archiving Files

tar命令可以将几个文件归档成一个文件或者将从一个叫做tar文件的归档文件中分离文件.默认tar文件是归档到磁带机设备中去.命令格式为:
tar function(s) archivefile filename(s)
先来看看tar命令的一些functions:
1.c:创建新的tar文件
2.t:列出tar文件的内容
3.x:从tar文件中分离文件
4.v:在详细模式下执行tar命令,将输出写到标准输出上去
5.f:定义归档文件或磁带设备.默认的磁带设备是/dev/rmt/0

创建归档文件的时候,可以先验证下系统上的磁带机设备的状态正常与否.使用mt命令和status选项打印出磁带设备的状态信息.如下是把用户当前主目录的文件等全部归档到/dev/rmt/0中去:
$ cd
$ mt -f /dev/rmt/0 status
(略)
$ tar cvf /dev/rmt/0 .
a ./ 0 tape blocks
a ./dante 106 tape blocks
a ./dante_1 1 tape blocks
a ./logfile 5 tape blocks
(略)
把多个文件归档到1个文件中去,如下:
$ cd
$ tar cvf files.tar file1 file2 file3
a file1 2K
a file2 1K
a file3 1K
(略)

当你在磁盘上创建归档文件的时候,先把磁盘插入到合适的驱动器里,再运行volcheck命令.volcheck命令告诉Volume Management程序对驱动器中的磁盘进行检查.volcheck自动检查所有的磁盘,然后引导Volume Management程序按顺序的检查每条路径名.volcheck命令格式如下:
volcheck -v device_pathname
假如你光使用了volcheck -v而没加上设备路径名的时候,将收到错误提示:
media was found或no media was found
下面就是将你刚创建的tar文件拷贝到磁盘中去的例子:
$ cd /floppy/floppy0
$ ls
$
$ cd
$ cp files.tar /floppy/floppy0
$ ls /floppy/floppy0
files.tar
$
如果要弹出磁盘的话,切换到你的用户主目录,输入eject floppy命令即可.假如你当前工作路径是在可移动设备的时候.此时你想弹出磁盘,将收到错误信息Device busy.所以要先切换到你的用户主目录,再使用eject命令

在磁带中查看归档文件的内容,如下:
$ tar tvf /dev/rmt/0
./
./brands
./celery
(略)
在归档文件中查看文件内容,如下:
$ tar tf files.tar
file1
file2
file3
(略)

分离归档文件,如下:
$ cd
$ tar xvf /dev/rmt/0 .
x ., 0 bytes, 0 tape blocks
x ./brands 0 tape blocks
a ./celery 0 tape blocks
x ./dante, 54120 bytes, 106 tape blocks
x ./dante_1, 368 bytes, 1 tape blocks
(略)
从刚才创建的files.tar中分离文件,如下:
$ tar xvf files.tar
tar: blocksize = 11
x file1, 1610 bytes, 4 tape blocks
x file2, 105 bytes, 1 tape blocks
x file3, 218 bytes, 1 tape blocks
(略)
再看看先从磁带中将归档文件拷贝到用户主目录,再进行分离,如下:
$ volcheck -v /dev/diskette
$ cd /floppy/floppy0
$ ls
files.tar
$ cp files.tar /export/home/user1
$ cd
$ ls files.tar
files.tar
$ tar xvf files.tar
(略)

Compressing and Archiving Files Using the jar Command

jar命令和tar命令类似,命令语法如下:
jar option(s) destination filename(s)
看看jar命令的一些options:
1.c:创建新的jar文件
2.t:列出jar文件的内容
3.x:从jar文件中分离文件
4.v:在详细模式下执行jar命令,将输出写到标准输出上去
5.f:定义要处理的jar文件(比如/tmp/files.jar)

如下是将多个文件压缩并归档到一个jar文件中去:
$ ls
brands celery dante
(略)
$
$ jar cvf /tmp/bundle.jar *
added manifest
adding: brands(in = 0) (out= 0)(stored 0%)
adding: celery(in = 0) (out= 0)(stored 0%)
adding: dante(in = 1319) (out= 744)(deflated 43%)
(略)

Module11 Compressing, Viewing, and Uncompressing Files


Compressing Files Using the compress Command

可以使用compress命令把文件进行压缩来节约磁盘使用的空间,压缩比例根据文件类型而定.命令格式为:
compress [-v] filename
-v选项可选,表示详细(verbose)模式
当你使用这个命令压缩文件,将生成一个以.Z结尾的新压缩文件,如下:
$ compress -v files.tar
files.tar: Compression: 70.20% -- replaced with files.tar.Z
注意,假如你想对已经压缩过的文件进行二次压缩,只会使得文件的体积变的更大而非更小.再来看看不用-v选项的例子,如下:
$ compress files.tar
$

Viewing Compressed Files Using the zcat Command

可以使用zcat命令在不改变压缩文件内容的情况下,来查看以compress命令压缩过的文件的内容.命令格式为:
zcat filename
例子如下:
$ zcat files.tar.Z | more
file1010066000023210000012000000031120744415475300122310ustar00user1staff
00002100000007
         The Achievers
Unconsciously or not, they divide their work totally differently than the
(略)

Uncompressing Files Using the uncompress Command

用uncompress命令把压缩文件解压缩为原始文件,格式为:
uncompress options filename
options:
1.-v:详细(verbose)模式
2.-c:在不改变文件内容的情况下,查看压缩包内容(作用同zcat命令)
如下,解压缩文件:
$ uncompress -v files.tar.Z
files.tar.Z: -- replaced with files.tar
$

Compressing a File Using the gzip Command

gzip命令也是用来压缩文件的,压缩后的扩展名为.gz.这个命令的压缩效率比compress命令的压缩效率要高一点.命令格式为:
gzip [-v] filename(s)
-v选项是详细模式.如下是对几个文件一起进行压缩:
$ gzip file1 file2 file3 file4
$ ls *.gz
file1.gz file2.gz file3.gz file4.gz
$

Restoring a gzip File Using the gunzip Command

使用gunzip命令恢复经过gzip压缩过的文件,命令格式为::
gunzip options filename
options:
1.-v:详细模式
2.-c:在不改变文件内容的情况下,查看压缩包内容(作用同gzcat命令)

Viewing Files Using the gzcat Command

使用gzcat命令查看压缩文件的内容,作用同gunzip –c filename.命令格式为:
gzcat filename


Postscript


#uname –s –r;date
Written by 绯瞳 a.k.a. Jo
欢迎转po,请保留作者信息
Apr.11th.2004(Happy Birthday 2 myself,I’m 21 years old..lol)
!


此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片


此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片


此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片 


此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片


此主题相关图片如下:
按此在新窗口浏览图片

此主题相关图片如下:
按此在新窗口浏览图片 

最新信息录入:itvue    责任编辑:itvue 
  • 上一篇最新信息:

  • 下一篇最新信息:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    | 设为首页 | 网站排名查询 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |
    ITVUE网络无极限 ITVUE网络无极限(上海网络爱好者) 沪ICP备05001194号 站长:ITVUE
    信息产业部备案
    *ICP备05001194号