注册 | 登录
欢迎注册会员

当前位置:首页 > 系统知识 > UNIX系统知识 > 正文

unix下的一些操作命令

来源:程序人生 【 】 浏览:911 添加日期:2016-09-16 22:34:47 我要评论(0)

首先,我们一起看看UNIX的目录,因为清楚了目录,才能对UNIX的框架有个大概的印象!当然这里讲的是系统正常运转所必须的,并且一定不能删除或者修改。 

/ 是系统的根目录; 


/bin目录中包括最常用的UNIX命令; 


/dev目录包括控制访问外部设备的特殊设备文件; 


/etc目录中包括各种各样的系统程序和数据文件; 


/lib目录里包括C语言以及其他语言程序的运行库文件; 


/mnt目录是一个空目录,是为安装可移动的文件系统保留的; 


/opt目录中包括在所谓的“软件存储目标”; 


/shlib目录中包括系统使用的共享库; 


/usr目录中有几个子目录,(/usr/include目录包括编译C语言程序的头文件;/usr/lib目录包括各种UNIX命令使用的更多的库和数据文件;/usr/spool目录包括各种各样的目录,用于存储那些将被打印、邮寄、或通过网络传递的文件;/usr/tmp目录包括更多的临时文件;/usr/adm目录包括与系统管理或记帐相联系的数据文件;特别地,/usr/adm/messages和/usr/adm/syslog文件包括系统错误消息的记录。) 


/stand目录是引导文件系统的安装点,引导文件系统包括安装程序(boot),核心(unix),以及相关的boot文件; 


/tcb目录包括所有作为TCB一部分的文件; 


/tmp目录UNIX系统程序产生的临时文件; 


/var目录包括指定某一单独客户或服务器的非共享SSO文件。



一、目录管理 

1、创建目录:mkdir directory_name 

比如:在/usr/目录下新建子目录apple 

#mkdir /usr/apple 或者 

#cd /usr 

#mkdir apple 


注:mkdir是make directory的缩写 


2、列目录内容: 

ls 纵向显示 

lc 横向显示 

ls -l(或简化为l)显示每个文件的详细信息,包括存取模式、链接数、属主、文件大小、上次修改时间等) 

ls -a列出所有文件包括隐含文件(在unix要想使某个文件隐藏起来,只要在文件名前加个“.”就可以了。) 

ls -F(或lf) 标出文件类型,在目录文件名标记“/”,在可执行文件后标记“*”号,在符号链接后标记“@”。 

比如:列出/apple下的文件 

#ls /apple 

或者: 

#cd /apple 

#ls 

ls -L或是l命令将显示: 

total 20 

-rwxrw-r-- 1 apple fruit 1181 Mar 14 2002 dir1 

式的内容。 

其中,第一行total指明的是总块数。 

-rwxrw-r-- apple fruit 1181 Mar 14 2002 dir1这一行中,第一个-,代表是一个普通文件,如果是d(directory)表示是目录文件,如果是l 表示是符号链接(link),b表示是块(block)设备文件,c表示是字符(character)设备文件。 

rwxrw-r--中每三个字母为一组,英文名叫triplet,分别指明文件主(user)、同组用户(group)和其他用户(other)的访问权限。 

r表示可读(read)、w表示可写(weite)、x表示可执行(excute) 


如果一屏显示不下,可能用管道加more或 pg分屏阅读: 

# ls |more 

# ls |pg 


注:ls是list的缩写。 


3、目录的重命名:mv oldname newname (可以是目录名或路径名) 比如:将目录 /usr/apple改为/usr/pear 

#mv /usr/apple /usr/pear 

或者: 

#cd /usr 

#mv apple pear 


注:mv是move的缩写 


4、删除目录:rmdir directory (directory为空),dirctory里有内容时:rm -r directory 

比如:删除目录/apple(内容为空) 

# rmdir /apple 


注:rmdir是remove directory的缩写 


5、比较目录:dircmp directory1 directory2


二、漫游文件系统



1、要想知道你在文件系统中的位置可用pwd 命令。比如, # pwd 

屏幕上将显示: 

/usr 

表明你现在正在/usr目录下工作。 


注:pwd是print word directory的缩写,在unix中,print一般是在在屏幕上显示的意思,而不是打印。 


2、改变目录:cd directory 比如:你的当前目录为:/apple 要切换的/usr/pear(当然这个目录要存在), 

#cd /usr/pear 

然后再用pwd命令查看当前工作目录 

pwd 

/usr/pear 


注:cd是change directory的缩写


三、管理文件 


1、查看文件内容:cat filename 比如:目录/apple下有一个文件love,内容为“I love you all my heart! ” 

#cat /apple/love 

或者: 

#cd /apple 

#cat love 

注:也可cat -v filename(不知道文件属于何类型), 

cat filename |pg(分屏阅读)。 

由于cat命令原本是用于文件联结的,因此,它只适用于查看不足一屏(一般为24行)的文件。如果文件超过了一屏,就需要用more命令。 

比如: 

more file1 

按空格键显示下一屏,按回车键显示下一行。 


注:cat是concatenate 的缩写 

more据台湾一位教授的解释,就是“再看一页再看一页”的意思。在Linux里有一个less命令,也是分屏显示的,但是能前后翻页。 


cat主要作用是文件的联接,比如,把file1 file2连接起来,成为file3 

cat file1 file2 >file3 

其中的 > 称为改向输出符,如果是把file1连接到file2有末尾,则: 

cat file1 >> file2 


cat命令除了显示和连接文件以外,还有一个常用的功能,就是建立非常小的文本文件,语法格式为: cat > filename 

例如:编辑一个小的shell小程序dl,用来打印一个文件agent008, 


cat > dl 

lp agent008 

然后按+d结束。


查看文件的头部:head filename 

查看文件的尾部: tail filename 

2、复制文件:cp filename copyname(filename前面可以加路径)或者: 

cp filename … pathname 

比如:将目录/apple下的文件love复制到目录/pear 下 

#cp /apple/love /pear 假如多个文件: 

#cp /apple/love1 love2 love3 /pear 


注:cp由copy缩写而成。 


3、文件的移动和重命名: 

文件的移动:mv sourse_file target_directory 

比如,将/apple目录下的文件love移动到目录/pear下, 

# mv /apple/love /pear 


文件的重命名: 

在unix里,文件的重命名就是把文件从原文件名(old_filename)下移动到新文件名(new_filename)下: 

# mv old_filename new_filename 

比如:将目录/apple下的文件love改名为happy, 

# mv /apple/love /apple/happy 

或者: 

# cd /apple 

# mv love happy 


注:mv由move缩写而来 


4、删除文件:rm filename(一定要小心使用呀,unix由于早期只是专业人员使用,提倡严谨的工作作风,所以在执行命令时往往不要求确认,如果执行成功,就给出结果,执行不成功,才给出出错信息,所以,对你不熟悉的命令千万不要像windows一样去试,因为指令一旦发出,unix就会不折不扣地执行,没有像windows那样“悔棋”的机会。) 

为了防止误删除文件,良好的习惯是加上-i选取项。 

比如,rm -i file1 

系统会要求你确认是不是真的要删除,待你确认后再删除。 


注:rm由remove缩写而来 


5、在文件中查找指定的字符串:grep options text filenames 

这个命令好比用word打开一篇文件后,查找某一字符串。不同的是,在unix中,用grep命令,不用打开文件。比如, 

# grep root /etc/passwd 

就可以显示出root用户的有关信息。 

再比如,加上管道,可以一次查出某一终端的所有进程号。 

# ps -e|grep tty03 

就可以查出终端tty03的所有进程号。当然,查出进程号的目的一般是为了kill它们。那么怎么一次实现呢?这就需要用到awk命令了。 

比如,要kill tty03的所有进程,可以用命令 

# kill -9 ` ps -e|grep tty03|awk ‘{print $1}’‵ 

注意,ps前面和最后的的那个符号,是倒引号,在数字“1”的左边。 


查找文件: find path_list expression 

其中,path_list是查找的目录列表,可以是一个目录,也可以是多个目录。如果是多个目录之间,要以空格符分开。如果从当前目录开始查找,可以用“.”号表示,如果是从根目录开始查找,就要使用“/”来表示。 

expression项(表达式)是查找条件,用户利用它可以设定是按文件的名字、日期或是其他条件来查找。我经常用的是名字。 

比如:在/usr下,查找一个名为ttytab的文件 

# find /usr -name ttytab -print 

其中的-name指明是用名字查找,-print是告诉系统,找到ttytab文件后在屏幕上显示它在什么位置。不过在sco openserver中可以省略-print。 

在windows98中,我们可以用“查找”一次性删除所有临时文件。在unix里,我们也可以用find一次删除符合某些条件的文件,比如,在/usr目录及其子目录中,删除所有以txt为扩展名的文件。 

find /usr -name *.txt -exec rm {}; 

-exec command_name {}; 找出与条件匹配的文件后,执行command_name所指定的命令。注意,这条命令的结尾必须有{};

四、文件和目录的存取控制 

1、改变文件的权限: 

chmod who [+-=] operator_ permission filename 

who包括u g o,分别代表用户(user)、同组用户(group)和其他用户(other) 

+ 增加权限 

-减少权限 

=增加等号后面的权限,同时减去原来的权限 

operator_ permission包括r(read)、w(weite)、x(excute)。 

比如:chmod u+x filename 

给文件主以执行权 

这有一种方式:chmod mode filename 

其中mode为nnn模式,n是0-7之间的数,4表示可读,2表示可写,1表示可执行。nnn中第一个n是用户的权限,第二个n是同组用户的权限,第三个n是其他用户的权限。如果如赋予可读可写两个权限,则用6(4+2而来),而如果要赋予可读可写可执行全部权限就用7表示。 

例如:chmod 777 file1 

就是把file1让所有用户可读可写可执行。 

而chmod 740 file1则是的权限设置为文件的主人自己可读可写可执行,同组用户只读,其他用户连看都不行了。0表示没有任何权限。 


chmod由change mode缩写而来 


2、改变文件属主:chown new_owner [:group_name] filename 

例如:改变文件file1主人为apple 

$ chown apple file1 

要注意的是,除非你是root,否则,给了别人的文件你自己可就要不回来了。假如你是pear,在你运行了chown apple file1后,你就把文件给了apple。如果你再运行chown pear file1。系统就会告诉你没有这个权限。要想把给人家的文件再要回来,只有求助于root用户。 

如果还要改变文件的所属组,apple用户要把文件file1送给fruit组的apple用户,可以使用命令: 

chown apple:fruit file1 


注:chown由change owner缩写而来 


改变文件的属组也可以用chgrp命令 

3、查看你所在的组:id 

4、改变当前用户组:sg 

5、改变文件所在的用户组:chgrp new_group filename 

比如:chgrp fruit file1 


注:chgrp:由change group缩写而来 


6、在命令行中获得帮助man [section] keywork 比如: 

man C kill 


注:man由manual(手册)缩写而来


五、磁盘的使用 

1、软盘的格式化:format [设备名] 

比如:格式化1.44M软盘: 

#format /dev/rfd0135ds18 

r表示是原始(raw)设备,fd表示是软驱,0表示第一个软驱,135表示135个磁道,ds表示双面磁盘,18表示18个扇区。 

unix中,format命令只能格式化软盘,不能格式化硬盘。 

另外,如果在/etc/default/format文件中,DEVICE定义的是缺省的设备名,一般都是DEVICE=/dev/rfd0135ds18,所以你可以只键入format就可完成对软盘的格式化。 


2、软盘的复制:diskcp [optition] [-135ds18] 

optition有多个选项,但现在的PC一般只有一个软驱,所以常用的就剩下一个-f(format)了,-135ds18代表我们常用的1.44M软盘。 

比如: 

$ diskcp -f -135ds18 

复制时先对目标盘格式化,然后再复制。 


3、用软盘备份文件:比如将硬盘目录下/apple的文件love存储到空软盘上,你可以: 

#cd /apple 

#tar cv6 love 

c 表示在创建(create)一个新文件,并且覆盖已有的同名文件。如果不想覆盖。命令为: 

#tar uv6 love 

v 显示每个被处理的文件名。 

6表示是软驱。数字和设备的对应关系,在/etc/default/tar文件中定义,可用more /etc/default/tar命令或是不带任何参数的tar命令查看,也可用vi修改。 


4、列出软盘中文件的名字:#tar tv6 


5、将软盘中文件恢复到硬盘:#tar xv6 

x表示抽取(extract)


六、增加用户和切换用户 

1、增加用户:#scoadmin account 

里面可有好多东东哟!你可以添加用户,添加组,删除用户和组,当然也可以修改,呵呵,可以打开看一下的!比如:添加一个用户apple,你可以: 

#scoadmin account →user→Add New User 

出现增加用户的界面: 


Login:apple 

User ID:200 

Comment: 

Password:<*>Set password now <>Set password later 

Login shell:sh [Change Login Shell…] 

Networked via: [Change Distribution…] 

Home Directory:/usr/apple 

Login Group:group [Change Group Membership…] 

[OK] [Cancel] [Help] 


输入有关信息后,将光标移动到OK处,按回车键。 

注释: 

Login:处输入用户名 

User ID:用户ID,一般用系统推荐值即可。小于200的为系统用户,0超级用户使用。 

Comment:对用户的注释说明,可以不输。 

Password: Set password now,现在就设置口令。 

Set password later以后再设置口令 

Login shell:sh用户的注册shell,系统缺省的是sh,即标准 shell,如果要更改,把光标移到Change Login Shell…]处回车,选择别的shell,如csh ksh……。 

Networked via: 一般不用设置。 

Home Directory:用户的家目录(一般都是译成主目录,不过我觉得译成家更形象些。一般系统会自动在/usr目录下,为新用户建立一个“/usr/用户名”的家目录,比如本例是/usr/apple 

Login Group:添入用户所属的组名,系统缺省的是group。 


  


2、切换用户:su 

windowsXP一大卖点就是新增加了切换用户(switch user)功能。其实,unix早就有了这项功能,而且比windows XP要方便得多。 

比如:你是用户pear,现在要切换成用户apple 

$ su apple 

当然你得知道apple的口令。但是root用户运行su变成其他用户,是不需要口令的。 

如果没有指定用户名,缺省是切换到root用户,如 

$ su 

password: 

在你输入root口令后,系统提示符就会变#,而不是$了。 

但是你会发现,你的工作目录和环境并没有改变,也就是su的结果和直接用apple或是root用户的帐号注册还是不一样的。那么怎样如同注册一样呢,只要在su后面加上一个短横就可了。 

比如:$ su - apple 

就和在login:后面键入apple一样获得了apple用户的环境。注意,“-”前后各有一个空格。



七、设置或者改变用户口令:passwd 


直接键入passwd可修改自己的口令,一般用户只能修改自己的口令,而root用户不仅可以修改自己的口令,还可以修改其他用户的口令。 

#passwd username 

比如,root用户要修改apple用户的口令,可运行: 

# passwd apple 

Setting password for user:apple 

last successful password change for apple:Tue Dec 30 08:34 2001 

Choose passeord 

You can choose whether you pick a password 

or have the system create one for you. 


1.pick a password 

2.Pronounceable password will be generate for you 

注:第一种方式是自己创建新口令,第二种方式是由系统为你创建一个可以发音的口令,我们一般选第一种方式。 

Enter choose (default is 1):1 

Please enter new password (at least 3 characters): 

new password: 

Re-enter password: 

输入口令时,屏幕上并不显示。这是出于安全和保密的考虑。


八、系统的关闭与重启: 


在UNIX里非法关机,是非常非常不好的事情,切记切记! 

#shutdown -y -g0 

这是最安全的关机方式。-y选项是告诉系统,凡是询问都回答y, -g0则指定等待时间为0分钟。如果不指定,缺省的是1分钟。当然你要有关机的权限,才能执行这个命令的。 


#haltsys 

这是紧急关机方式,只能在系统维护模式下由超级用户root才能执行。 


#reboot 

重启系统,假如你添加了新的硬件或者修改了一些配置文件,记得一定要运行这个命令,不然不会生效的。也是只能在系统维护模式下由超级用户root才能执行。


login:halt 

用关机用户关机 

我们每天的关机都是在login:后面直接输入一个用户名比如halt或是haltsysy就能关机。那么这种关机方式是如何实现的呢?有多种方法:这里只介绍一种: 

第一步:建立一个用户,名字呢我们就用halt吧 

第二步:在/usr/halt目录下建立一个shell script,起名为halt.sh,内容为“shutdown -y -g0”,名字 

第三步:chmod u+x halt.sh 

第四步:vi /etc/passwd,把halt用户的uid改成0,注册shell改成halt.sh.


九、系统管理: 

系统管理的命令,一般都是由root用户执行的,一般用户可能执行不了,除非你得到了root用户的授权。 

1、查询系统时间:data 

2、修改系统时间:asktime [yymmdd] 

yy:年 

mm:月 

dd:日 

hh:时 

mm:分 

都用两位数表示。比如把系统时间改为2002年6月17日16时45分。 

# asktime 


3、查询谁在系统中:who 

也可以简化为w 


4、谁在做什么:whodo显示用户正在进行的工作。 


5、终端名的获取:tty [-l] [-s]显示当前正在使用的终端的设备文件及其路径名。 


6、进程状态的了解:ps [options] 你可以知道进程活动的信息哟!什么是进程,还记得吗?unix里,可是很重要的东东哟! 

常用的选项有: 

-e 显示每个进程的信息(everything) 

-f 显示进程的完整信息。(full) 

-t ttynum 显示ttynum指定的终端的进程 

-u username 显示usename指定的用名的进程信息 

-l 以长格(long)形式显示进程信息,总共14列,其中每列标题的含义如下: 

f:(flag):用八进制表示的进程的有关标记,00表示进程已结束,01表示是系统进程,20表示进程被装主内存中。 

s:(state)表示进程的状态,b和w表示正处于等待状态,i表示空闲,o表示正在运行,k表示已装入队列可运行进程,s(sleep)表示处于睡眠状态,r(ready)表示处于就绪状态 ,t表示被跟踪,x表示等待更多的内存。 

uid :(user id)进程属主的用户标识 

pid :(process id)进程号,(kill命令用的就是这个号) 

ppid (parent process id) 父进程号 

c :cpu的占用率 

stime:进程被提交的时刻 

pri:进程的优先级(priorty) 

ni:进程的nice值 

addr:进程的内存地址(address) 

sz:进程的内存映像的大小(size),以块表示 

wchan:睡眠进程地址。对于运行的进程是空的 

tty:进程所属的终端号。如果是?号,则是系统进程 

time:进行已执行的累计时间 

cmd:调用该进程的命令名 

比如,查看tty03的进程信息 

$ ps -t tty03 

查看系统中所有进程的信息 

# ps -e 

或 

#ps -ef 

杀死进程:假如进程占用了过多的处理时间,是系统变慢,或者它陷入一个死循环,不能结束。呵呵,kill它!为了杀死进程,你可以试试键入: ctrl del 或者break或者 ctrl d 或者 del ,或者命令:kill pid或者kill -9 pid 


7、统计磁盘使用空间:du显示指定文件所使用的磁盘块数和全部文件占用的总块数。 

8、统计磁盘自由空间:df显示指定文件系统中的自由空间块数和自由i节点数。 

如# df 

/ (dev/root):962630 blocks 61557 i-nodes 

加上-v选项可显示文件系统的总块数、已用块数、空闲块数和已用的百分比。如: 


# df -v /dev/root 

mount dir filesystem blocks used free %used 

/dev/root /dev/root 1030176 57546 962630 6% 


在sco unix中,还有一个dfspace命令,可以用m为单位显示磁盘的使用情况。比如: 

# dfspace 

/ :disk space :469.96mb of 503.01mb available (93.43%) 

total disk space: 469.96mb of 503.01mb available (93.43%) 

说明你的硬盘总共大小是503.01mb,已使用469.96mb,百分比是93.43%. 


9、文件类型的确定:file filename 


10、在管道线上建立“三通”:tee [options] [files] 

tee由“t”而来,(tee与t的英语音标都是[ti:],)而t则“三通管”的像形,即取前一条命令的的输出作为输入,然后将其传送给下一条命令,同时,形成一个文件。比如: 

ls -l /bin|tee file1 |wc 

将ls命令的结果既保存在文件file1中,又交给wc去统计。 

ls -l /etc|tee -a file1|wc 

把ls命令的结果追加到文件夹file1的尾端,同时交给wc去统计。


十、访问dos磁盘信息 


1、dos磁盘目录的显示(你有的时候可能要在unix里显示dos磁盘上的内容哟!) 

# dosdir dir (dir为设备符、文件名。)比如:查看软盘a的内容 

# dosdir /dev/fd0 

或者# dosdir /dev/fd0: 

也可以用unix格式显示 

# dosls dev/fd0 


2、dos磁盘文件内容的显示: 

# doscat filename 比如:你查看软盘a中的文件config.sys, 

#doscat /dev/fd0:config.sys 

注意:/dev/fd0:config.sys不能是/dev/fd0/config.sys,因为/ dev目录下是设备文件,如果写成/dev/fd0/config.sys,config.sys就成了设备文件了,而这个设备文件是不存在的,因此,系统就会给出出错信息 

。 

3、dos磁盘目录的建立和删除: 

dosmkdir directory(建立) 

dosrmdir directory(删除) 

例如: 

dosmkdir /dev/fd0:apple 

dosrmdir /dev/fd0:apple 


4、dos磁盘的格式化: 

dosformat [-fqv] drive 

比如:你要格式化1.44mb软盘 

#dosformat /dev/fd0135ds18 

其中,注意format的设备名是rfd0135ds18,表示是原始(raw)设备名,而 dosforamt的设备名是/dev/fd0135ds18,fd前面没有字母“r”。 


5、dos磁盘上文件的删除: 

dosrm /dev/fd0:file1 file2… 


6、dos和unix之间的文件复制: 

doscp [-r][-m]file1 file2 

或者: 

doscp file… directory 

-r 复制时不进行换行符的转换 

-m复制时进行换行符的转换(unix和dos的换行符是不同的) 


例如: 

doscp -m apple /dev/fd0 

把文件apple用dos格式复制到a盘,复制时进行换行符的转换 

doscp -r apple /dev/fd0:fruit 

把文件apple用dos格式复制到a盘的fruit目录下,复制时不进行换行符的转换。 

你一定觉得总是把a盘写成/dev/fd0很麻烦了吧?能不能把/dev/fd0写成a:呢?能,一定能。用vi打开/etc/default/msdos文件,把其中的“a=/dev/install”改成“a=/dev/fd0”就可以了。 

如:dosdir a: 

dosdir a盘符也和dos一样,可以大小写不分) 

不过要提醒的是,在指定dos目录的路径时,不能使用dos的分隔符“”,只能使用unix的分隔符“/”。 

还有一点要注意,在这几个命令中,对dos文件的存取不能使用通配符,但对unix的文件可以使用通配符。 

比如: 

$ doscp /usr/apple/* a: 

但不能使用 

doscp a:*.* /usr/apple



十一、编辑文件: 

1、启动vi: 

#vi filename 

假如该文件存在,vi就会将其读入,否则就会创建它。记得新建目录的命令吗?对了,用mkdir directory,那么新建一个文件呢?对了,聪明!你可以用vi filename创建了。当然了,建立的是文本文件。 

2、输入正文:记住了,输入正文之前,可一定要在命令模式下发出一个输入正文的命令!呵呵,别急嘛!我会告诉你输入正文的命令的。在输入过程中,你输入的任何字符都被视作输入的内容,怎么办呢?猜猜看,你可以按〈esc〉键返回命令模式。 

哦,对了,差点忘了告诉你,输入正文,叫插入模式。 

a 从光标右侧开始添加正文; 

a 从行尾处开始添加正文; 

i从光标左侧开始添加正文; 

i从行首处开始添加正文;o 从当前行之后打开新的一行; 

o从当前行之前打开新的一行; 

3、保存文件并退出:别忘了,一定要在命令模式下才能保存退出哟!你按,直到终端会叫了,那一定是命令模式的。有好多方法保存,但是一定要加一个冒号“:”。比如: 

“:w”是保存但不退出; 

“:q”是退出但不保存; 

“:wq”是保存并退出vi。 

我常用的是:“:x!”是保存并强行退出;“:q!”是不保存强行退出。 

4、在文件中移动光标。现在的pc键盘,大多可以用四个箭头键来移动光标,但是,unix诞生时,可能还没有这种pc键盘,所以它用的是h j k l四个键。用熟了,这四个键还挺方便的。 

h 向左移动一个字符; 

i向右移动一个字符; 

k向上移动一个字符; 

j向下移动一个字符; 


5、删除和恢复文件:删除光标所在的字符用x;删除光标所在行用dd。 

撤销前一次操作,用u或者u。 

6、编辑时遇到的特殊情况:屏幕不可读时,按+l或者+r使屏幕刷新;如果还是不能阅读,那可能是你的终端设置不对,或者编辑了非正文文件,别忘了键入:q!不保存退出。 

举个例子吧!在/apple目录下编辑文件love, 

#vi /apple/love, 

假如原来的文件内容为: 

you are my kind of girl,you have a beautiful personality,and looks neat and fresh! 

it was love at first sight,but i don’t have the heart to tell you, so i make a pass at you. 

i’ve been dying to see you when leave xianghe,and i love you with all my heart! 

i’m too deeply involved! 

god bless you,god bless me too! 


ok!比如:你要在i’m too deeply involved!插入don’t you give me the cold shoulder.那么你应该将光标移到involved!后,然后按i 你就可以插入了;假如你要删除so i make a pass at you.你可以将光标移到要删除的字符上,按x 将其删除; 

假如你要将but i don’t have the heart to tell you,的逗号改为感叹号,你可以插入感叹号,并将逗号删除,呵呵,废话,是吗?假如你要删除god bless you,god bless me too!整行,你可以在命令状态下按dd; 

假如你要在 i’ve been dying to see you when leave nanping,and i love you with all my heart! 

后面加一行,并插入love you more than i can say!你可以将光标移动到i’ve been dying to see you when leave nanping,and i love you with all my heart!上,(移动光标还记得吗?对了,h、j、k、l 。)然后在命令模式下,按o ,在按i 后 插入love you more than i can say!改完了吗?保存用“:x!”,不保存“:q!”。 

你爱怎么改就怎么改吧!但一定不要将它改的面目全非了哟! 

you are my kind of girl,you have a beautiful personality,and looks neat and fresh! 

it was love at first sight,but i don’t have the heart to tell you, so i make a pass at you! 

i’ve been dying to see you when leave nanping,and i love you with all my heart! 

love you more than i can say!i’m too deeply involved! 

don’t you give me the cold shoulder.i wish apple and pear are going steady! 

god bless you,god bless me too! 

(你是我喜欢的那种女孩,你有永恒的魅力,你看起来优雅清新!对你一见钟情,但我没有勇气告诉你,所以我深情的看着你(送秋波)!离开南平,我一直很想你,我全心全意爱你!爱你在心口难开,我已经陷的太深。别再对我冷淡,我衷心祝愿apple和pear正式成为情侣!上帝保佑你,上帝保佑我!) 

vi还有好多东东,但常用的就是这些。欲知详情,看书吧!



十二、打印文件 


1、打印文件lp 

lp命令来源于“line printer“,其意为行式打印机,这是过去的名称。现在它可用于各种类型的打印机。 


lp [选项] [文件名] 

它的选项有好几个,我没有使用到过,不敢瞎说,举个简单例子吧 

比如,打印文件apple 


lp apple 


如果系统中不只有一台打印机,需要指定用哪台打印机的话,可以使用-d选项,指定目标(destination)打印机 

比如,在epson打印机上打印文件apple 

lp -d epson apple 


在lp命令中,可以使用文件通配符。 


2、取消打印作业 

有时候,由于误操作,需要取消打印作业,应该怎么办呢? 


取消打印队列的命令是cancel [打印队列号] 


比如,当你成功执行了lp apple后, 

系统会给出一条提示信息: 


request id is epson-921 


epson-921就是打印队列号,如果你又不想打印了,可以用以下命令取消这个打印作业。 


cancel epson-921 


如果要取消某台打印机上的所有作业,可以使用命令: 

cancel [打印机名] 



可是,由于目前我们所用的打印命令都是上级行编好的shell程序,你可能见不到打印id号的提示信息,那如何取消打印队列呢?,这就用到了lpstat命令,它可以帮助我们查到打印信息。 


lpstat ,是lp stauts的缩写,其意为打印状态,语法格式为: 


lpstat [选项] 


选项有多个,我一般就用-t 选项,显示所有信息 


比如:lpstat -t 



以上只是对sco unix的入门介绍,而且没有介绍它的网络命令(因为一则我并不精通网络,二则我觉得unix的ftp 、telnet命令和win2000并没有什么不一样,因此,要学习ftp telnet在win2000上练习就可以了)。要想深入掌握unis,还是需要好好看一看专门的bet36体育排球比分直播_bet36备用10365.com_bet36体育合法吗。


bin 

  引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。 

  /sbin 

  类似/bin ,但不给普通用户使用,虽然如果必要且允许时可以使用。 

  /etc 

  特定机器的配置文件。 

  /root 

  root用户的家目录。 

  /lib 

  根文件系统上的程序所需的共享库。 

  /lib/modules 

  核心可加载模块,特别是那些恢复损坏系统时引导所需的(例如网络和文件系统驱动)。 

  /dev 

  设备文件。 

  /tmp 

  临时文件。引导启动后运行的程序应该使用/var/tmp ,而不是/tmp ,因为前者可能在一个拥有更多空间的磁盘上。 

  /boot 

  引导加载器(bootstrap loader)使用的文件,如LILO。核心映象也经常在这里,而不是在根目录。如果有许多核心映象,这个目录可能变得很大,这时可能使用单独的文件系统更好。另一个理由是要确保核心映象必须在IDE硬盘的前1024柱面内。 

  /mnt 

  系统管理员临时mount的安装点。程序并不自动支持安装到/mnt 。 /mnt 可以分为子目录(例如/mnt/dosa 可能是使用MSDOS文件系统的软驱,而/mnt/exta 可能是使用ext2文件系统的软驱)。 

  /proc , /usr , /var , /home 

  其他文件系统的安装点。


  /etc 目录包含很多文件。下面说明其中的一些。其他的你应该知道它们属于哪个程序,并阅读该程序的man页。许多网络配置文件也在/etc 中,它们在《网络管理指南》中说明。 


  /etc/rc or /etc/rc.d or /etc/rc?.d 

  启动、或改变运行级时运行的scripts或scripts的目录,更详细的信息见关于init 的章。 


  /etc/passwd 

  用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息。格式见passwd 的man页。 


  /etc/fdprm 

  软盘参数表。说明不同的软盘格式。用setfdprm 设置。更多的信息见setfdprm 的man页。 


  /etc/fstab 

  启动时mount -a命令(在/etc/rc 或等效的启动文件中)自动mount的文件系统列表。 Linux下,也包括用swapon -a启用的swap区的信息。见4.8.5节和mount 的man页。 


  /etc/group 

  类似/etc/passwd ,但说明的不是用户而是组。见group 的man页。 


  /etc/inittab 

  init 的配置文件。 


  /etc/issue 

  getty 在登录提示符前的输出信息。通常包括系统的一段短说明或欢迎信息。内容由系统管理员确定。


/etc/magic 

  file 的配置文件。包含不同文件格式的说明,file 基于它猜测文件类型。见magic 和file 的man页。 


  /etc/motd 

  Message Of The Day,成功登录后自动输出。内容由系统管理员确定。经常用于通告信息,如计划关机时间的警告。 


  /etc/mtab 

  当前安装的文件系统列表。由scripts初始化,并由mount 命令自动更新。需要一个当前安装的文件系统的列表时使用,例如df 命令。 


  /etc/shadow 

  在安装了影子口令软件的系统上的影子口令文件。影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow 中,而后者只对root可读。这使破译口令更困难。 


  /etc/login.defs 

  login 命令的配置文件。 


  /etc/printcap 

  类似/etc/termcap ,但针对打印机。语法不同。 


  /etc/profile , /etc/csh.login , /etc/csh.cshrc 

  登录或启动时Bourne或C shells执行的文件。这允许系统管理员为所有用户建立全局缺省环境。各shell见man页。 


  /etc/securetty 

  确认安全终端,即哪个终端允许root登录。一般只列出虚拟控制台,这样就不可能(至少很困难)通过modem或网络闯入系统并得到超级用户特权。 


  /etc/shells 

  列出可信任的shell。chsh 命令允许用户在本文件指定范围内改变登录shell。提供一台机器FTP服务的服务进程ftpd 检查用户shell是否列在 /etc/shells 文件中,如果不是将不允许该用户登录。 


  /etc/termcap 

  终端性能数据库。说明不同的终端用什么"转义序列"控制。写程序时不直接输出转义序列(这样只能工作于特定品牌的终端),而是从/etc/termcap 中查找要做的工作的正确序列。这样,多数的程序可以在多数终端上运行。见termcap 、 curs_termcap 和terminfo 的man页。 


  /dev目录

  /dev 目录包括所有设备的设备文件。设备文件用特定的约定命名,这在设备列表中说明 (见[Anv])。设备文件在安装是产生,以后可以用 /dev/MAKEDEV 描述。 /dev/MAKEDEV.local 是系统管理员为本地设备文件(或连接)写的描述文稿 (即如一些非标准设备驱动不是标准MAKEDEV 的一部分)。 


  /usr 文件系统经常很大,因为所有程序安装在这里。 /usr 里的所有文件一般来自Linux distribution;本地安装的程序和其他东西在/usr/local 下。这样可能在升级新版系统或新distribution时无须重新安装全部程序。 /usr 的有些子目录在下面列出(一些不太重要的目录省略了,更多信息见FSSTND)。


/usr/X11R6 

  X Window系统的所有文件。为简化X的开发和安装,X的文件没有集成到系统中。 X自己在/usr/X11R6 下类似/usr 。 

  /usr/X386 

  类似/usr/X11R6 ,但是给X11 Release 5的。 

  /usr/bin 

  几乎所有用户命令。有些命令在/bin 或/usr/local/bin 中。 

  /usr/sbin 

  根文件系统不必要的系统管理命令,例如多数服务程序。 

  /usr/man , /usr/info , /usr/doc 

  手册页、GNU信息文档和各种其他文档文件。 

  /usr/include 

  C编程语言的头文件。为了一致性这实际上应该在/usr/lib 下,但传统上支持这个名字。 

  /usr/lib 

  程序或子系统的不变的数据文件,包括一些site-wide配置文件。名字lib来源于库(library); 编程的原始库存在/usr/lib 里。 

  /usr/local 

  本地安装的软件和其他文件放在这里。

  /var/catman 

  当要求格式化时的man页的cache。man页的源文件一般存在/usr/man/man* 中;有些man页可能有预格式化的版本,存在/usr/man/cat* 中。而其他的man页在第一次看时需要格式化,格式化完的版本存在/var/man 中,这样其他人再看相同的页时就无须等待格式化了。 (/var/catman 经常被清除,就象清除临时目录一样。) 

  /var/lib 

  系统正常运行时要改变的文件。 

  /var/local 

  /usr/local 中安装的程序的可变数据(即系统管理员安装的程序)。注意,如果必要,即使本地安装的程序也会使用其他/var 目录,例如/var/lock 。 

  /var/lock 

  锁定文件。许多程序遵循在/var/lock 中产生一个锁定文件的约定,以支持他们正在使用某个特定的设备或文件。其他程序注意到这个锁定文件,将不试图使用这个设备或文件。 

  /var/log 

  各种程序的Log文件,特别是login (/var/log/wtmp log所有到系统的登录和注销) 和syslog (/var/log/messages 里存储所有核心和系统程序信息。 /var/log 里的文件经常不确定地增长,应该定期清除。 

  /var/run 

  保存到下次引导前有效的关于系统的信息文件。例如, /var/run/utmp 包含当前登录的用户的信息。 

  /var/spool 

  mail, news, 打印队列和其他队列工作的目录。每个不同的spool在/var/spool 下有自己的子目录,例如,用户的邮箱在/var/spool/mail 中。 

  /var/tmp 

  比/tmp 允许的大或需要存在较长时间的临时文件。 (虽然系统管理员可能不允许/var/tmp 有很旧的文件。) 


  /proc 文件系统是一个假的文件系统。它不存在在磁盘某个磁盘上。而是由核心在内存中产生。用于提供关于系统的信息(originally about processes, hence the name)。下面说明一些最重要的文件和目录。 /proc 文件系统在proc man页中有更详细的说明。




/proc/1 

  关于进程1的信息目录。每个进程在/proc 下有一个名为其进程号的目录。 

  /proc/cpuinfo 

  处理器信息,如类型、制造商、型号和性能。 

  /proc/devices 

  当前运行的核心配置的设备驱动的列表。 

  /proc/dma 

  显示当前使用的DMA通道。 

  /proc/filesystems 

  核心配置的文件系统。 

  /proc/interrupts 

  显示使用的中断,and how many of each there have been. 

  /proc/ioports 

  当前使用的I/O端口。 

  /proc/kcore 

  系统物理内存映象。与物理内存大小完全一样,但不实际占用这么多内存;it is generated on the fly as programs access it. (记住:除非你把它拷贝到什么地方,/proc 下没有任何东西占用任何磁盘空间。) 

  /proc/kmsg 

  核心输出的消息。也被送到syslog 。 

  /proc/ksyms 

  核心符号表。 

  /proc/loadavg 

  系统"平均负载";3个没有意义的指示器指出系统当前的工作量。 

  /proc/meminfo 

  存储器使用信息,包括物理内存和swap。 

  /proc/modules 

  当前加载了哪些核心模块。 

  /proc/net 

  网络协议状态信息。 

  /proc/self 

  到查看/proc 的程序的进程目录的符号连接。当2个进程查看/proc 时,是不同的连接。这主要便于程序得到它自己的进程目录。 

  /proc/stat 

  系统的不同状态,such as the number of page faults since the system was booted. 

  /proc/uptime 

  系统启动的时间长度。 

  /proc/version 

  核心版本。*/


52coko 发表于:2006.04.20 19:59 ::分类: ( 技术摘录 ) ::阅读:(88次) :: 评论 (0) :: 引用 (0)

===========================================================

SQL Server 连接基础知识

===========================================================

SQL Server 连接基础知识



  该堆栈的顶部是 API 或对象库层。应用程序通过对象库公开的 API 函数或接口连接到 Microsoft® SQL Server。用于访问 SQL Server 的 API 示例包括 ODBC 和 DB-Library。用于访问 SQL Server 的对象库示例包括 OLE DB、ADO 和 ADO.NET。由于 ADO 最终使用 OLE DB 与服务器通信,因此 Windows 应用程序在与 SQL Server 通信时实际上只使用两个常用的对象库,即 OLE DB 和 ADO.NET。由于通过 ADO 或 ADO.NET 进行连接通常比通过 ODBC 进行连接更普遍(但 SQL Server 的查询分析器和企业管理器仍通过 ODBC 进行连接),因此本文将从 ADO/OLE DB 和 ADO.NET 的角度介绍 SQL Server 连接体系结构的客户端。如今,大多数应用程序均通过对象库(而非 ODBC 或类似 API)连接到 SQL Server。   


  ADO 和 OLE DB 


  OLE DB 客户端(也称作使用者)通过客户端提供程序与服务器以及其他后端程序进行通信。此提供程序是一组 COM 组件(一个或多个),用于将应用程序请求转换为网络进程间通信 (IPC) 请求。在使用 SQL Server 的情况下,最常用的 OLE DB 提供程序是 SQLOLEDB,它是 Microsoft 为 SQL Server 提供的 OLE DB 提供程序。SQLOLEDB 随附于 SQL Server 中,并作为 Microsoft 数据访问组件 (MDAC) 库的一部分安装。   


  为了使用 ADO 与 SQL Server 进行通信,应用程序首先使用 Connection 对象建立与服务器的连接。ADO 的 Connection 对象接受一个连接字符串,该字符串指定要使用的 OLE DB 提供程序以及传递给它的参数。如果应用程序使用 SQLOLEDB 提供程序连接到 SQL Server,则该字符串中将显示“SQLOLEDB”。   


  ADO 应用程序还可以通过 ODBC 连接到 SQL Server。为此,应用程序将使用适用于 ODBC 的 OLE DB 提供程序,并指定在其连接字符串中引用目标 SQL Server 的 ODBC 数据源。这种情况下,应用程序与 OLE DB 进行通信,同时 ODBC 的 OLE DB 提供程序调用相应的 ODBC API,以便与 SQL Server 进行会话。    


  ADO.NET 


  ADO.NET 应用程序通常使用 .NET Framework Data Provider for SQL Server 连接到 SQL Server。该本机提供程序使 ADO.NET 对象能够与 SQL Server 直接进行通信。通常,应用程序使用 SqlConnection 对象建立连接,然后使用 SqlCommand 对象向服务器发送命令,并接收服务器返回的结果。SqlDataAdapter 和 SqlDataReader 类通常与 SqlCommand 一起使用,以便通过托管的代码应用程序与 SQL Server 进行交互。   


  通过 OleDbConnection 类,ADO.NET 应用程序还可以使用 SQLOLEDB OLE DB 提供程序与 SQL Server 进行交互。此外,它们可以通过 OdbcConnection 类使用 ODBC 访问 SQL Server。因此,仅通过托管代码,您就有三种不同的方法从应用程序访问 SQL Server。从故障排除的角度而言,了解这些方法是非常有用的,因为它可以帮助您将遇到的与连接相关的问题归结到特定的数据访问层或库。 

  客户端 Net-Library 


  该堆栈中的下一层是 Net-Library。Net-Library 在 API 或对象库(应用程序使用它与 SQL Server 进行通信)与网络协议(用于与网络交换数据)之间提供了一个通道。SQL Server 为所有主要的网络协议提供了 Net-Library。这些库以透明方式将客户端发出的请求发送到 SQL Server,并将服务器发出的响应返回给客户端。可以使用 SQL Server 的客户端网络实用程序配置适用于特定客户端的 Net-Library。支持的客户端协议包括 TCP/IP、命名管道、NWLink、多协议 (RPC) 和其他一些协议。    


  尤其值得一提的 Net-Library 是共享内存 Net-Library。顾名思义,该 Net-Library 使用 Windows 的共享内存功能在 SQL Server 客户端与服务器之间进行通信。显然,这意味着客户端与服务器必须位于同一台物理计算机上。   


  由于它能够绕过物理网络堆栈,因此共享内存 Net-Library 要比其他 Net-Library 快得多。对共享内存区域的访问受到同步对象的保护,因此客户端与服务器之间的通信速度主要受限于 Windows 对内核对象进行调度的能力,以及进程与共享内存区域之间进行数据复制的能力。   


  可以在连接时将某个时间段或(本地)指定为您的计算机名,来指示使用共享内存 Net-Library。也可以在连接时为计算机实例名加上前缀 lpc:,来指示要使用共享内存 Net-Library。   


  注意,即使连接到同一台计算机上的 SQL Server,共享内存 Net-Library 也未必就是最佳的连接选项。在某些情况下,客户端与服务器之间的直接连接可能限制它的扩展性。与应用程序整体体系结构中的其他元素一样,应始终对给定技术解决方案进行全面的测试,然后才能判断它是否有良好的扩展性以及是否比其他方法更快。 


  连接 


  客户端进行连接时,SQL Server 的用户模式计划程序 (UMS) 组件将它指定给特定的计划程序。启动时,SQL Server 为系统上的每个 CPU 创建一个单独的 UMS 计划程序。当客户端连接到服务器时,这些客户端将指定给具有最少连接数的计划程序。连接后,客户端将不会更换计划程序 - 它将始终受到指定计划程序的控制,直到连接断开。   


  这对与服务器建立多个连接的应用程序很重要。如果应用程序性能较差,或无法在它的多个连接上平均分配工作,则在该应用程序的某些连接之间可能造成不必要的 CPU 资源争用,而其他连接实际上却处于空闲状态。   


  例如,应用程序与双处理器计算机上运行的 SQL Server 建立了四个连接,连接 1 和 3 隶属于处理器 0,连接 2 和 4 隶属于处理器 1。如果应用程序的大部分工作通过连接 1 和 3 执行,则这两个连接将争用 CPU 0,而 CPU 1 实际上可能仍处于空闲状态。这种情况下,应用程序只能断开某些连接或重新连接某些连接,并希望连接 1 和 3 隶属于不同的 CPU (连接时无法指定处理器隶属关系),或在它的连接上重新分配工作负荷,以便每个连接的工作负荷更加均衡。当然,后一种情况要远好于前一种情况。   


  连接内存 


  SQL Server 为客户端请求的每个连接保留三个数据包缓冲区。每个缓冲区的大小取决于 sp_configure 存储过程指定的默认网络数据包大小。如果默认网络数据包大小小于 8 KB,则这些数据包的内存将由 SQL Server 的缓冲池提供。否则,该内存将由 SQL Server 的 MemToLeave 区域分配。    


  值得一提的是,.NET Framework Data Provider for SQL Server 的默认网络数据包大小为 8KB,因此,与托管代码客户端连接关联的缓冲区通常由 SQL Server 的 MemToLeave 区域提供。而典型的 ADO 应用程序却不同,它们的默认数据包大小为 4 KB,因此缓冲区将由 SQL Server 缓冲池分配。 


  事件 


  连接后的客户端请求通常分为两种广泛类别:语言事件和远程过程调用。尽管还存在其他类别,但大多数由 SQL Server 客户端发送到服务器的请求由以下两种类型之一构成:语言事件是从客户端发送到服务器的 一组 T-SQL。例如,如果调用 ADO Command 对象(其 CommandText 属性设置为 T-SQL 查询,CommandType 属性设置为 adCmdText)的 Execute 方法,则查询将作为语言事件提交给服务器。同样,如果将 CommandType 设置为 adCmdTable 并调用 Execute 方法,则 ADO 将生成一个内部查询(它将选择 CommandText 属性标识的表中的所有列),并将它作为语言事件提交给服务器。另一方面,如果将 CommandType 设置为 adStoredProc,则调用 Execute 将使 ADO 向服务器提交一个远程过程调用请求,以执行 CommandText 属性中列出的存储过程。   


  为何要关心将请求作为语言事件还是作为 RPC 提交给服务器呢?通常,这是因为 RPC 的功能更为出色,特别是在重复调用具有不同筛选值的同一查询时。尽管 SQL Server 可以自动将普通的语言事件请求参数化,但这种能力非常有限。它从不尝试自动将某些类型的查询参数化。这可能会导致基本相同的查询产生不同的执行,从而只因为这些不同的执行提供不同的值,而导致在服务器上白白浪费计划编译的成本。这通常不是您所希望的结果 - 您希望针对查询的第一次执行编译一个新的计划,然后将该计划重复用于具有不同参数的执行。   


  而 RPC 则通过显式参数化查询(而不是依赖服务器参数化查询)来支持计划重复使用。为过程的第一次执行生成一个计划后,随后的执行将自动重复使用该计划,即使它们提供的参数值不同。与通过语言事件调用存储过程相比,使用 RPC 调用存储过程不仅节省了计划编译所需的执行时间和 CPU 资源,还增强了 SQL Server 内存资源的利用率,因为它避免了冗余执行计划所浪费的内存。   


  在执行动态 T-SQL 时,通常首选 sp_executesql 而不是 EXEC() 也出于同样的原因。Sp_executesql 的工作方式是:使用指定的查询创建一个存储过程,然后使用提供的参数调用它。与 EXEC() 不同,sp_executesql 提供了一个允许您参数化动态 T-SQL 并支持计划重复使用的机制。使用 sp_executesql 执行的动态查询比使用 EXEC() 的查询能够在更大程度上避免不必要的编译和资源消耗。   


  TDS 


  从客户端发送到 SQL Server 的 RPC、语言事件和其他类型的请求被格式化为称作表格数据流 (TDS) 的 SQL Server 特定数据格式。TDS 是 SQL Server 客户端和服务器之间使用的“语言”。对于它的确切格式将不作介绍,但是,如果客户端要与 SQL Server 进行通信,就必须使用 TDS。   


  目前,SQL Server 支持三种版本的 TDS:TDS 8.0(适用于 SQL 2000 客户端)、TDS 7.0(适用于 SQL Server 7.0 客户端)和 TDS 4.2(适用于 SQL Server 4.2、6.0 和 6.5 客户端)。完全支持所有 SQL Server 2000 功能的版本只有 TDS 8.0。其他版本保持向后兼容。   


  服务器端 Net-Library 


  在服务器端,客户端请求最初由 SQL Server 为侦听特定网络协议而建立的侦听器接收。这些侦听器由服务器上的网络库以及服务器端的 Net-Library(在它们与服务器之间提供管道)构成。您可以使用 SQL Server 网络实用程序配置服务器侦听的协议。SQL Server 与客户端支持同样范围的网络协议(处理群集的情况除外)。对于群集化的 SQL Server,只有 TCP/IP 和命名管道可用。   


  SQL Server 为侦听客户端请求所使用的每个网络协议设置一个线程,并使用 Windows 的 I/O 完成端口机制等待和有效处理请求。从网络接收到 TDS 数据包时,Net-Library 侦听器将其重新汇编为它们的原始客户端请求,并将这些请求传递到 SQL Server 的命令处理层,即开放式数据服务 (ODS)。 

  将结果返回到客户端 


  服务器在准备将特定客户端请求的结果返回时,将使用最初接收请求时所用的网络堆栈。它通过服务器端 Net-Library 将结果发送到相应的网络协议,随后这些结果将通过网络以 TDS 格式返回到客户端。    


  在客户端上,客户端 Net-Library 将从服务器接收的 TDS 数据包从 IPC 层重新汇编,并将其继续转发到初始化该请求的 API 或对象库。   


  小结 


  尽管涉及了所有组件,但 SQL Server 客户端与服务器之间的往返过程却相当快 - 特别是在使用内存 Net-Library 时,亚秒响应时间非常普遍。构建和调整您自己的 SQL Server 客户端应用程序时,以下几个与数据相关的问题值得注意:    


  • 如果应用程序与 SQL Server 运行在同一台计算机上,则建议您使用共享内存 Net-Library(如果尚未使用它)。基于共享内存 Net-Library 的连接通常比其他类型的连接快很多。在注意上述内容的同时,还应:始终全面测试解决方案并将它与其他可行方案进行对比,这样才能判断它是否确实更好或更快。事实胜于雄辩。    


  • 由于客户端在第一次连接时将指定给特定的 UMS 计划程序,并只有在断开连接后,才会摆脱该计划程序的控制,因此确保在应用程序与服务器建立的连接上均衡分配工作负荷非常重要。工作负荷不均衡可导致不必要的 CPU 争用并降低资源使用率。    


  • 在服务器上配置的默认网络数据包大小以及客户端在连接时指定的网络数据包大小将直接影响它们在服务器上所需的内存量和分配内存的池。对服务器进行扩展性和速度配置时,应记住这一点。还应记住,默认情况下,ADO.NET 应用程序的网络数据包大小比 ADO 应用程序的更大。    


  • 通常,在向服务器发送请求时,应首选 RPC 而非语言事件。为此,应在使用的 ADO 或 ADO.NET 对象中设置相应的属性。    


  • 执行动态 T-SQL 时,应在可能的情况下使用 sp_executesql 代替 EXEC()。唯一例外的情况是,当使用 EXEC() 的功能将查询片断连接而成的动态查询字符串的大小超过单个本地变量的存储大小时(这种情况非常少见)。    


  • 当遇到客户端问题,并且怀疑它可能和连接服务器时所用的对象库或 API 有关时,可以使用的一个故障排除技巧就是更改所用的客户端机制,这样可以将问题归结为特定的组件。例如,假设您升级 MDAC 并开始在 SQL Server 错误日志中看到 17805 错误,这表明客户端 ADO 应用程序发送的 TDS 数据包的格式不正确。您可能尝试让应用程序转为使用 ODBC 的 OLE DB 提供程序,如果您可以较为容易地做到这一点,应看看该问题是否与 SQLOLEDB 提供程序有一定的关系。相反,如果基于 ADO 的应用程序一直通过 ODBC 进行连接,则可以切换到 SQLOLEDB,看看这是否能解决问题,或至少帮助您缩小问题的范围。    


  • 同样,在对连接问题进行故障排除时,更改正在使用的 Net-Library 有时会有所帮助。如果使用 TCP/IP,命名管道也许值得一试。例如,如果 DHCP 服务器出现问题,并且没有有效的 IP 地址,则您将无法使用 TCP/IP 连接到 SQL Server。通过切换到命名管道,可以快速地将问题归结为 TCP/IP 特定的因素上。另一方面,如果在切换 Net Library 后仍存在同样的问题,则可以排除 Net-Library 方面的问题。问题的原因可能是服务器已关闭,或在您与服务器之间的某处网络基础设施无法正常工作。最后,还可以容易地更改应用程序使用的 Net-Library,而不必更改应用程序本身,这样就为您提供一个帮助缩小问题范围的工具。尽管从长远角度而言,使用某一特定 Net-Library 并不可行,但让客户端临时使用它可以帮助您缩小连接相关问题的范围。


52coko 发表于:2006.04.20 19:53 ::分类: ( 技术摘录 )

===========================================================

windows2000上怎么装PHP+MYSQL(IIS版)

===========================================================

windows2000上怎么装PHP+MYSQL(IIS版)


我在WWW.OSO.COM.CN 发的帖子“windows2000个人版上怎么装PHP+MYSQL()”有几位朋友回落 

我先谢过大家,大家说的是APACHE的,但苦于APACHE的WIN32版找不到(OSO的APACHE的WIN32版下载没有用)


我只有用IIS的,


我的php4和mysql的软件包是php-4.0.1pl2-Win32.zip、mysql-3.23.19-beta-win.zip。


windows2000(p) + IIS 5.O


1:安装mysql


after setup all is ok but run : C:mysqlbinmysqld-nt.exe --install 

“开始”按钮下的“程序”=》“管理工具”=》“服务”,找到“mysql”服务,启动; 

mysql setup ok!


 


2:安装php4


解压到c:php4下,再将目录下的所有dll文件拷到c;windowssystem32下(包裹子目录),不要覆盖已有的dll文件; 

接着将目录下的php.exe和php.ini-dist两个文件拷到c:winnt下; 

将c:winntphp.ini-dist改名为php.ini,并打开它, 

找到;Windows Extensions, 

将extension=php_zlib.dll、extension=php_ldap.dll前的“;”去掉. 

修改 extension_dir = ./ 

为 extension_dir = c:windowssystem


在[mysql]栏下修改 

mysql.default_port = 3306 

mysql.default_host = localhost 

mysql.default_user = root


打开“开始”按钮下的“程序”=》“管理工具”=》“internet服务管理器”,选中“默认web站点”,打开 它的“属性”窗口。在“web站点”页下,改变“IP地址”:您机子的ip地址,例如: 192.168.0.29)”;“ TCP端口”为“80”。


接着,选中“主目录”页,单击“应用程序设置”下的“配置”按钮后,在新窗口下单击“添加”按钮; 

在“ 可执行文件”中输入“C:WINNTphp.exe %s %s”,在“扩展名”中输入“.php”,点击“确定”。 

在“ 可执行文件”中输入“C:WINNTphp.exe %s %s”,在“扩展名”中输入“.php3”,点击“确定”。 (对PHPADMIN的支持)


接着,选中“ISAPI筛选器”页, 

单击“添加”按钮;在“筛选器名称”中输入“php”,在“可执行文件”中 输入 

“ C:WINNTsystem32php4isapi.dll”,点击“确定”。 

单击“添加”按钮;在“筛选器名称”中输入“php3”,在“可执行文件”中 输入 

“ C:WINNTsystem32php4isapi.dll”,点击“确定”。 

接着,选中“文档”页,单击“添加”按钮;在“默认文档名”中输入“index.php”,点击“确定”


3:安装phpadmin


解压到c:admin 下 

添加 C:adminphpMyAdmin 的WEB共享命名为 ADMIN 以后用HTTP://192.168.0.29(您机子的ip地址)/ADMIN 

管理MYSQL


4.reload windows2000...



你浏览的文章是 - 《unix下的一些操作命令》!
文章出处:https://www.procedurelife.com/content/akkjfl.html
0% (0)
0% (0)
评论0
游客
1 2