Linux的快捷键和主要命令(转)[@more@]作者:幻影快递Linux小组
5.1 Linux基本的键盘输入快捷键和一些常用命令
5.2 帮助命令
5.3 系统信息
5.4 基本操作
5.5 文件管理
5.6 查看和编辑文件
5.7 查找文件
5.8 X-windows基础
5.9 网络应用程序
5.10 文件压缩和解压缩
5.11 进程控制
5.12 一些管理命令
5.13 硬盘和软盘实用工具
5.14 用户帐户和文件权限管理
5.15 程序安装
5.16 访问磁盘驱动器/分区
5.17 网络管理工具
5.18 与音乐有关的命令
5.19 与图形相关的命令
5.20 几个小游戏
简介:
这是包含在Linux软件包里(RedHat或者Mandrake),我们比较经常使用和比较有用的一些命令集合。在你当前路径的命令提示行下按键,就可以看到有效的命令一览。在我的小型家用系统上,在我的当前路径下有3786个可执行命令。这些命令的大部分可以在图形用户界面下使用鼠标的左键或者右键来访问,全部都可以使用命令行来运行(除非你没有安装对应的软件包,在我的CD里都可以运行)。那些要求图形用户界面的程序必须在图形用户下才能运行,比如,你可以通过在KDE或者GNOME的终端输入命令来运行这些程序。一些更高级(对新手没有用处?)的命令工具可以参考第七部分的相关内容。
以下给那些对Linux没有概念的新手:
1. Linux是大小写敏感的系统,举个例子,Mozilla, MOZILLA, mOzilla和 mozilla是四个不同的命令(但是只有第四个mozilla是真正有效的命令)。还有,my_filE, my_file,和 my_FILE是三个不同的文件。用户的登录名和秘密也是大小写敏感的(这是因为UNIX系统和C语言的传统一向是大小写敏感所致)。
2. 文件名最多可以有256个字符,可以包含数字,点号”.”,下划线”_”,横杆”-”,加上其他一些不被建议使用的字符。
3. 文件名前面带”.”的文件在输入”ls”或者”dir” 命令时一般不显示。可以把这些文件看作是隐含文件,当然你也可以使用命令”ls –a”来显示这些文件。
4. “/”对等于DOS下的””(根目录,意味着所有其他目录的父目录,或者是在目录之间和目录和文件之间的一个间隔符号)。举个例子,cd /usr/doc。
5. 在Linux系统下,所有的目录显示在单一目录树下(有别于DOS系统的驱动器标识)。这意味着所有的物理设备上的所有文件和目录都合并在单一的目录树下。
6. 在配置文件里,以#打头的行是注释行。在修改配置文件的时候尽量不要删除旧的设置――可以把原来的设置加上”#”变成注释行,总是在修改地方对应地加入一些关于修改的注释,你会发觉在以后的管理中获益多多。
7. Linux是继承性的多用户操作系统。你的个人设定(和其他用户的个人设定)放在你的主目录下(一般是/home/your_user_login_name)。许多的配置文件的文件名都以”.”开头,这样用户一般看不到这些文件。
8. 整个系统范围的设定一般放在目录/etc下。
9. 和其他的多用户操作系统类似,在Linux下,文件和目录有自己的拥有者和访问权限。一般来说,你只被允许文件到你的主目录下(/home/your_user_login_name)。学习一些关于文件权限管理的相关知识,否则你肯定会觉得Linux实在很麻烦。
10. 命令参数选项一般由”-”引导,后面跟一个字符(或者”--“,当选项超过一个字符时)。这样,”-”有点象DOS下的”/”。举个例子,输入命令 rm --help。
11. 输入command& (命令名后面加&符号)在背景模式下运行一个命令。这个一般用来在X窗口下启动其他的程序。
5.1 Linux基本的键盘输入快捷键和一些常用命令
切换到第一个文本终端。在Linux下你可以有多达六个不同的终端。这个命令的意思是:“同时按住键和键,然后按键,再释放所有的键”。
(n=1..6)
切换到第n个文本终端。(你也可以使用不是很经常用到的命令chvt n 来实现,n指的是第n个文本终端)。在文本终端下(不是在X窗口),你也可以简单使用来实现切换,不需要键。
打印出你正在使用的终端名称,如果你希望知道终端的名字,可以使用命令fgconsole。
切换到第一个图形用户界面(一般来说X-window在第七个终端)
(n=7到12)
切换到第n个图形用户街面。根据缺省,第一个X-Window在第7个终端运行,从第8到第12什么也没有,当然你可以逐个启动这些图形用户界面。
(在文本终端下)可以使用TAB自动完成命令,或者显示所有的可选项。这个快捷键真的非常好用,经常使用你会发觉它可以节约你很多的时间。
(在文本终端或者X窗口下)滚动和编辑以前输入的命令。按执行一个历史命令
回滚
滚动终端输出。对于登录提示也起作用,所以你可以使用它回滚启动信息。你显卡的内存大小决定你可以回滚多少内容
回滚终端输出
(在X窗口下) 改变X服务器的屏幕解析率 (如果你设置X服务器有多个不同的屏幕解析率)。比如对于我的标准SVGA卡和显示器,在文件/etc/X11/XF86Config有以下的设置行: (从缺省开始,到可以支持的最大虚拟屏幕解析率)
Modes "1024x768" "800x600" "640x480" "512x384" "480x300" "400x300" "1152x864"Z
当然,首先我必须设置我的X服务器,可以使用using Xconfigurator, xf86config, 也可以手工编辑文件:/etc/X11/XF86Config。XFdrake (Mandrake使用图形用户界面进行配置 )。你也可以参考命令xvidtune和xvidgen。
(在X窗口下)把X服务器的屏幕解析率修改到上一次的设置。
(在X窗口,KDE下)关闭我鼠标将要指向的窗口(鼠标的光标形状会有所改变)。同样的效果也可以使用命令xkill(在X终端上)来实现。当一个程序窗口被挂住的时候特别有用。
(在X窗口下) 终止当前的 X窗口服务。如果X窗口不能正常退出时可以使用。
(适用于文本终端下)关机和重新启动。这是一个在文本终端下的正常关机命令,千万不要按计算机上的reset键来重新关机和重新启动!
c
终止当前进程(对于一般的小型文本模式的应用程序)
d
(在一个空白的命令行上输入)退出当前的终端。参加下一个命令。
d
给当前的进程送文件结束符合。不要按两次否则你会把自己退出系统。
s
停止终端传输
q
从新开始终端传输。如果你的终端突然莫名其妙的停止响应,可以参考上一条命令。
z
把当前进程送到后台处理。
exit
退出系统。我也可以使用logout命令达到同样效果。(如果你启动了第二个shell程序,比如,使用bash,这条命令将使你退出第二个shell回到第一个shell,但是不会退出系统。当然,可以再一次使用exit退出)
reset
恢复崩溃的终端(有些终端显示一些奇怪的字符)到缺省的设置。当你使用cat命令准备显示一个二进制文件时,你可能看不到你所输入的命令,尽管命令仍然照常工作。
粘贴当前选择的文本。这是一个常规的Linux“复制-粘贴”操作。它是对被广泛采用的通信用户界面下“复制-粘贴”操作的一个非常有用的扩展(但是它不支持旧版本的NetScape,因为在旧版的NetScape只能使用MAC/Windows风格的“复制-粘贴”操作。如果你运行“setup”程序进行设置,你可以在文本终端下使用这个功能。而且它在大多数的对话框里也能很好的工作,真的非常方便!)如果你有一个“Linux-Ready”的鼠标(logitec或者其类似产品)或者你通过使用“模拟三键鼠标”,这个功能可以得到最大限度的发挥。一般来说,“第三键”的模拟是通过同时点击左右两个鼠标键来实现。
~
(水文符合) 我的主目录(一般来书是/home/我的登录名)。举例,命令~/my_dir将修改我的工作目录到我的主目录的子目录”my_dir”下。相对于输入”cd ~”,你也可以只输入”cd”,我把我的所有文件都放在自己的主目录下。
.
(点符号) 当前目录。举例:./my_program 将试图执行当前目录下的"my_program"文件
..
(两个点)到当前的上一级目录(也叫“父目录”)。举个例子,命令“cd..”将修改我的当前工作目录到上一级目录。
一些KDE的快捷键(很有用,但不是非要不可的)
切换不同的程序窗口。往回切换,使用
切换不同的桌面。往回切换,使用
显示我系统里正在运行的进程列表。允许我终止那些由我启动的进程(或者送信号给这些进程)
访问K菜单 (对等于微软Windows的的“开始”菜单).
使用键盘上的箭号键模拟鼠标的操作
拖曳并移动一个窗口。一般来说,我通过拖曳窗口的题目栏来移动一个窗口。有些时候,我用它把
一个窗口移动到屏幕之外。使用这个功能,我可以把窗口移动到屏幕的任何位置。
把当前屏幕的快照存到剪贴板
把当前桌面的快照存到剪贴板
锁定桌面
切换隐藏/显示桌面的功能(当老板走过来的时候迅速藏起你的纸牌接龙游戏非常管用哦!)
(非必须掌握)
这是在Linux的内核(底层内核)上支持的一组组合键。它意味着这些组合键在大部分情况下都是有效的。组合键主要是针对开发人员的程序调试目的或者在紧急场合下才使用;你也可以使用其他的办法,安全第一。键在PC上指的是PrintScreen键。组合键的功能可以通过设置相对应的内核参数来激活或者取消,比如: echo "1" > /proc/sys/kernel/sysrq
终止在当前虚拟终端上运行的所有进程(包括X窗口)。这个组合键被称为“安全访问键“(SAK).
发送 TERM 信号(结束信号)到除了init进程以外的所有运行进程,要求其退出
发送 KILL (终止信号)到除了init进程以外的所有运行进程, 这个组合键比上一个更加有效,但是也可能引起一些程序被异常终止。发送KILL命令到所有运行进程(包括init),系统将不再能够使用在所有的挂载文件系统上运行紧急同步(缓存写) 。这可以保护数据丢失以只读模式重新挂载所有已加载的文件系统。这和上面的同步组合键有相同的功能,但是另外有一个好处:如果操作顺利完成,下一次硬件重新启动时,fsck将不会重新检查所有的文件系统。关闭键盘的原始模式。当你的X窗口程序挂住没有响应时特别有用。使用这个组合键之后,你可能会接着使用程序启动。不进行同步和卸载就立刻重新启动系统。之后你可能会碰到一下错误信息。关机 (如果正确设置以后)导出当前的寄存器和标志到控制台导出当前任务和相关信息到控制台导出内存的内容到控制台SysRq>“数字”从0到9。设置控制台记录的级别,用于控制哪一些内核信息将被显示在控制台上。举例,“0”意味着只有象PANIC和OOPS的之类的紧急信息才被显示在控制台上。显示帮助信息。还有,任何其他不被支持的 组合键将显示同样的帮助。5.2 帮助命令命令名 –help | more显示一个简略的命令帮助(对大部分命令有效)。举个例子,试着使用 “cp –help | more”。“--help”和和DOS下的“/h”开关功能类似。当输出超过一个屏幕时,加上“more”是很有必要的。man 命令名显示对应命令系统的帮助手册。输入“q”退出浏览器。如果你设置了高级选项,试着输入“man man”。命令“info 命令名” 和命令“man 命令名”功能相似,但是包含更多的最新信息。帮助手册对于新手可能有点难于读懂——因为它们最初是写来给UNIX程序员看的。使用“命令名 –help”可以得到一个简略容易消化的命令帮助。有些程序自带README文件或者其他帮助信息文件----建议你可以看看目录/usr/share/doc。在指定的部分显示命令帮助,可以使用这样的命令“man 3 exit”,这个命令只显示exit命令帮助手册的“第三部分”;或者使用命令“man –a exit”, 这个命令显示exit命令帮助手册的“所有部分”。exit命令帮助的所有部分是: 1-用户命令;2-系统调用;3-子调用;4-设备;5-文件格式;6-游戏;7-杂项;8-系统管理;9-新内容。打印完整的命令帮助,可以使用命令“man 命令名 | col -b | lpr”(可选项col –b删除所有的退格键和一些难以阅读的特殊字符)。info 命令名显示指定命令的帮助信息。info 命令是取代man 命令的一个好处是,它通常带有最近更新的系统资料。多使用“空格键”和“退格键”,否则你可能会晕头转向。按“q”键退出。如果觉得用于翻阅的办法不太好用――你也可以试着使用pinfo命令,看你会不会更喜欢这个替代品。apropos 命令名对所输入的命令名给出一个帮助一览表。whatis 命令名给出匹配所输入命令名的简短清单。whatis命令有点象apropos――它们使用相同的数据库。不同的是,whatis搜索的是关键字,apropos搜索的是关键字的具体描述。help 命令名显示bash shell内置命令的简单信息。使用 help 命令不带任何参数将显示bash shell所有内置的命令。最短的bash shell内置命令应该包括:alias, bg, cd, echo, exit, export, help, history, jobs, kill, logout, pwd, set, source, ulimit, umask, unalias, unset.kdehelpkdehelpcenter(在X-终端下有效, 使用在你的系统上可以工作的那一个命令). 使用图形的浏览器显示整个系统的帮助。一般来说,KDE帮助通过把对应的图标放在KDE控制板上来实现。对等的GNOME帮助系统可以使用gnome-help-browser命令。5.3 系统信息pwd输出工作目录。举例,在屏幕上显示我当前所在的目录hostname输出本地主机的名称(我正在使用的这一台机器)。使用netconf修改机器的名称(要求超级用户权限)whoami输出我的登录名称id username输出用户标识ID(UID)和其对应的用户组标识ID(GID),有效的ID(如果不同于真正的用户ID)和所属的其他用户组date输出操作系统的当前日期,时间和时区。如果要以ISO标准格式输出,我必须使用命令“date –Iseconds”。我可以修改当前的日期和时间到2003-12-31 23:57,使用命令:date 123123572003。或者使用两个命令(比较容易理解和记住):date –-set 2003-12-31date –set 23:57:00如果要重新设置硬件时钟(BIOS),可以使用命令setclock,要求超级用户权限。time侦测一个进程所需要的时间加上其他处理的时间的总和。不要和上面提到的date命令混淆。比如,我可以使用命令“time ls”来判断显示一个目录需要多长时间;或者我可以使用命令“time sleep 10”来测试time命令(睡眠10秒钟,什么也不做)。clock(两个命令中的一个)从计算机的硬件(由电池供应的实时的硬件时钟)获得日期/时间。你可以使用这个命令来设置硬件时钟,但是setclock可能简单一些(看前面的两个命令)。举例:“hwclock –systohc –utc”命令把系统时钟设置到硬件时钟(以UTC格式)。who显示登录在系统里的用户w显示登录在系统里的用户,检查他们正在做什么以及他们的处理器使用状况。属于常用的安全方面的命令。rwho -a(=remote who,远端的who命令)。显示网络里其他计算机的用户登录状况。这个命令要求rwho服务必须在远端机器上运行。如果没有,以root用户运行setup(RedHat特有)激活“rwho”。finger 用户名显示对于一个用户的系统信息。可以试一下命令:finger root。任何人都可以使用finger命令访问任何一台连接到因特网提供finger服务的计算机。比如:finger @finger.kernel.orglast显示最后一个登录到系统的用户。经常运行这个命令作为系统安全检测的手段之一是一个绝好的主意。lastb(“=last bad”,最后一个坏的)显示最后一个不成功的登录尝试。但是这个命令在我的系统上不能工作,所以你可能要使用:touch /var/log/btmp“/var/log/btmp在一般的系统安装里无效的主要原因是因为:它是一个包含登录的出错信息的完全可读的文件。一个用户登录时最经常犯的错误是输入用户密码作为用户名,这样,文件/var/log/btmp对计算机黑客来说简直是一个礼物”。(谢谢Bruce Richardson提供这个信息)。如果要解决这个问题,修改该文件的文件访问权限为只有root用户才可以使用命令“lastb”。命令:“chmod o-r /var/log/btmp”history | more显示当前用户在命令行模式下执行的最后(1000个)命令。参数“|more”在输出满屏时暂停。如果要检查其他用户在你系统上都运行了什么,以root用户登录,检查在该用户主目录下的文件“.bash_history”(没错,该文件可以被修改和删除)。uptime显示自从上一次启动到现在机器运行的总时间。ps(= “print status”或者 “process status”,打印状态或者处理状态)列出由当前用户运行的进程一览。ps axu | more列出当前运行的所有进程,包括那些不是来自控制终端的进程,在显示用户进程的同时显示用户名。top持续列出正在运行的所有进程,按CPU的占用率排序(占用率高的排在最前面)。按C退出。PID = 用户标识USER = 启动或者拥有该进程的用户.PRI = 进程的优先级别(值越大,优先级别越低,一般进程是0,最高的级别是-20,最低的级别是20。NI = 优化级别(比如,进程试图以预先给定的优先级别的数值来运行)。数值越高,进程的优化级别也越高(优先级别越低)SIZE = 进程加载到内存的代码+数据+堆栈的字节总数(以千字节计算)RSS = 物理内存被占用的大小(以千字节计算)SHARE = 和其他进程共享的内存(以千字节计算)STAT = 进程的当前状态 S-睡眠, R-运行,T-停止或者被跟踪,D-不可中断的睡眠,Z-不死的进程%CPU = CPU占用虑百分比(自从上一次屏幕更新以来)%MEM = 共享物理内存的占用率TIME = 进程占用的CPU时间 (自从进程启动以来)COMMAND=启动该任务使用的命令行(小心命令行里出现的密码等信息,有权限运行top命令的用户都可以看见它们!)gtopktop(X终端)在图形用户界面下的两个top功能。我比较习惯使用gtop(在gnome自带)。在KDE环境下,ktop在K菜单的“System”菜单下的“Task Manager”里。uname –a(=“Unix Name”带可选项“all”)显示你本地计算机信息。也可以使用通信用户界面的guname(X终端下)得到更好的信息显示。XFree86 –version显示本地计算机的X-Windows的版本。cat /etc/issue检查你的发行版本。你也可以把你自己的信息放到文件/etc/issue里――在用户登录的时候会显示。如果你想要显示更多的信息,还有一个比较常见的做法是把本地专有的登录信息内容放在文件/etc/motd里 (“motd”=“message of the day”,当天信息)free内存的信息(以千字节显示)。“共享”内存是指可以被多个进程共同享有的内存(比如,可执行代码是“共享”的)。“缓冲”和“缓存”则是用来保留最近访问的文件和数据――当其他进程需要更多的内存时候这些内容可以被减缩。df -h(=disk free 硬盘剩余空间) 输出所有文件系统的硬盘信息(以易读的模式, h-human readable, 人类可读)du /-bh | more(=disk usuage, 硬盘使用状况)输出根目录“/”下每个子目录具体的硬盘使用状况cat /proc/cpuinfoCPU信息――它显示文件cpuinfo的内容。要注意的是文件在/proc目录下不是真正的文件――它们只是在观察内核信息时起连接的作用。cat /proc/interrupts显示正在使用的中断号。在配置一个新硬件的时候可能需要浏览一下。cat /proc/versionLinux的版本和其他信息cat /proc/filesystems显示当前使用的文件系统的类型cat /etc/printcap |more显示打印机的设置lsmod(= "list modules". 显示模块。必须是root用户,如果不是,使用命令/sbin/lsmod执行)显示当前已经加载的内核模块 .set|more显示当前的用户环境(全部显示)。一般来说东西太多了。echo $PATH显示环境变量“PATH”的内容。这个命令也可以用来显示其他的环境变量。使用set来察看所有的环境变量(和前一个命令功能相同)dmesg | less输出内核信息(也就是常说的内核内部缓存信息)。按“q”退出“less”。也可以使用 “less /var/log/dmesg”来直接检查最近一次系统启动时“dmesg”输出到文件里的内容。chage -l my_login_name查看我的密码过期信息quota查看我的硬盘区间(硬盘使用的限制)sysctl -a |more显示所有可设置的Linux内核参数runlevel输出和前一个和当前的运行级别(runlevel)。输出“N5”意味着:“没有前一个运行级别”和“5是当前的运行级别”。要修改运行级别,使用“init”,举例:“init 1”把当前的运行级别切换到“单用户模式”。运行级别是Linux的操作模式。运行级别可以使用init命令进行快捷的修改。举例,“init 3”将把模式切换到运行级别3,以下是运行级别的标准:0-中断 (不要把系统初始设置“initdeafult”设成这个值)1-单用户模式2-多用户模式,不带NFS(如果你没有网络,和运行级别3相同)3-全功能多用户模式4-目前没有使用5-X11 (图形用户界面)6-重新启动(不要把系统初始设置“initdeafult”设成这个值)系统的初始运行级别设置在文件:/etc/inittab里sar查看抽取系统活动记录文件信息(/var/log/sarxx, 其中xx指的是当前的日期)。sar可以抽取很多种系统统计信息,包括CPU的平均载荷,i/o的统计,当天的网络流量统计或者是几天以前的数据。5.4 基本操作lsdir列出当前目录的内容。dir命令是ls命令的一个别名,所以这两个命令在文件罗列时使用的颜色代码是绝对一致的:深蓝色=目录浅灰色=一般文件绿色=可执行文件紫色=图形文件红色=压缩文件浅蓝色=链接文件黄色=设备文件棕色=FIFO文件(先进先出,命令管道)ls -al |more列出当前目录的内容,所有文件(包括那些以“点号”开头的隐含文件),并以“长格式”显示。把所有输出定向到管道more,在屏幕满屏时可以暂停。ls命令还有很多其他的非常有用的可选项。还有一些快捷键可以减少麻烦的命令输入。试试ll(=长格式罗列,相当于ls –l)。另外一个我经常使用的可选项是“ls –ad”(列出所有当前目录下的子目录但是不输出它们的内容)。cd 目录修改当前目录。只输入“cd”没有指定目录名将切换到你的主目录。“cd –”将切换到上一次你访问的目录,这个命令在两个不同的目录之间切换时非常方便。“cd ..”将退到当前目录的上一级目录(父目录)。./程序名在当前目录下运行一个可执行程序。当可执行文件不在我的PATH下时,“./”是必须的。一个在我的PATH下的可执行文件可以简单的输入程序名运行而不需要“./”。shutdown -h now(要求root用户)关机。一般用于在远程关闭计算机。在控制台上可以使用来关闭计算机(所有用户都可以)haltrebootinit 6(三个命令都要求root用户)关机或者重新启动计算机。主要用于远程系统重新启动,比上面的命令要简单一些。如果计算机停止响应时非常有用,我一般通过网络从其他机器telnet到停止响应的计算机上然后重新启动它。在本地计算机上,我则一般使用来重新启动。vlock(旧版本的RedHat没有这个功能)锁住当前的文本终端。也可以使用vlock –a锁住所有的终端(可能不是什么好主意)。最好的做法一般是使用logout命令退出系统。你不能在图形用户界面的终端上使用vlock命令――因为窗口管理器自带一个屏幕保护程序和一个加锁的工具(在KDE下一个小的锁型标志,键盘快捷键)。5.5 文件管理cp source destination复制源文件source 到目标文件destination。举例“cp /home/stan/existing_file_name .”将复制文件到我的当前工作目录。使用“-R”可选项(代表“recursive”)复制整个目录树的内容,比如:“cp -R my_existing_dir/ ~”将复制我当前工作目录的一个子目录到我的主目录里。mcopy source destination从DOS文件系统复制一个文件或者复制一个文件到DOS的文件系统里(不需要挂载DOS文件系统)。举例:“mcopy a:autoexec.~/junk”。查看“man mtools”了解更多的相关命令,可以不需要挂载DOS文件系统就可以直接访问DOS文件,比如命令:mdir, mcd, mren, mmove, mmd, mrd, mformat ...我们不是很经常使用mtool的命令是因为――通常可以把DOS/MS Windows的文件系统挂载到Linux里,然后用Linux的常规命令来访问这些文件。mv source destination移动文件和更改文件名。对于文件和目录的移动和改名都可以使用这个命令。rename 字符串 更新字符串 文件名很好用的文件名修改工具。举例:“rename .htm .html *.htm”把所有的以“htm”为扩展名的文件名里的“htm”全部换成“html”。ln source destination从叫做source的源文件创建一个叫做destination的目标文件的“硬链接”。这个文件看起来好像是一个源文件的复制文件,但是实际上只保留了一个文件的硬拷贝,只是两个(或者多个)目录的入口指到同一个文件上。任何对这个文件所作的修改在所有地方都可以看得见。当一个目录得入口删除后,其他得目录得入口保持不变。“硬链接”的局限性是:文件必须在同一个文件系统里,创建目录或者一些特殊文件的硬链接是不可能的。ln -s source destination从叫做source的源文件创建一个叫做destination的目标文件的“标志链接”(软链接)。“标志链接”只是指定到“真实文件”的访问路由。和“硬链接”相比较,它的好处是源文件和目标文件可以在不同的文件系统里。“标志链接”也有自己的不足之处:如果“真实文件”被移动或者删除,“链接”就被破坏――不知道路径指到什么地方;“软链接”可以产生“循环参照” (就象数据库或者电子表格,举例:a指向b,b指向c,c指向a)。简而言之,标志链接非常有用而且也很常用(比“硬链接”要常用得多),但是同时可能带来一些文件管理的复杂性。rm files删除文件。你必须是拥有这些文件才能够删除它们(或者是root用户)。在很多系统里,你将会被提问是否确认删除文件。如果你不想被提问,使用“-f”(=force,强制删除)参数。举例:rm –f * 将删除所有当前工作目录下的所有文件,而且没有任何确认提示。mkdir directory创建新目录。rmdir directory删除一个空目录rm -r files删除文件,目录和所有它们的子目录。作为root用户,要小心使用这个命令――如果你在顶级目录树上执行这条命令,你将删除系统里所有的文件,到目前为止在Linux里还没有“取消删除”的命令。如果你真的想要这么做(再仔细想想?),这里告诉你该怎么办:使用命令 ”rm –rf /*”。rm -rf files(强制)删除文件,目录和所有它们的子目录如上所述,但是跳过确认信息提示。如果你是root用户,绝对要小心使用这个命令。mc激活“Midnight Commander”文件管理器(看起来有点象Linux下的Norton Commander)。根据一些恐龙级的计算机用户的反映,这是至今为止最好的文件管理器。konqueror &(在X终端下)激活KDE文件管理器。也许这是文件管理器的极品。比微软的文件浏览器要好得多。它集成了网页浏览,PDF文件阅读和其他功能。真的很酷!xwc(在X终端下)另外一个很出色的文件管理器,是X-Win-Commander的缩写。比Konqueror的速度快,但是功能上稍微逊色。nautilus &(在X终端下)一个真正很酷的文件管理器。比Konqueror要慢,但是提供了一些有用的功能――比如图标提供文件内容预览!它甚至可以预览声音文件!但是对CPU速度依赖较大,它在我的1.33GHZ的计算机上运行出色,但是我从来不在我的133MHZ的老机器上使用它。5.6 查看和编辑文件cat filename | more这个命令用于查看一个被称为 "filename"的文本文件的内容,每次一页. "|"符号是"pipe" 符号(在很多美式键盘里, 它与""共用一个键). more 使文本内容的输出显示停止在每一屏.对于长文件,有时可以很方便地使用head 和tail 来显示文件的开始和结尾部分或用less 使之能上下滚动. 如果你恰巧使用 cat显示一个二进制文件,你的终端随后显示古怪的字符, 你能使用reset命令恢复它.cat filename | lessless filename(选用二条命令之一) 滚动一个文本文件的内容.退出按q . "less" 大致相当于 "more" , 该命令来自 DOS,但经常 "less"比 "more"更方便因为它可使我能使用滚动条上下滚动.head filename显示长文本文件的前10行.tail filename显示长文本文件的最后10行. 使用tail -f filename让文件的末尾持续读取该文件的不断出现的数据.pico filename使用简单,标准的文本编辑器pico来编辑一个文本文件. 使用 x推出. Linux有很多文本编辑器, 包括几个基于图形用户界面的编辑器. 一个新的 pico 克隆版(GPLed) 是 nano.pico -w filename编辑文本文件, 没有文本行长度的限制.对于编辑配置文件很方便, 如. /etc/fstab.kwrite(在X终端) 很不错, "高级文本编辑器". 支持垂直文本选择!katekeditgedit(在X终端).简单但很好的文本编辑器 (基于GUI).gxedit(在X终端)另一多用途,具特色的文本编辑器. 它甚至于能定时备份.latte(在X终端) "代码" 编辑器, 即, 用于写程序的无格式文本编辑器.nedit(在X终端) 另一种程序编辑器. 很好.bluefish(在X终端) html 编辑器 (源码的句法高亮标注, 有很多工具和选项).ispell filename一个 ASCII 文本文件的拼写检查命令. AbiWord, WordPerfect, StarOffice 和其它文本处理器都使用键入就检查的策略,所以除非需要,否则你不用担心简单的 ispell 命令. Linux 新版本 (如, RH7.0) 包含了功能增强的拼写检查模块, 称为 aspell,但上面的命令仍然工作.look thermo在你的系统单词目录(/usr/share/dict/words)中查寻开始于"thermo"的单词.wvHtml ms_word_document.doc > filename.html转化MS Word 文件到 html文件.5.7 查找文件find / -name "filename" 在你的文件系统中从根目录"/"开始搜索被称为"filename"的文件. "filename"文件名可以包含通配符(*,?).find命令功能强大.它有很多选项让你以不同的方式搜索文件.例如, 通过日期, 文件大小, 权限, 拥有者等等.但一些的搜索查询要花上几分钟编写. 查看info find. 这里是一些使用 find 来完成一些有用的任务的复杂例子.find $HOME -name core -exec rm -f {} ; 以上命令从你的$HOME目录开始寻找, 发现名字是 "core"的文件. 对于每一个这种被找到的文件,执行 "rm -f" (强制删除文件). {} 代表了已发现的文件, ""终止了该命令列表.find /dev -user "peter" |more 以上命令显示由用户 "peter"所拥有的所有设备的文件.显示文件名是 find命令的默认行为,所以如果这就是我所要做的,无须特别指定.find /home/peter -nouser -exec ls -l {} ; -ok chown peter.peter {} ; 在/home/peter目录下找到非有效拥有者的文件.以长格式列出文件.然后将这些文件的所有权改为用户"peter" 和 组 "peter". 要处理文件的所有权, 你可能必须是超级用户.locate filename 发现包含字符串"filename"的文件名.这比前面的命令更容易, 更快, 但基于数据库(通常在夜间重建),所以你无法找到刚刚存到文件系统的文件. 为了强制立即更新数据库, 作为超级用户可以使用: updatedb&.which executable_name 如果我在命令行键入可执行文件的名字, 显示该可执行文件的全路径.例如, 这条命令:which mozilla。我的系统出现:/usr/bin/mozillawhereis command 显示"command"命令的二进制文件, 源文件和手册的位置.rgrep -r 'celeste' . |moregrep -r 'celeste' . |more(二条命令, 在你的系统中选用一条).在当前目录和所有子目录中搜索含有字符串"celeste"所有文件(选项"-r"代表递归). 显示文件名和在文件中包含所寻找的字符串所在的行.kfind & (在X终端). 在一个GUI前端界面使用find and grep. 很不错. 命令行末尾的& 使find运行在后台以便使X终端保持可用状态。 5.8 X-windows基础 xinit & 启动基本的X-windows服务器(没有 windows管理器). "&"使命令运行在后台.startx & 启动X-windows服务器和默认windows管理器.就象在带有Win3.1的DOS下键入"win" .startx -- :1 & 在显示进程1中启动另一个X-windows(默认显示进程为0). 你能够同时运行几个 GUI 终端.在这些界面之间使用, 来转换.xterm (在X终端) 运行一个简单的 X-windows终端. 键入 exit将关闭它.对于Xwindows 有其它更高级的”虚拟”终端.我喜欢普遍使用的 konsole 和kvt (二者均来自 kde) 和gnome-terminal (来自 gnome). 如果你需要看起来更奇特的终端, 试试Eterm. 我还可以选择简单, 运行快的rxvt.startkdegnome-sessionxfceafterstepAnotherLevelfvwm2fvwm (在X终端, 7 条不同的命令, 使用其中之一来启动你喜欢的windows 管理器). 在X服务器上在一个X终端启动你喜欢的windows 管理器.5.9 网络应用程序mozilla &(在X终端下) 运行mozilla网页浏览器。现在的版本是Mozilla 1.01 (2002年10月),这个浏览器非常不错。Mozilla是Netscape的一个衍生品(在老的Linux系统上一般使用NetScape)。还有其他几个不错的替代品比如konqueror和galeon (在Linux的X终端上输入konqueror和galeon直接运行)mozilla –display host: 0.0 &(在X终端下)在当前的计算机上运行Mozilla如何把输出定向到叫做“host”的计算机的第0个显示器的第0个窗口屏幕。你当前的计算机必须有权限在 “host” 计算机显示内容(一般的做法是,在“host”计算机上的X终端输入命令“xhost [当前的计算机名]”。其他的X-Windows的程序也可以通过同样的办法来运行)。lynx file.html以纯文本方式来浏览html超文本文件。尽管lynx看起来不像基于图形用户界面的网页浏览器那么出色,但是它很小巧,几乎没有出差错的时候,也不需要什么特殊的设置,只要你的网络是正常的。konqueror &(在X终端下) 集成了文件管理器和网页浏览器的功能。很不错,和Mozilla的很多功能可以一比高低。KDE自带的软件。pine一个很不错,老古董的文本邮件阅读工具。还有另外一个老古董是elm。你的Mozilla将会阅读你因特网上的邮件,pine则让你阅读“本地”的邮件。比如,你儿子的邮件或者在你网络里的另外一台计算机的cron进程发送给你的信息。命令mail也可以用来阅读和写邮件,但是没有那么方便使用。mutt一个非常基本但是及其有用的快速邮件阅读工具。mail给email使用的一个基本的操作系统工具。如果你只是要阅读邮件,可以参考上面的快速email阅读命令。如果你要在shell脚本上发送邮件,mail倒是一个很好的选择。kmail &(在x终端下)很好的图形用户界面的邮件程序。我使用kmail,因为它比Netscape的mail做得要出色的多。我可以拥有多个电子邮件帐号,然后分别从本地的smtp服务器和ISP的pop3服务器上下载邮件到同一个收件箱。简单易用,支持数字签名。licq &(在x终端下)一个ICQ的客户端程序。还有另外一个不错的选择是kxicq。就的Linux发行版本不带licq客户端程序,你可能需要自己下载安装。knode &(在x终端下)启动我喜欢的新闻组阅读器(usenet)。比Netscape内置的阅读器要好。talk username1和另外一个登录在系统里的用户交谈(也可以使用“talk username1@machine_name”来和另外一台计算机上的用户交谈)。要接受会谈请求,输入命令“talk username2”。如果你正在忙着而有人想要和你交谈,你可以使用命令“mesg n”拒绝接受信息。你可以使用命令who或者rwho来查看有哪些用户当前登录在系统里。talk是一个老古董的UNIX标准工具,在某些场合下仍然非常有用。telnet server使用telnet协议连接到另外一台计算机。可以使用计算机名或者IP地址。你会要求输入用户登录名和密码――你必须在远端计算机上有有效的用户帐号和密码。telnet将让你连接到另外一台计算机上好像你就在使用那一台计算机的键盘(几乎完全一样)。telnet不是非常安全――你输入的任何东西在网络上都是开放的文本模式,包括你的密码!一个在“传输路径”上稍微有点专业知识的系统管理员就可以阅读你所输入的内容。如果你要加密的传输,使用ssh(需要一些系统设置)。rlogin server(=remote login,远程登录)。这将使用你在当前登录系统上使用的用户名和密码,如果登录失败将会提醒你输入密码。rsh server(=remote server) 连接到远程计算机的另外一个办法。这将使用你在当前登录系统上使用的用户名和密码,如果登录失败将会提醒你输入密码。ssh servername –l username(=secure shell,安全的shell)使用安全连接远处登录到另外一台计算机。ssh是安全的,因为它使用一对RSA“公共-私有”钥匙压缩所有传送的数据。如果你没有指定用户名,它假设你使用当前的用户名。ftp serverftp到另外一台计算机(还有一个ncftp带有一些附加的功能,另外还有基于图形用户界面的gftp)。ftp对于从一台计算机上复制文件到另外一台计算机上非常有用。可以试着用“anonymous”(匿名)用户如果你在远程计算机上没有有效帐号。建立连接之后,使用“?”查询有效的ftp命令一览。最基本的ftp命令有以下这些:ls 查看远程计算机上的文件ASCII, binary 设置文件传输模式为“文本模式”或者“二进制模式”,选择正确的模式非常重要get 从远程计算机上复制一个文件到本地计算机mget 从远程计算机上复制多个文件到本地计算机put 从本地计算机上复制一个文件到远端计算机mput 从本地计算机上复制多个文件到远端计算机bye 结束连接如果你要使用脚本文件实现自动化,你可以考虑ncftpput和ncftpget,举例:ncftpput –u my_user_name –p password –a remote.host.domain.remote_dir *local.html如果你的计算机在防火墙后面,ncftpput可能会有一些问题-你需要配置文件 /home/user_name/.ncftp/firewall。另外一个选择,你也可以使用lftp来达到同样目的:lftp –e “mput –a *local.html” –u my_username, my_password 如果要保留ftp目录的镜像,可以使用命令fmirror:wget -m --no-parent 从网站上复制文件。以上这个例子使用可选项-m(mirror,镜像)从主站上获得完整的文件集合。可选项“--no-parent”限制搜索子目录里的文件。minicomminicom是一个专门给串行口设计的“终端模拟器”。看起来和用起来都很象“procomm”或者“telix”。对于串行口通信的故障诊断非常有用。rx使用Zmodem,Ymodem和Xmodem协议接收文件。Xmodem需要文件名。输入rx –help得到更多的信息。现在还有谁在使用这些协议?5.10 文件压缩和解压缩tar -zxvf filename.tar.gz(=tape archiver,磁带压缩) 解压一个你从因特网上下载的tarball文件 (*.tar.gz or *.tgz)。tar -xvf filename.tar拆解一个tarred(但是没有压缩)的文件。tar czvpf /var/backups/mybackup.tar.gz /homecd /; tar xzvpf /var/backups/mybackup.tar.gz '*/myfile.rtf'作为root用户,创建一个/home目录的备份压缩文件。第二条命令显示如何从备份恢复一个文件。在tarball文件里将不包含“点”文件(指的是以“ .”开头的文件或者目录)。要把所有文件解包,可以使用:tar cvzf filename.tgz * .[a-aA-Z]*gunzip filename.gz解压一个压缩文件(*.gz或者*.z)。如果你想把文件压缩成这种格式,可以使用 gzip(还有zip或者compress命令)。注意一下gunzip有趣的发音听起来象“gun zip”(大炮压缩)。zcat filename.gz | more(=zip cat)显示一个压缩文件的内容。还有其他一些相关命令不需要预先解开压缩文件就可以使用:zless, zmore, zgrep…等等。bunzip2 filename.bz2(=big unzip)解压一个由bzip2压缩工具压缩的文件(*.bz2)。一般用于很大的文件。unzip filename.zip解压一个由DOS下的PKZIP压缩工具压缩的文件(*.zip)zip filename.zip filename1 filename2把两个文件“filename1”和“filename2”压缩到一个压缩文件叫做 “filename.zip”。unarj e filename.arj解压一个使用arj压缩的文件(*.arj)lha e filename.lha解压一个使用lha压缩的文件(*.lha)uudecode -o outputfile filename解码一个使用uuencode的文件。uu-encoded在使用email传送非纯文本文件的时候应用非常广泛(uuencoded把任何文件格式都变成文本文件)cat filename | mimencode -o filename.mimecat filename.mime | mimencode -u -o filname(两个命令)第一个命令把文件filename编码成基于因特网邮件7bit数据传送标准的文件filename.mime。第二个命令把基于因特网邮件7bit数据传送标准的文件filename.mime解码成一般文件filename。ar -x my_archive.a file1 file2(=压缩存档)。从压缩文件my_archive.a解压出文件file1和file2。ar压缩工具更多的用于保存文件库记录。ark &(在X终端下)。一个图形用户界面的压缩工具。也许是你管理压缩文件所需要的方便工具。还有另外一个选择是gnozip。5.11 进程控制ps(=“print status”or “process status”)列表显示当前正在运行的进程的进程标识号(PID)。用ps aux查看你的系统上下在运行的所有进程(也包括其他用户的进程和没有终端控制的进程),每个进程都显示其所有者的名字。使用“top”命令持续显示当前正在运行的进程列表。any_command &在后台运行任务命令(符号“&”表示“在后台运行前面的命令”)。任务号(Job_number)(译者注:和进程号)将显示在屏幕上,你可以使用任务号将该任务调到前台(见下面)。当我从一个X终端启动一个GUI程序时,我经常使用“&”。jobs列表显示后台运行或是被停止了的进程并显示它们的任务号。fg job_number将一个后台运行的或是被停止了的进程调到前台运行bg job_number将一个进程调至后台运行,这与在命令行用“&”启动后台进程是完全一样的。这将重新启动一个被停止了的后台进程。一般可以用z来停止当前的前台进程。如果你有被停止的或后台运行的任务,你必须在命行输入exit命令两次,以从系统中注销。batchat>updatedbd在系统负荷低的时候执行任何命令(经常昌需要长时间完成的任务)。你可以从系统中注销,但进程将继续运行。当命令完成后,一封包含输出信息的电子邮件将发送给你。在以上示例中,“at>”是一个提示符,将要执行的命令是updatedb,然后按来结束命令的输入(你可以输入很多命令提交执行,用来分隔它们)。at 17:00在指定时间执行命令。你将被提示输入要执行的命令,直到你按d。相关的命令有atq(显示由at启动的进程队列)和(从“at 队列”中删除一个进程)kill PID强制一个进程终止。首先要用ps确定终止的进程的进程标识号(PID)。killall program_name通过程序名终止一个(组)程序。例如:killall pppd将断开你的拨号网络。Nohup program_name(=no hangup)。运行程序program_name,并使它在你注销时不被中断。输出结果被重定向到你的用户的主目录下的nohup.out文件。在你确信不想运行一个交互程序的时候,使用nohup。Xkill(在X终端中)用鼠标终止一个基于GUI的程序。(用你的鼠标指到你要终止的进程的窗口并点击)kpm(在X终端中)KDE进程管理程序lpc(由root用户执行)检查和控制打印机。输入“?”可以查看命令列表。lpq显示打印机队列的内容。在你可从“K”菜单-实用程序(“K”menu-Utilities)中调用基于GUI的“打印机队列”(“Printer Queue”)lprm job_number从打印队列中删除一个打印任务。nice program_name执行一个程序并调整及优先级。因为在本例中没有指定优先级,将从缺省优先级(通常是0)增加10(进程将运行较慢)。较小的值,代表较高的优先级。优先级的取值范围为-20到19。只有root用户能指定负值。用top可显示正在运行的进程的优先级。renice –18 PID(以root用户运行)将一个正在运行的进行的优先级调整为-18。普通用户只能调整他们自己的进程,而且只能从当前值向上调(即使其运行变慢)。可以使用renice +10 –u peter来减少用户peter对CPU资源的占用,这样当他运行高强度运算任务时,使其他用户不受到损害。c,z,s和q也属于本章内容,但它们在前面已经描述过了。简单地说,它们表示停止当前命令,调度当前命令到后台运行,停止数据传输,恢复数据传输。lsof列表显示已经打开的文件。如果你是root用户,所有的打开的文件都将被显示。使用lsof /dev/tty1你可以指定显示由第一控制台所有的进程打开的所有文件。要想只显示网络文件(对安全审计非常有用),你可以使用lsof –I(以root用户执行)。Watch –n 60 my_command以60秒为间隔反复执行my_command命令(缺省间隔为2秒)5.12 一些管理命令su(=substitute user id)采用超级用户(=root)的身份(将提示你输入口令)。输入“exit”返回你先前的注册。不要习惯于用身份在你的机器上工作。root帐户是用于管理的,当你需要访问管理帐户时,su命令可以使你轻松进入。你也可以使用su命令去采用其他任何用户的身份,例如:su barbara将你变成“barbara”(除非你是超级用户,否则需要口令)。Alias ls=”ls –color=tty”为命令产生一个别名,用增加一个关于颜色的格式。在这个例子中,别名也叫“ls”,只有当输出被指向一个终端(而不是文件)时,color选项才被执行。如果你想让系统上的所有用户始终能使用这个别名,就把它写到/etc/bashrc文件中。别名是定制你的系统的一种方便的方法。只输入“alias”可以查看你的帐户可使用的别名的列表。使用unalias alias_name可以删除一个别名。cat /var/log/httpd/access_log显示自从上次日志文件被“转动”(一般每天在cron程序运行时转动一次)后,谁连接过你的http(apache)服务器。前一次的日志文件为access_log.1,再前一次的日志文件access_log.2,依此类推。cat /var/log/secure(以root用户运行)检查重要系统日志。如果你使用Internet访问的话,定时检查的一个很好的主意。ftpwho(以root用户运行)检查当前谁连接在你的ftp服务器。printtool(在X终端上以root用户运行)打印机配置工具。设置文件存放在/etc/printcap和/var/spool/lpd目录下。setup(以root用户运行)配置鼠标、声卡、键盘、和系统服务。许多发行套装都有自己特定的配置实用程序,setup是Redhat的缺省配置程序。Mandrake 7.0提供非常好用的DrakConf。linuxconf(以root用户运行,在文本模式或是在X终端上)。在这里你可以访问和更改上百种网络设置。功能非常强大――一次不要改动太多东西,改动你所不清楚的项目时一定要小心。Redhat网络配置工具netconf是linuxconf的一个子集,因此它比较简单而且很多时候容易使用。mouseconf(以root用户运行)。一个配置鼠标的简单工具(在完成初始安装后)。Mandrake也有一个类似的工具mousedrake。kudzu(以root用户运行)。自动检测和配置硬件。如果你的鼠标(或是其他串行设备)有问题,你可能想要停用kudzu,这样它在系统启动过程中就不会运行(kudzu弄乱了我的系统,使我的鼠标不能工作)。你可以在你需要时手动运行它。timeconfig(以root用户运行)为你的系统设置时区。我的计算机的硬件时钟保存的时间是UTC(协调世界时,也称GMT或格林威治时间)。这样,我避免了任何在转换时区时(由夏时制、通过网络跨洲传送文件或是旅行外出引起的)可能发生的问题。时惯上在服务器上使用UTC时间来避免时间“倒流”(有时会引发一些问题)。文件的时间戳总是保持使用UTC时间,并使用时区信息来显示当地时间。例如,许多应用程序(如编译器,数据库)是依靠比较文件的时间戳来区分新的文件与旧的文件的。保证时区信息正确是很重要的。我将当地时间作为BIOS时间来避免发生问题的唯一原因是,当我的从一台计算机上进行双重启动,而其它操作系统(MS Windows?)不知道如何处理UTC。然后,我通过选择“Hardware clock set to GMT”来告诉Linux服务器,这Linux样在需要UTC时,可以计算出来。setclock(以root用户运行)。从当前linux系统时间设置计算机硬件时钟。首先,使用“date”命令设置Linux系统时间。例如,我可以将日期和时间改为2000-12-31-23:57,使用命令:date 123123572000然后将时间写到硬件时钟,使用命令:setclockdateconfig&(在X终端上,以root用户运行,否则将提示你输入root用户口令)。一个非常棒的GUI实用工具,用于设置操作系统时间、硬件时钟和时区信息,告之BIOS使用UTC时间,而不需要前面的两个命令。Xvidtune(在X终端上)调整所有分辩率下的显示器设置,以消除黑带,上下左右调整显示,等等。(首先使用显示器自身的调整按钮,使得文本模式在屏幕上正确显示)。然后用xvidtune针对每种分辩率调整显示频率,使其在屏幕上正确显示。为了使改动保持下去,在屏幕上显示频率,然后将它们传送到/etc/X11/XF86Config设置文件中。在较新型的显示器上,你可能更愿意使用显示器的内建设置来调整你的显示器,xvditune主要是给那些没有记忆设置参数的功能的老式显示器用的。Kvideogen(在X终端上)为定义你的屏幕分辩率产生“模式行”。在产生设置文本(“模式行”)后,你可以将其复制-粘贴到的设置文件/etc/X11/XF86Config中(或是/etc/X11/XF86Config-4,如果你使用X-sever 4.00版本)。另见快捷键。SVGATextMode 80x25x9SVGATextMode 80x29x9(以root用户运行)修改文本终端的文本分辩率。在示例中(第二行)我我将文本屏幕改为80列x29行,字符高度为9像素。第一行定义的是一个常用的分辩率,这样第二行命令在系统上不能工作,我能通过按两次(译者注:上箭头)和来重新控制屏幕。可以使用哪些模式取决于你的显示卡和你的显示器的刷新频率――需要编辑文件/etc/TextConfig(以root用户运行),去掉相应行前面的注释符,使SVGATextMode知道系统支持哪些模式。SuperProbe(以root用户运行)一个检测显示卡类型和内存数量的实用工具。cat /var/log/Xfree86.0.log一个对检测X-window设置过程中的错误非常有用的日志文件。文件名中的“0”表示“显示方式0”-如果你需要“显示方式1或2等”的日志文件,你需要相应地修改文件名。lspci显示主板信息和PCI扩展槽内都插了哪些卡。我的旧的计算机有ISA(或EISA)插槽,没有PCI。lsdev显示硬件信息(DMA,IRQ,IO端口)lsof|more显示系统上打开的文件。kernelcfg(在X终端上以root用户运行)增加、删除核心模块的GUI工具。每个模块就象一个设备驱动程序―Linux内核中支持一个设备或功能的一段程序。你在命令行使用insmod命令也可以完成同样的工作。lsmod(=list modules)显示当前加载的核心模块。一个模块就象一个设备驱动程序-它对一个硬件或一个特性提供操作系统核心支持。modprobe –l|more列出系统内核的所有可用模块。哪些模块可用是由如何编译Linux核心决定的。几乎每一种可能的模块特性都可以被编译到内核中,以“硬连接”(可能会快一点,但不能删除)或“模块”(可能会慢一点,但可以根据需要装载/删除),或“无“(根本不支持这个特性)等方式。系统核心所支持的模块(编译过的)都以文件的形式存在/lib/modules(及其子目录)下,当你丢失模块时,你可以流览这些目录,可以找到线索。如果系统核心不支持你所需要的模块,你可以启用该模块并重新编译系统核心(这是因为原装的核心都只包括常用的模块,没有预编译一些试验性的模块。还有,如果你有一些该死的边缘硬件…)。 modprobe sb装载soundblaster(sb)模块。使用前面的命令来查找已经加载的核心模块。insmod parportinsmod ppa(以root用户运行)向内核中插入模块(一个模块大致相当于一个DOS设备驱动程序)。平常,我用“modprobe”(见前面的命令)来插入模块 。这个例子展示如何为支持一个外置并口100MB ZIP驱动器来插入模块(好像在RH6.0和6.1下,外部ZIP驱动器以其他方式工作都会有问题)。对于250MB外置ZIP,可用imm模块来代替ppa模块。rmmod module_name(以root用户运行,但不是必须)从系统核删除module_name模块。depmod –a(以root用户运行)为核心建立模块依赖关系表。除非你想/etc/modules而不想重新启动系统,否则不必要。setserial /dev/cua0 port 0x03f8 irq 4(以root用户运行)将一个串行接口设置为非标准设置。这个例子显示第一个串口的标准设置(cua0或ttyS0)。第二个串口(cua1ttyS1)的PC标准设置为:端口地址0x02f8,中断3。第三个串口(cua2或ttyS2)为:0x03e8,中断4。第四个串口(cua3或ttyS3)为:0x02e8,中断3,。如果你要它们在启动时即被设置,将这些设置加到文件中。详见man setserial。Tunelp(以root用户运行,很少用到)调整并行端口。/sbin/chkconfig –level 123456 kudzu off(以root用户运行)用来检查/启用/禁用在各个运行级下自动启动的系统服务的工具。一般情况下,如果我需要在当前运行级下启用/禁用一个服务,我只用Redhat ntsysv实用程序,但chkconfig给了我更多的灵活性。另外一个可用的工具是(基于X界面)。这个例子展示如何禁用kudzu服务,使它在任何运行级都不启动(它弄乱了我的一台机器上的鼠标设置)。显示在所有运行级下启动/停止的服务,我使用:chkconfig –list|more检查服务的当前状态,我使用:service –status –all立即启动一个服务,我可以使用一些东西,像(启动一个ftp服务器):service su-ftpd start重新启动网络服务(如:在我修改了它的配置后),我可以用:service smb restartsymlinks –r –cds /(以root用户运行)检查和修改系统上的符号链接。从根开始,遍历所有的子目录(选项 –r=“rescuer”)修改绝对路径链接杂乱链接为相对链接,删除空悬链接,缩短超长链接(选项 -cds)。如果你的文件系统覆盖几个不同的硬盘分区,你需要为每个分区重新运行这个命令(如:symlinks –r –cds /usr)。cd /usr/src/linux-2.4.7-20make xconfig(在X终端上以root用户运行)一个漂亮的GUI前端工具,可在编译自定义内核的准备过程中配置内核选项。(例子中的目录名中包含我的的版本号,如果你的内核版本号不是本例中的,你需要修改你的目录名。你需要“Tk”解释器来地,并且安装了核心的源代码)。“make xconfig”的其他实现方法是“make config”(在文本模式下运行一个脚本,并回答一些问题)和“make menuconfig”(运行一个基于文本菜单驱动的配置工具)。更多信息;Less /usr/share/doc/HOWTO/Kernel-HOWTO在使用“”完成新内核的配置选择后,你要执行以下命令来编译新的内核;make clean(这是一个可选的命令;它清除旧的目标文件,它可能会延长编译过程,但在一些情况下它可以阻止一些问题的发生)make depmake bzImage最后的命令需要一些时间来完成(可能是10分钟或是2个小时,这取决于你的硬件)。它产生文件arch/386/boot/bzImage, 即是你的新内核。接下来:make modulesmake modules_install现在新内核安装在/lib/modules/KernelName如果你想运行多个内核的时候,不要改动模块目录的名字-内核必须能够找到与其匹配的模块。如果你想改变内核的名字,你必须编辑主内核makefile文件(如:/usr/src/linux-2.2.14/Makefile),修改最开始的几行。我的文件(缺省TH 7.2)是:VERSION = 2PATCHLEVEL = 4SUBLEVEL = 7EXTRAVERSION = -10custom可以用来显示当前运行的内核的名字。我的是。我“原装”的RedHat内核配置在/boot/config-2.4.28-24(RedHat 8.0)文件中,同时一些附加的“custom”内核设置在目录/usr/src/linux-x.x.x./configs中。我可以从命令的对话框中加载它们中的任何一部分。现在我能安装新内核。安装过程涉及到将新内核复制(同时改名)到目录中:cp arch/386/boot/bzImage /boot/vmlinuz-2.4.7-10customcp System.map /boot/System.map-2.4.7-10custom并修改/etc/lilo.conf或/boot/grub/grub.conf,这样在启动时我可以选择用哪一个内核(新的或旧的)引导。强烈建议保存旧内核做为一个引导的选项(万一新内核拒绝引导)。如果你使用initrd(initial ram disk)做两阶段引导,你还需要生成一个包含在启动过程中内核用到的模块的映像:mkinitrd /boot/initrd-2.4.7-10custom.img 2.4.7-custom看一下如何给内核打补钉,快速参考:cd /usr/src/linux-2.4.7-10patch –E –p1 < /home/download/the_patch_to_apply阅读/usr/doc/HOWTO/Kernel_HOWTO也会有所帮助,man depmod也行。配置、编译和安装一个新内核非常简单,但它也能导致许多问题。编译内核也是检测你的硬件的一个好方法,因为它涉及到相当大量的计算。如果你的硬件整合得不好的话,你会收到“signal 11”错误(请阅读/usr/doc/FAQ/txt/GCC_SIG11/FAQ)。ldconfig(以root用户运行)为动态链接库的加载程序(“ld”)重新产生联接和缓存区。当你在系统上安装一个新的动态链接库的后,你也许想要运行ldconfig。(每次当你引导计算机的时,它都会重新运行一遍,所以如果你重新启动,就不必再人为运行一遍了)。mknod /dev/fd0 b 2 0(=make node,以root用户运行)手动创建一个设备文件。这个例子展示的是创建一个与你的第一个软驱设备相关联的设备文件,当你意外地删除了该设备的时候,它会十分有用。选项是:b=块设备,c=字符设备,p=FIFO设备,u=无缓冲字符设备。两个整数指定了主设备号和次设备号。平时我也不知道mknod需要哪些参数。要创建设备时,我先阅读man MAKEDEV来找出设备的名字,然后运行/dev/MAKEDEV脚本文件,这个脚本文件可根据名字知道是何种设备――见下一个命令。如果提到的手册没有帮助的话,我推荐包含内核源代码的最终文档:less /usr/src/linux/Documentation/devices.txtcd /dev./MAKEDEV audio(以root用户运行)恢复“audio”设备,我刚好把它搞得有点不灵了。也可见前面的命令。5.13 硬盘和软盘实用工具fdisk /dev/had(=“fixed disk”,以root用户运行)Linux硬盘驱动器分区工具(DOS有一个同名的工具)。在上面的例子中,我指定要对第一个IDE接口上的第一个硬盘进行分区,因此是“hda”。如果我是你,我会在对任何分区使用之前备份所有重要数据。我不知道有谁喜欢用fdisk(无论是Linux,还是DOS版本)――我更喜欢简单易用的cfdisk,见下一个命令。cfdisk /dev/had(以root用户运行)基于菜单的硬盘驱动器分区工具。比更容易使用(见前一个命令)。物理驱动器包括基本分区(每个硬盘上最多4个),和逻辑分区(数量上没有限制)。一个基本分区是可以引导的。逻辑分区必须包含在“扩展分区”中;扩展分区不能使用其本身,它们只是逻辑分区的一个容器。当对一个硬盘进行分区时,一般我会:(1)创建一个基本分区,(2)使这个基本分区可以引导,(3)创建一个扩展分区,(4)在扩展分区中创建逻辑分区。sfdisk –l –x |more(以root用户运行)列出你的系统上的所有驱动器的分区表(包括扩展分区)。parted /dev/hadLinux(ext2)和DOS(FAT和FAT32)硬盘分区的处理工具。它可以创建、删除、移动、复制、压缩和扩展分区。你在使用它之前应该备份你的数据并仔细阅读info parted。fdformat /dev/fd0H1440mkfs –c –t ext2 /dev/fd0(=floppy disk format, 两个命令,以root用户运行)对第一个软驱(dev/fd0)中的高密度软盘(1440KB)执行低级格式化。然后建立一个文件系统(-t ext2),检查/标出坏块(-c)。建立文件系统相当于高级格式化。你还可以将软件盘格式化成不同的密度(非标准的);试一下 ls /dev/fd0。你能够使用fdformat /dev/fd0格式化成缺省密度(一般是1440K)。badblocks /dev/fd01440 1440(以root用户运行)对一张高密度软盘进行坏块检查并将结果显示到屏幕上。参数“1440”指定了要检查1440块。这个命令不修改软盘。bakblocks也可对用来对硬盘表表进行检查,但是在我进行全面读-写检查之前,我必须先将文件系统卸下:mount [查出哪个设备包含我要进行坏块检查的磁盘分区]umount /dev/hda8 [卸下选定的分区]badblocks –n /dev/hda8 [以非破坏读-写方式检查选定的分区,这样我的数据就不会被删除了]mount /dev/hda8 [如果没有坏块信息显示出来,将该分区安装回去]如果发现坏块,它们能够被在硬盘上标记出来,这用它们就不会再被使用了:e2fsck –c /dev/hda8fdck –t ext2 /dev/hda2(=file system check,以root用户运行)检查和修复文件系统,例如在由于电源故障导致的“不干净”关机之后。上面的这个例子执行对分区hda2的检查,文件系统型为ext2。你必须卸下分区或以“单用户模式”(在LILO提示符处输入“linux single”或以用户使用 init 1 来进入单用户模式)引导来执行这个命令。如果在文件系统检查过程中发现错误,我选择缺省设置来修复。Tune2fs –j /dev/hda2(以root用户运行, 只用于支持ext3的内核—RH7.2)调整文件系统的可调参数。上面的这个例子展示如何一个磁盘分区(本例为hda2)增加日志,成功地将文件系统转为ext3(日志)文件系统。要完成这个转换,你还须编辑/etc/fstab文件,将文件系统类型由ext2改为ext3,否则你将遇到问题――ext2不能安装一个非正常关闭的日志文件系统。要检查文件系统的类型,使用mount(无参数)或cat /etc/mtab。如果你需要关于的更多信息,试一下:tune2fs的其它参数可以让你添加一个卷标签,调整安装文件系统(被检查过)的数量(最大安装数),或激活定时文件系统检查(很少用到)。dd if=/dev/fd0H1440 of=floppy_imagedd if=floppy_image of=/dev/fd0H1440(两个命令,dd=”data duplicator”)在当前目录下创建一个软盘的映像文件,名为“floppy_image”。然后将floppy_image(文件)复制到另一张软盘。功能像DOS中的“DISKCOPY”。mkbootdisk –device /dev/fd0 2.4.2-3制作一张应急引导软盘。在系统安装过程中你会被问到是否要制作一张引导盘。以上命令展示在安装后如何制作启动盘,使用第一个软盘驱动器(/dev/fd0)。你可以运行uname -a或ls /lib/modules来知道内核名字(命令中需要,这里是2.4.2-3)。5.14 用户帐户和文件权限管理useradd user_namepasswd user_name(以root用户运行)创建一个新帐户(你必须是root用户)。例如: useradd Barbara。在接下来的一步别忘了为新用户设置口令。用户的主目录(被创建的)是 /home/user_name。 你也可以用一个等价的命令adduser user_namels –l /home/peteruseradd peter –u 503 –g 503(以root用户运行)创建一个用户来匹配一个已有目录(可能是以前安装中的)。如果用户ID和组ID(每个文件显示出来的)以前都是503,那么我用匹配的用户名,用户ID(UID)和组ID(GID)来创建用户。这样在系统升级后可以避免由于改变用户文件的所有权而引起的混乱。userdel user_name删除一个帐户(你必须是root用户)。用户主目录和未发送邮件必须单独处理(人工处理,因为你必须决定如何处理这些文件)。还有一个命令groupdel来删除组。groupadd group_name(以root用户运行)在你的系统上创建一个新组。在一个家用计算机上不是必须的,但对于有少量用户的家用计算机是十分方便的。例如,我能够创建一个“friends”组,使用:groupadd friends然后编辑文件,将我的名字和朋友的名字加到组的列表中的一行,最后一行看起来像这样:friends:x:502:stan,pete,marie然后,我改变一个指定文件的权限,这样这个文件就属于我和组“friends”。chgrp friends my_file这样,这个组的成员就有访问这个文件的特殊权限,而其他人则没有,改变读和写权限的例子如下:chmod g=rw o= my_file另外一种做法是将写的权限赋予所有用户,即使是在家庭电脑上绝对是不安全的。groups列出当前用户所属的的组。我还可以使用groups john来找出用户john所属的组。usermodgroupmod(以root用户运行)两个命令行工具,用于修改用户帐户和组,而不用修改相关文件:/etc/passwd, /etc/shadow, etc/group /etc/gshadow。一般是不必要的。userconf(以root用户运行)菜单驱动的用户配置工具(口令政策、组信息更改、增加用户等)。它是linuxconf包的一部分,但可以单独运行。passwd修改当前帐户的口令。如果你是root用户,你能为任何用户修改口令,使用命令:passwd user_namechfn(=”change full name”)修改你的信息(全名,办公室房间号,电话号码,等等)。用finger命令运行于你的login_name,便会显示这些信息。change –M 100 login_name(=”change age”)将用户的口令有效期设为100天。quota usernamesetquota usernamequotaon /dev/hadquotaoff /dev/had管理用户磁盘限额的一组命令。一般在家中电脑上不用。“Disk quota”意思是每个用户使用磁盘空间的限制。这些命令分别是显示用户限额,设置用户限额,在一个给定的文件系统(本例是/dev/hda)上启用限额系统,关闭限额系统。我所见过的典型的发行套装的缺省设置:对所有用户没有限制,所有文件系统上的限额系统都关闭。kuser(以root用户运行,在X终端上)使用一个GUI程序管理用户和组。好用且基本包括你平常管理用户帐户的命令。chmod perm filename(=change mode)修改你的文件的访问权限(除非你是root用户,你可以修改任何文件)。你能够以三种方式(读()、写()、执行())访问三个级别(所有者()、文件所有者同组成员()、系统上其他人())的用户的文件。检查当前访问权限,使用:ls –l filename如果这个文件可以为所有用户以所有方式访问,其权限显示为:rwxrwxrwx第一个三位表示文件所有者的权限,第二个表示拥有这个文件的组的权限,第三个表示其他人的权限。没有权限显示为“-”。当设置权限时,以下符号被用到:“u”(=用户或文件所有者),“g”(拥有文件的组),“o”(其他人),“a”(所有人,如所有者,组和其他人),“=”(设置权限为),“+”(增加权限),“-”(取消权限),“r”(读文件的权限),“w”(写文件的权限,代表修改文件的权限),“x”(执行文件的权限)。例如,这个命令为所有的用户增加读文件的权限:chmod a+r junk这个命令将取消所有用户执行文件的权限:chmod o-x junk你也可以去这里,有更多的信息。你可以用命令umask(参阅man umask)为你创建的新文件设置缺省权限。Chown new_ownername filenameChgrp new_groupname filename改变文件的所有者和组。在你复制一个文件供其他人使用时,你应当使用以上两个命令。只有文件的所有者才能删除它。lsattr files列表文件属性。不常用到,因为很多最有趣的属性还没有实现。属性可以用命令来修改。这些属性是:A(=修改文件时不要更新时间),S=(同步更新),a(=此文件只能追加),c(=在内核级上压缩文件,尚未实现),i(=不变的文件), d(=不可转储),s(=安全删除)和u(不可删除,尚未实现)。一个有趣的用法是使一个文件不可删除,即使root用户也不行(除非设置者清除该属性)。Sudo /sbin/shutdown –h now(作为一个普通用户,会被提示输入用户口令)运行“shutdown”命令(或另外一个系统管理员授权你可以运行的命令)。使用,系统管理员可能授权指定用户执行指定命令,而不用出示root用户口令。/etc/sudoers文件必须被置为类似如下内容:my_login_name my_host_computer_name=/sbin/shutdownpwckgrpck(以root用户运行,两个命令)验证口令文件和组文件的完整性。pwconvgrpconv(以root用户运行)可能你不需要这些命令。它们将旧格式的口令和组文件转换成更安全的“shadow”文件。5.15 程序安装rpm –ivg package_name-version.platform.rpm(以root用户运行)安装一个软件包(选项“i”,必须是破折号(dash)后面的第一个字母),采用交互方式(选项“v”=verbose)并以数值方式显示安全进程(选项“h”)。rpm代表“RedHat软件包管理器”rpm –Uvh package_name-version.platform.rpm(以root用户运行)升级(选项“U”,必须是破折号(dash)后面的第一个字母)一个软件包,采用交互方式(选项“v”)并以数值方式显示安全进程(选项“h”)。rpm –ivh –force –nodep package_name-version.platform.rpm(以root用户运行)安装一个软件包,忽略任何可能的冲冲和包依存关系问题。rpm –e package_name(以root用户运行)卸载(选项“e”=删除(erase))软件包package_name。请注意在软件包名称最后没有“-version.platform.rpm”(软件包名称与用来安装它的*.rpm文件名一样,只是没有了破折号、版本、平台和“rpm”)。rpm –qpi package_name-version.platform.rpm查询(选项“”,必须是破折号(dash)后面的第一个字母)还没有安装的软件包(选项“p”),显示软件包包含的信息(选项“i”)。rpm –qpl package_name-version.platform.rpm查询(选项“”,必须是破折号(dash)后面的第一个字母)还没有安装的软件包(选项“p”),显示软件包包含的全部文件的列表(选项“l”)。rpm –qf a_file查找文件“a_file”所属的已安装的软件包。如果你偶然删除了一个文件,现在需要找到正确的软件包来重新安装,这个命令很有用。rpm –qi package_name查询已安装的软件包,显示其自身的信息。请注意,请注意在软件包名称最后没有“-version.platform.rpm”rpm –qai | more查询并显示系统上安装的所有的软件包的信息。在我的简单的系统上,我安装了大约600多个软件包,很显然,我必须花很多时间来阅读它们的信息。要查一下你的软件包的数量,试试:rpm –qa | grep –c ‘’要找出一个指定的软件包,试:
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10617731/viewspace-958647/,如需转载,请注明出处,否则将追究法律责任。