高级 Linux 命令精通指南1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

高级Linux 命令精通指南

作者:Arup Nanda

2006 年8 月发布

在Sheryl Calish撰写的“Linux 文件命令精通指南”这篇出色的文章中,您学习到了一些对于Linux 新手尤为重要的常用Linux 命令。既然您现在已经掌握了基础知识,下面我们将介绍一些更为复杂但却非常有用的命令。

在这个共分 4 个部分的文章系列中,您将学习各种常用命令的一些并不被人们所熟知的使用技巧,以及可以使这些命令更为有用的用法变化形式。在学习本文章系列过程中,您将先后了解一些难于掌握的命令。

注意,根据您所使用的Linux 的特定版本或编译的特定内核,这些命令可能会存在差别,但即便如此,这种差别也很小。

轻松更改所有者、组和权限

在Sheryl 的文章中,您学习了如何使用chown 和chgrp 命令来更改文件的所有权和组。假设有如下几个文件:

# ls -l

total 8

-rw-r--r-- 1 ananda users 70 Aug 4 04:02 file1

-rwxr-xr-x 1 oracle dba 132 Aug 4 04:02 file2

-rwxr-xr-x 1 oracle dba 132 Aug 4 04:02 file3

-rwxr-xr-x 1 oracle dba 132 Aug 4 04:02 file4

-rwxr-xr-x 1 oracle dba 132 Aug 4 04:02 file5

-rwxr-xr-x 1 oracle dba 132 Aug 4 04:02 file6

并且您需要更改所有文件的权限以便与file1 的权限匹配。当然,您可以执行chmod 644 *来进行此更改,但如果您要编写一个脚本来执行该操作,而事先却并不知道这些权限,那该怎么办?或者,您可能要基于许多不同的文件进行多个权限更改,但却发现逐个使用这些文件的权限并进行相应的修改并不可行。一种更好的方法是使权限类似于另一个文件的权限。以下命令使file2 的权限与file1 相同:

chmod --reference file1 file2

现在,如果您查看以下示例:

# ls -l file[12]

total 8

-rw-r--r-- 1 ananda users 70 Aug 4 04:02 file1

-rw-r--r-- 1 oracle dba 132 Aug 4 04:02 file2

file2 的权限完全按照file1 中的权限进行了更改。您不必先获取file1 的权限。

您还可以将同一技巧用于文件中的组成员关系。要使file2 的组与file1 相同,可以执行以下命令:

# chgrp --reference file1 file2

# ls -l file[12]

-rw-r--r-- 1 ananda users 70 Aug 4 04:02 file1

-rw-r--r-- 1 oracle users 132 Aug 4 04:02 file2

当然,适用于更改组的方法也同样适用于所有者。下面演示了如何将同一技巧用于所有权更改。如果权限如下所示:

# ls -l file[12]

-rw-r--r-- 1 ananda users 70 Aug 4 04:02 file1

-rw-r--r-- 1 oracle dba 132 Aug 4 04:02 file2

则可以按以下方式更改所有权:

# chown --reference file1 file2

# ls -l file[12]

-rw-r--r-- 1 ananda users 70 Aug 4 04:02 file1

-rw-r--r-- 1 ananda users 132 Aug 4 04:02 file2

注意,组和所有者已经更改。

适用于Oracle 用户的技巧

您可以使用该技巧根据某个参考可执行文件更改目录中Oracle 可执行文件的所有权和权限。该技巧对于移植非常有用,在移植期间您可以(并且可能应该)以不同的用户身份安装文件,并在以后将这些文件转移至常规的Oracle 软件所有者。

有关文件的详细说明

ls命令及其许多参数提供了一些非常有用的文件信息。另一个不太为人所熟知的命令stat提供了一些更为有用的信息。

下面演示了如何对可执行文件“oracle”(位于$ORACLE_HOME/bin 目录下)使用此命令。

# cd $ORACLE_HOME/bin

# stat oracle

File: `oracle'

Size: 93300148 Blocks:182424 IO Block:4096 Regular File

Device: 343h/835dInode: 12009652 Links: 1

Access: (6751/-rwsr-s--x) Uid:( 500/ oracle) Gid:( 500/ dba)

Access: 2006-08-04 04:30:52.000000000 -0400

Modify: 2005-11-02 11:49:47.000000000 -0500

Change: 2005-11-02 11:55:24.000000000 -0500

注意使用该命令获得的信息:除了通常的文件大小(也可以使用ls -l命令获得)以外,您还获得了该文件占用的块数。通常的Linux 块大小为512 字节,因此一个大小为93,300,148 字节的文件将占用(93300148/512=) 182226.85 个块。由于块都是完整占用,因此该文件使用了一些整数个数的块。无需猜测就可以获得确切的块数。

您还可以从以上输出中获得文件所有权的GID和UID,以及权限的八进制表示形式(6751)。如果要将文件恢复到它现在具有的相同权限,可以使用chmod 6751 oracle,而不是显式拼写这些权限。

以上输出最有用的部分是文件访问时间戳信息。该输出显示,该文件被访问的时间是2006-08-04 04:30:52(显示在“Access:”的旁边),即2006 年8 月4 日上午4:30:52。这是某个人开始使用数据库的时间。该文件的修改时间是2005-11-02 11:49:47(显示在“Modify:”的旁边)。最后,“Change:”旁边的时间戳显示文件状态更改的时间。

stat命令的修改符-f显示了有关文件系统(而非文件)的信息:

# stat -f oracle

File: "oracle"

ID: 0 Namelen:255Type:ext2/ext3

Blocks: Total: 24033242 Free: 15419301 Available: 14198462 Size: 4096

相关文档
最新文档