⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3.html

📁 介绍linux下文件和设备编程
💻 HTML
📖 第 1 页 / 共 5 页
字号:
#http_proxy:http://penguin.in.ibm.com:8080<br>#ftp_proxy:http://penguin.in.ibm.com:8080/<p>.h2 NO_PROXY<br># The no_proxy variable can be a comma-separated list of strings defining<br># no-proxy zones in the DNS domain name space.&nbsp; If a tail substring of the<br># domain-path for a host matches one of these strings, transactions with that<br># node will not be proxied.<br>.ex<br>no_proxy:demiurge.in.ibm.com, demiurge<p>&nbsp;&nbsp;&nbsp; 用户或系统程序在每次启动时都会读取其配置文件。尽管如此,请记住,有些系统程序在计算机打开时情况不一样,它们的行为依赖于在 /etc/ 中的配置文件中读到的内容。所以,用户程序第一次启动时将从 /etc/ 目录中存在的文件读取缺省配置。然后,用户可以通过使用 rc 和 .(点)文件来定制程序,正如下面一节所示。<p>用户配置文件:.(点)文件和 rc 文件<br>&nbsp;&nbsp;&nbsp; 我们已经看到怎样容易地配置程序。但是如果有的人不喜欢在 /etc/ 中配置程序的方式该怎么办呢?“普通”用户不能简单地进入 /etc 然后更改配置文件;从文件系统的角度来看,配置文件的所有者是 root 用户!这就是大多数用户程序都定义两个配置文件的原因:第一个是“系统”级别的,位于 /etc/;另一个属于用户“专用”,可以在他或她的主目录中找到。<p>&nbsp;&nbsp;&nbsp; 例如,我在我的系统中安装了非常有用的 wget 实用程序。/etc/ 中有一个 /etc/wgetrc 文件。在我的主目录中,有一个名为 .wgetrc 的文件,它描述了我定制的配置(只有在我,也就是用户运行 wget 命令时,才会加载这个配置文件)。其它用户在他们自己的主目录(/home/other)中也可以有 .wgetrc 文件;当然,只有这些用户运行 wget 命令时,才会读取这个文件。换句话说,/etc/wgetrc 文件为 wget 提供了“缺省”值,而 /home/xxx/.wgetrc 文件列举了某个用户的“定制项”。重要的是这只是“一般规则”,并非所有情况都如此。例如,一个象 pine 一样的程序,在 /etc/ 中并没有任何文件,它只在用户主目录中有一个定制配置文件,名为 .pinerc。其它程序可能只有 /etc/ 中的缺省配置文件,而且可能不允许用户“定制”这些配置文件(/etc 目录中只有少数 config. 文件是这种情况)。<p><br><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I82" ID="I82"></A><center><b><font size=+2>rc和点文件</font></b></center><br>通常使用的 rc 和 .(点)文件<p>~/.bash_login<br>&nbsp;&nbsp;&nbsp; 请参考“man bash”。如果 ~/.bash_profile 不存在,bash 则将 ~/.bash_login 作为 ~/.bash_profile 处理。<p>~/.bash_logout<br>&nbsp;&nbsp;&nbsp; 请参考“man bash”。在退出时由 bash 登录 shell 引用。<p>~/.bash_profile<br>&nbsp;&nbsp;&nbsp; 由 bash 登录 shell 引用 /etc/profile 之后引用。<p>~/.bash_history<br>&nbsp;&nbsp;&nbsp; 先前执行的命令的列表。<p>~/.bashrc<br>&nbsp;&nbsp;&nbsp; 请参考“man bash”。由 bash 非登录交互式 shell 引用(没有其它文件)。除非设置了 BASH_ENV 或 ENV,非交互式 shell 不引用任何文件。<p>~/.emacs<br>&nbsp;&nbsp;&nbsp; 启动时由 emac 读取。<p>~/.forward<br>&nbsp;&nbsp;&nbsp;&nbsp; 如果这里包含一个电子邮件地址,那么所有发往 ~ 的所有者的邮件都会被转发到这个电子邮件地址。<p>~/.fvwmrc ~/.fvwm2rc<br>&nbsp;&nbsp;&nbsp; fvwm 和 fvwm2(基本的 X Window 管理器)的配置文件。<p>~/.hushlogin<br>&nbsp;&nbsp;&nbsp; 请参考“man login”。引起“无提示”登录(没有邮件通知、上次登录信息或者 MOD 信息)。<p>~/.mail.rc<br>&nbsp;&nbsp;&nbsp; 邮件程序的用户初始化文件。<p>~/.ncftp/ ncftp<br>&nbsp;&nbsp;&nbsp; 程序的目录;包含书签、日志、宏、首选项和跟踪信息。请参阅 man ncftp。ncftp 的目的是为因特网标准文件传输协议(Internet standard File Transfer Protocol)提供一个强大而灵活的接口。它旨在替换系统所使用的标准的 ftp 程序。<p>~/.profile<br>&nbsp;&nbsp;&nbsp; 请参考“man bash”。如果 ~/.bash_profile 和 ~/.bash_login 文件不存在,bash 则将 ~/.profile 作为 ~/.bash_profile 处理,并被其它继承 Bourn 的 shell 使用。<p>~/.pinerc Pine 配置<p>~/.muttrc Mutt 配置<p>~/.exrc<br>&nbsp;&nbsp;&nbsp; 这个文件可以控制 vi 的配置。<br>示例:set ai sm ruler<br>在此文件中写入上面一行会让 vi 设置自动缩进、匹配括号、显示行号和行-列这几个选项。<p>~/.vimrc<br>&nbsp;&nbsp;&nbsp; 缺省的“Vim”配置文件。和 .exrc 一样。<p>~/.gtkrc GNOME 工具包(GNOME Toolkit)。<p>~/.kderc KDE 配置。<p>~/.netrc<br>&nbsp;&nbsp;&nbsp; ftp 缺省登录名和密码。<p>~/.rhosts<br>&nbsp;&nbsp;&nbsp; 由 r- 工具(如 rsh、rlogin 等等)使用。因为冒充主机很容易,所以安全性非常低。<br>必须由用户(~/ 的所有者)或超级用户拥有。<br>列出一些主机,用户可以从这些主机访问该帐号。<br>如果是符号链接则被忽略。<p>~/.rpmrc<br>&nbsp;&nbsp;&nbsp; 请参阅“man rpm”。如果 /etc/rpmrc 不存在则由 rpm 读取。<p>~/.signature<br>&nbsp;&nbsp;&nbsp; 消息文本,将自动附加在从此帐号发出的邮件末尾。<p>~/.twmrc<br>&nbsp;&nbsp;&nbsp; twm(The Window Manager)的配置文件。<p>~/.xinitrc<br>&nbsp;&nbsp;&nbsp; 启动时由 X 读取(而不是由 xinit 脚本读取)。通常会启动一些程序。<br>示例:exec /usr/sbin/startkde<br>如果该文件中存在上面这行内容,那么在从这个帐号发出 startx 命令时,这一行就会启动“KDE 视窗管理器”(KDE Window Manager)。<p>~/.xmodmaprc<br>&nbsp;&nbsp;&nbsp; 此文件被传送到 xmodmap 程序,而且可以被命名为任何文件(例如 ~/.Xmodmap 和 ~/.keymap.km)。<p>~/.xserverrc<br>&nbsp;&nbsp;&nbsp; 如果 xinit 可以找到要执行的 X,xinit 就会将该文件作为 X 服务器运行。<p>~/News/Sent-Message-IDs<br>&nbsp;&nbsp;&nbsp; gnus 的缺省邮件历史文件。<p>~/.Xauthority<br>&nbsp;&nbsp;&nbsp; 由 xdm 程序读和写,以处理权限。请参阅 X、xdm 和 xauth 联机帮助页。<p>~/.Xdefaults,~/.Xdefaults-hostname<br>&nbsp;&nbsp;&nbsp; 在主机 hostname 的启动过程中由 X 应用程序读取。如果找不到 -hostname 文件,则查找 .Xdefaults 文件。<p>~/.Xmodmap<br>&nbsp;&nbsp;&nbsp; 指向 .xmodmaprc;Red Hat 有使用这个名称的 .xinitrc 文件。<p>~/.Xresources<br>&nbsp;&nbsp;&nbsp; 通常是传送到 xrdb 以加载 X 资源数据库的文件的名称,旨在避免应用程序需要读取一个很长的 .Xdefaults 文件这样的情况。(有些情况曾经使用了 ~/.Xres。)<p>~/mbox 用户的旧邮件。<p><p><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I83" ID="I83"></A><center><b><font size=+2>文件系统</font></b></center><br>&nbsp;&nbsp;&nbsp; Linux文件系统是Linux系统的心脏部分,提供了层次结构的目录和文件。文件系统将磁盘空间划分为每1024个字节一组,称为块(也有用512字节为一块的,如:SCOXENIX)。编号从0到整个磁盘的最大块数。<p>&nbsp;&nbsp;&nbsp; 全部块可划分为四个部分,块0称为引导块,文件系统不用该块;块1称为专用块,专用块含有许多信息,其中有磁盘大小和全部块的其他两部分的大小。从块2开始是i节点表,i节点表中含有i节点,表的块数是可变的,后面将做讨论。i节点表之后是空闲存储块(数据存储块),可用于存放文件内容。文件的逻辑结构和物理结构是十分不同的,逻辑结构是用户敲入cat命令后所看到的文件,用户可得到表示文件内容的字符流。物理结构是文件实际上如何存放在磁盘上的存储格式。用户认为自己的文件是边疆的字符流,但实际上文件可能并不是以边疆的方式存放在磁盘上的,长于一块的文件通常将分散地存放在盘上。然而当用户存取文件时,Linux文件系统将以正确的顺序取出各块,给用户提供文件的逻辑结构。<p>&nbsp;&nbsp;&nbsp; 当然,在Linux系统的某处一定会有一个表,告诉文件系统如何将物理结构转换为逻辑结构。这就涉及到i节点了。i节点是一个64字节长的表,含有有关一个文件的信息,其中有文件大小、文件所有者、文件存取许可方式,以及文件为普通文件、目录文件还是特别文件等。在i节点中最重要的一项是磁盘地址表。<p>&nbsp;&nbsp;&nbsp; 该表中有13个块号。前10个块号是文件前10块的存放地址。这10个块号能给出一个至多10块长的文件的逻辑结构,文件将以块号在磁盘地址表中出现的顺序依次取得相应的块。当文件长于10块时又怎样呢?磁盘地址表中的第11项给出一个块号,这个块号指出的块中含有256个块号,至此,这种方法满足了至多长于266块的文件(272384字节)。如果文件大于266块,磁盘地址表的第12项给出一个块号,这个块号指出的块中含有256个块号,这256个块号的每一个块号又指出一块,块中含256个块号,这些块号才用于取文件的内容。磁盘地址中和第13项索引寻址方式与第12项类似,只是多一级间接索引。<p>&nbsp;&nbsp;&nbsp; 这样,在Linux系统中,文件的最大长度是16842762块,即17246988288字节,有幸是Linux系统对文件的最大长度(一般为1到2M字节)加了更实际的限制,使用户不会无意中建立一个用完整个磁盘区所有块的文件。<p>&nbsp;&nbsp;&nbsp; 文件系统将文件名转换为i节点的方法实际上相当简单。一个目录实际上是一个含有目录表的文件:对于目录中的每个文件,在目录表中有一个入口项,入口项中含有文件名和与文件相应的i节点号。当用户敲入catxxx时,文件系统就在当前目录表中查找名为xxx的入口项,得到与文件xxx相应的i节点号,然后开始取含有文件xxx的内容的块。<p><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I84" ID="I84"></A><center><b><font size=+2>inode</font></b></center><br>&nbsp;&nbsp;&nbsp; 一个inode有128 byte。在新建文件系统时, 通常会有一个参数, 用来描述要分配多少比例的空间给inode table。举例来说newfs -i 2048是指文件系统中, 每分配2048 byte给data area, 就分配一个inode。但一个inode并不一定用掉2048 byte, 也不是说 files allocation的最小单位是2048 byte, 它仅仅只是代表文件系统中inode table/data area分配空间的比例是 128/2048 也就是 1/16。如果 inode table 太小, 那么在每个文件都很小的时候, 就会发生inode用光而存储空间多余的情况。file allocation的最小单位和inode多少没有关系<p><p><br><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I85" ID="I85"></A><center><b><font size=+2>安装和拆卸文件系统</font></b></center><br>&nbsp;&nbsp;&nbsp; Linux文件系统是可安装的,这意味着每个文件系统可以连接到整个目录树的任意节点上(根目录总是被安装上的)。安装文件系统的目录称为安装点。<p>&nbsp;&nbsp;&nbsp; /etc/mount命令用于安装文件系统,用这条命令可将文件系统安装在现有目录结构的任意处。<p>&nbsp;&nbsp;&nbsp; 安装文件系统时,安装点的文件和目录都是不可存取的,因此未安装文件系统时,不要将文件存入安装点目录。文件系统安装后,安装点的存取许可方式和所有者将改变为所安装的文件根目录的许可方式和所有者。<p>&nbsp;&nbsp;&nbsp; 安装文件系统时要小心:安装点的属性会改变!还要注意新建的文件,除非新文件系统是由标准文件建立的,系统标准文件会设置适当的存取许可方式,否则新文件系统的存取许可将是777!<p>&nbsp;&nbsp;&nbsp; 可用-r选项将文件系统安装成只读文件系统。需要写保护的带驱动器和磁盘,应当以这种方式来安装。<p>&nbsp;&nbsp;&nbsp; 不带任何参数的/etc/mount可获得系统中所安装的文件系统的有关信息。包括:文件系统被安装的安装点目录,对应/dev中的设备,只读或可读写,安装时间和日期等。从安全的观点来讲,可安装系统的危险来自用户可能请求系统管理员为其安装用户自己的文件系统。如果安装了用户的文件系统,则应在允许用户存取文件系统前,先扫描用户的文件系统,搜索SUID/SGID程序和设备文件。在除了系统管理员外任何人不能执行的目录中安装文件系统,用find命令或secure列出可疑文件,删除不属用户所有的文件的SUID/SGID许可。<p>&nbsp;&nbsp;&nbsp; 用户的文件系统用完后,可用umount命令卸下文件系统。并将安装点目录的所有者改回系统管理员,存取许可改为755。<p><p><p><br><center><A HREF="#Content">[目录]</A></center><hr><br><A NAME="I86" ID="I86"></A><center><b><font size=+2>恢复被删除文件</font></b></center><br>&nbsp;&nbsp;&nbsp; 前些天被我误删掉的 home directory 下的几千个文件,经过本人数天的连续奋战,现绝大部分已恢复,算是奇迹也不是奇迹。<p>&nbsp;&nbsp;&nbsp; 删掉文件其实只是将指向数据块的索引点 (information nodes) 释放,只要不被覆盖,数据其实还在硬盘上,关键在于找出索引点,然后将其所指数据块内的数据抓出,再保存到另外的分区。<p>&nbsp;&nbsp;&nbsp; 我先在网上查有关 linux undelete 的信息,找到一个 ext2fs-undeletion 的mini-Howto,后发觉在RH6.2的 /usr/doc/HOWTO 内也有,按它的方法,先将被删掉数据的盘区 umount 掉(防止写盘覆盖被删除的数据,显然这一步在误删数据后做得越快越好,尤其是对多人使用的计算机),然后查文件系统中哪些索引点最近被释放:<p>&nbsp;&nbsp; #debugfs /dev/hda6 (my 'home' partition)<br>&nbsp;&nbsp; debugfs: lsdel<p>即给出相应信息,包括索引点,文件属主,大小,删除日期等。也可将结果输出到一个文件中<p>&nbsp;&nbsp; debugfs: quit<br>&nbsp;&nbsp; # echo lsdel | debugfs /dev/hda6 &gt; lsdel.out<p>还可用 debugfs 中 stat 查看某一索引点的详细信息:<p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -