您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 高级 Linux 命令精通指南
高级Linux命令精通指南,第1部分作者:ArupNanda2006年8月发布在SherylCalish撰写的“Linux文件命令精通指南”这篇出色的文章中,您学习到了一些对于Linux新手尤为重要的常用Linux命令。既然您现在已经掌握了基础知识,下面我们将介绍一些更为复杂但却非常有用的命令。在这个共分4个部分的文章系列中,您将学习各种常用命令的一些并不被人们所熟知的使用技巧,以及可以使这些命令更为有用的用法变化形式。在学习本文章系列过程中,您将先后了解一些难于掌握的命令。注意,根据您所使用的Linux的特定版本或编译的特定内核,这些命令可能会存在差别,但即便如此,这种差别也很小。轻松更改所有者、组和权限在Sheryl的文章中,您学习了如何使用chown和chgrp命令来更改文件的所有权和组。假设有如下几个文件:#ls-ltotal8-rw-r--r--1anandausers70Aug404:02file1-rwxr-xr-x1oracledba132Aug404:02file2-rwxr-xr-x1oracledba132Aug404:02file3-rwxr-xr-x1oracledba132Aug404:02file4-rwxr-xr-x1oracledba132Aug404:02file5-rwxr-xr-x1oracledba132Aug404:02file6并且您需要更改所有文件的权限以便与file1的权限匹配。当然,您可以执行chmod644*来进行此更改,但如果您要编写一个脚本来执行该操作,而事先却并不知道这些权限,那该怎么办?或者,您可能要基于许多不同的文件进行多个权限更改,但却发现逐个使用这些文件的权限并进行相应的修改并不可行。一种更好的方法是使权限类似于另一个文件的权限。以下命令使file2的权限与file1相同:chmod--referencefile1file2现在,如果您查看以下示例:#ls-lfile[12]total8-rw-r--r--1anandausers70Aug404:02file1-rw-r--r--1oracledba132Aug404:02file2file2的权限完全按照file1中的权限进行了更改。您不必先获取file1的权限。您还可以将同一技巧用于文件中的组成员关系。要使file2的组与file1相同,可以执行以下命令:#chgrp--referencefile1file2#ls-lfile[12]-rw-r--r--1anandausers70Aug404:02file1-rw-r--r--1oracleusers132Aug404:02file2当然,适用于更改组的方法也同样适用于所有者。下面演示了如何将同一技巧用于所有权更改。如果权限如下所示:#ls-lfile[12]-rw-r--r--1anandausers70Aug404:02file1-rw-r--r--1oracledba132Aug404:02file2则可以按以下方式更改所有权:#chown--referencefile1file2#ls-lfile[12]-rw-r--r--1anandausers70Aug404:02file1-rw-r--r--1anandausers132Aug404:02file2注意,组和所有者已经更改。适用于Oracle用户的技巧您可以使用该技巧根据某个参考可执行文件更改目录中Oracle可执行文件的所有权和权限。该技巧对于移植非常有用,在移植期间您可以(并且可能应该)以不同的用户身份安装文件,并在以后将这些文件转移至常规的Oracle软件所有者。有关文件的详细说明ls命令及其许多参数提供了一些非常有用的文件信息。另一个不太为人所熟知的命令stat提供了一些更为有用的信息。下面演示了如何对可执行文件“oracle”(位于$ORACLE_HOME/bin目录下)使用此命令。#cd$ORACLE_HOME/bin#statoracleFile:`oracle'Size:93300148Blocks:182424IOBlock:4096RegularFileDevice:343h/835dInode:12009652Links:1Access:(6751/-rwsr-s--x)Uid:(500/oracle)Gid:(500/dba)Access:2006-08-0404:30:52.000000000-0400Modify:2005-11-0211:49:47.000000000-0500Change:2005-11-0211:55:24.000000000-0500注意使用该命令获得的信息:除了通常的文件大小(也可以使用ls-l命令获得)以外,您还获得了该文件占用的块数。通常的Linux块大小为512字节,因此一个大小为93,300,148字节的文件将占用(93300148/512=)182226.85个块。由于块都是完整占用,因此该文件使用了一些整数个数的块。无需猜测就可以获得确切的块数。您还可以从以上输出中获得文件所有权的GID和UID,以及权限的八进制表示形式(6751)。如果要将文件恢复到它现在具有的相同权限,可以使用chmod6751oracle,而不是显式拼写这些权限。以上输出最有用的部分是文件访问时间戳信息。该输出显示,该文件被访问的时间是2006-08-0404:30:52(显示在“Access:”的旁边),即2006年8月4日上午4:30:52。这是某个人开始使用数据库的时间。该文件的修改时间是2005-11-0211:49:47(显示在“Modify:”的旁边)。最后,“Change:”旁边的时间戳显示文件状态更改的时间。stat命令的修改符-f显示了有关文件系统(而非文件)的信息:#stat-foracleFile:oracleID:0Namelen:255Type:ext2/ext3Blocks:Total:24033242Free:15419301Available:14198462Size:4096Inodes:Total:12222464Free:12093976另一个选项-t显示了完全相同的信息,只不过是在一行中显示的:#stat-toracleoracle933001481824248de9500500343120096521001154682061113095018711309505244096这对shell脚本非常有用,在shell脚本中可以使用一个简单的cut命令获得值以进行进一步处理。适用于Oracle用户的技巧重新链接Oracle(通常在安装补丁过程中执行)时,将在创建新的可执行文件之前将现有可执行文件的名称更改为其他名称。例如,可以使用以下命令重新链接所有实用程序relinkutilities该命令对sqlplus可执行文件进行重新编译,此外还执行其他操作。它将现有的可执行文件sqlplus命名为sqlplusO。如果重新编译由于某种原因失败,则relink进程会将sqlplusO重命名为sqlplus,并撤销更改。同样,如果在应用补丁后发现功能问题,则可以通过手动重命名文件来快速撤销补丁。下面演示了如何对这些文件使用stat:#statsqlplus*File:'sqlplus'Size:9865Blocks:26IOBlock:4096RegularFileDevice:343h/835dInode:9126079Links:1Access:(0751/-rwxr-x--x)Uid:(500/oracle)Gid:(500/dba)Access:2006-08-0405:15:18.000000000-0400Modify:2006-08-0405:15:18.000000000-0400Change:2006-08-0405:15:18.000000000-0400File:'sqlplusO'Size:8851Blocks:24IOBlock:4096RegularFileDevice:343h/835dInode:9125991Links:1Access:(0751/-rwxr-x--x)Uid:(500/oracle)Gid:(500/dba)Access:2006-08-0405:13:57.000000000-0400Modify:2005-11-0211:50:46.000000000-0500Change:2005-11-0211:55:24.000000000-0500输出显示sqlplusO的修改时间是2005年11月11日,而sqlplus的修改时间是2006年8月4日,该时间也是sqlplusO的状态更改时间。该输出表明,sqlplus的原始版本从2005年11月11到2006年8月4日这段时间内一直正常运行。如果要诊断某些功能问题,则该信息将是一个非常不错的起点。除了文件更改以外,如果您知道权限的更改时间,则可以将它与发觉的任何功能问题联系起来。另一个重要的输出是文件大小,不同的文件存在不同的大小(sqlplus的大小为9865字节,而sqlplusO的大小为8851),这表明版本不仅仅经过重新编译,实际上这些版本通过其他库进行了更改(也许是这样)。文件大小的不同还指示了某些问题的可能原因。文件类型查看文件时,如何知道它的文件类型?命令file可以显示文件类型。例如:#filealert_DBA102.logalert_DBA102.log:ASCIItext文件alert_DBA102.log是一个ASCII文本文件。来看看更多示例:#fileinitTESTAUX.ora.ZinitTESTAUX.ora.Z:compress'ddata16bits该示例指示文件是压缩文件,但如何知道文件的压缩类型?方法之一是将该文件解压缩并再次运行它;但这实际上是几乎不可能的。一种更简便的方法是使用参数-z:#file-zinitTESTAUX.ora.ZinitTESTAUX.ora.Z:ASCIItext(compress'ddata16bits)另一种方法是显示符号链接:#filespfile+ASM.ora.ORIGINALspfile+ASM.ora.ORIGINAL:symboliclinkto/u02/app/oracle/admin/DBA102/pfile/spfile+ASM.ora.ORIGINAL尽管该方法很有用,但所指向的文件的类型是什么?可以使用选项-l,而不必再次运行文件:#file-Lspfile+ASM.ora.ORIGINALspfile+ASM.ora.ORIGINAL:data该示例清楚地表明该文件是数据文件。注意,与init.ora不同的是,spfile文件是一个二进制文件;因此文件显示为数据文件。适用于Oracle用户的技巧假设您要在用户转储目标目录中搜索某个跟踪文件,但不知道该文件是否位于其他目录并只以一个符号链接形式存在,或某个人是否压缩了该文件(甚至对其进行了重命名)。有一点您是知道的:该文件肯定是一个ascii文件。下面演示了如何执行操作:file-Lz*|grepASCII|cut-d:-f1|xargsls-ltr该命令将检查ASCII文件(即使它们经过了压缩)并按时间顺序将其列出。比较文件如何判断两个文件(file1和file2)是否相同?方法有多种,每种方法都有其自身的优点。diff。最简单的命令是diff,用于显示两个文件之间的差别。以下是这两个文件的内容:#catfile1Infile1onlyInfile1andfile2#catfile2Infile1andfile2Infile2only使用diff命令能够了解这两个文件之间的差别,如下所示:#difffile1file21d0Infile1only2a2Infile2only#在以上输出中,第一列中的“”表示该行位于上面最先提到的文件(即file1)中。第一列中
本文标题:高级 Linux 命令精通指南
链接地址:https://www.777doc.com/doc-6337754 .html