Linux的基本操作

3部分: Linux的基本操作
本章内容:
Linux 系统区分英文字符的大小写。比如,myfile, Myfile 和 myFILE表示的是三个不同的文件。同样,用户密码和登录名也需要区分大小写(这里沿用了Unix 和 C 语言的命名规则)。命名目录和命名文件的规则是相同的。除非有特别的原因,否则用户创建的文件和目录名要使用小写字符。大多数的 Linux 命令也使用小写字符。
Linux 系统下的文件名长度最多可到256个字符。通常情况下,文件名的字符包括:字母、数字、"."(点)、"_"(下划线)和"-"(连字符)。Linux 允许在文件名中使用除上述符号之外的其它符号, 但并不建议用户这样做。 有些转意字符 (即该字符被系统借用,表示某种特殊含义) 在Linux 的 命令解释器(shell)中有特殊的含义(shell 类似于 DOS下的命令处理器 COMMAND.COM)。这样的转意字符有:"?"(问号),"*"(星号), " "(空格), "$"(货币符), "&", 扩号等等。在文件名中应尽量避免使用这些字符。文件名中可以有" "(空格),但建议用户用"_"(下划线)来替代。
"/" 既可代表目录树的根也可作为路径名中的分隔符(类似DOS下的"\),因此"/"不能出现在文件名中。
和DOS一样,"." 和 ".." 分别用来表示"当前目录"和"父目录", 因此它们也不能作为文件名。
正如DOS 中一样,我们不能将文件命名为 . 或者 .. (点或者双点)——它们分别代表当前目录和当前目录的父目录(上一级目录)。这跟DOS中是完全一致的。
下面列出了一些转意字符及其意义:
* = 用于匹配任意长度大于等于零的字符序列。以 . (点)开头的文件名除外。
= 用于匹配任意单个字符
[abC1] = 用于匹配枚举集合中任意单个字符。比例中,集合由‘a’,‘b’,C’,‘1’组成。
[a-z] = 用于匹配任意小字字母
[A-F] = 用于匹配任意大写字母
[0-9] = 用于匹配任意个位数字
[a-zA-Z0-9] = 用于匹配任意字母(大小写)或者数字。
\ (反斜线)也是一个特殊的字符。它屏蔽后继特殊字母的特殊含义(转意),使该字符仅取其符号所代表的字面意义。
: 下面的命令会列出当前目录中除了文件名以 . 开头的文件之外的任何文件。
ls *
与此等价的命令是ls 或者 dir (不需要后跟 “*”)。 文件名以 . 开头的文件不被列出是因为 “.”是文件名的首字符,它并不与“*”匹配。我们可以把文件名以 . 开头的文件等价地理解成DOS中隐藏文件。使用ls –a (带 all 选项的ls 命令)或者 ls .* 命令来查看这些“点”文件。“点”文件在用户的home目录中很常见。它们通常是用户级的配置文件。
以下命令可列出当前目录中文件名含 . 的任何文件 (文件名以点开头的除外)。
ls *.*
以下命令可列出当前目录中文件名含两个点的任何文件(文件名以点开头的除外)。
ls *.*.*
请注意Linux中没有与DOS中文件扩展名相应的概念,但是你可以使用扩展名。例如,一个文件可以命名为 my_text.txt.zip 。另有一些DOS中的命名特色在Linux中是完全找不到的(比方说Micro~1.doc )。
以下的命令会找出扩展名为“htm”后再跟任意一个字符的文件:
locate *.htm?
以下命令可列出当前目录中所有文件名以a,b或者任意大写字母开头的文件:
ls [abA-Z]*
以下命令可列出当前目录中所有文件名以a开头,以n结尾的文件:
ls a*n
命令行自动完成是一个有用的功能——使用[Tab]键可以极大的节约时间,使处理复杂的长文件名变得轻松。例如,使用自动完成的功能,可以极大的减化输入以下这个长文件名的工作。
dir Eurosong\ 2000\ Olson\ Brothers\ -\ Fly\ on\ the\ wings\ of\ love\ \(denmark\).mp3
我只要输入
dir Eu<Tab>
如果没有其他文件的文件名以Eu 开头,输入<Tab>之后,系统会自动输入文件名的其余部分。
如果还有其他文件的文件名也以Eu开头,我们可以查看一下可能的选择(系统会列出),进一步输入文件名中的下一两个字符,从而使文件的选择唯一化,系统的自动写成功能就可以启动完成整个长文件名的输入了。文件名中的反斜线作用在于提示系统其后继的字符“空格”仅取其字面意义,即,文件名中包含的确实是空格。
文件名中的有“怪”字符怎么办?大部分问题可以通过自动完成功能解决。 另外,处理文件名中含有转意字符的文件,我们可以使用成对的‘’(单引号)。由于这些特殊的转意字符被单引号引用,命令解释器不会试图去解释其特殊意义。例如,给一个名为my file*的文件更名(文件名中含空格和*), 我们可以使用:
mv 'my file*' filename_without_weird_characters.txt
请注意我使用了一对‘’号 (单引号)。使用成对的“”(双引号)引用通常没有使用‘’有效。如果你使用“”号(双引号), 部份转意字符可能会被命令解释器加以解释(这就意味着它们可能被转意,而不是保持字面意义)。
跟从UNIX的传统,在Linux上,创建文件时,我们可以在文件名中可以使用几乎任何字符,包括不可打印字符(控制字符)。但是这情况非常少见。如果你在遇到文件名使用了这些字符,你可能会感觉很异样。我通常会在适当的位置使用一个转意字符*对这种文件进行重命名。我会先使用ls命令确认我要重命名的文件的文件名,然后对这个文件进行更名(使用mv 命令):
ls –l myfile*y.html
mv myfile*y.html myfile.html
(此例中我假定非标准字符位于字母e和y之间)
这里举一个关于在文件名中使用非常规字符的极端的例子: 创建一个文件名以短横线 - 开头的文件,再等它删除。 用常规的删除命令似乎没有办法(因为短横钱通常是用来引导命令选项的)。例如:
dir > -junk
以上命令将创建一个以-junk为名的文件(跟DOS类似,符号 > 将dir 命令的输出重定向到一个名为“-junk”的文件。常规的删除文件命令无法把这个文件删除。我们需要使用:
rm ./-junk
文件名前的./ 表示当前目录。在此其目的是避免文件名把的首字符 - 被命令解释器当作rm命令的选项引导。事实上没有必要在文件名中使用这些特殊字符。遵从传统的命名规则,不会过多地使事情复杂化。
除了使用自动完成,单引号,双引号之外,我们也可以利用 \ (反斜线) 对文件名中包含了非常规字符的文件进行操作。反斜线的作用在于屏蔽其后继字符的特殊意义。例如,我可以使用如下命令创建一个以 *?[ 为文件名的文件:
touch \*\?\[
(touch 命令创建一个空文件。如果同名文件已存在,则改变该文件最后更新的日期/时间)。
Linux的文件系统目录树庞大而复杂。如果你非常熟悉它的话,会极大地提高你应用Linux的技巧。简单地说,典型的Linux包含五大文件系统目录。根据你自己系统的需要和大小,这些文件系统目录能安装在单个或多个物理硬盘的分区中。(如果需要的话,单个文件系统目录也可以安装在不同的设备中。)
/”根目录
包含基本的操作系统和维护工具。这个目录的文件可以启动系统,并且需要的话,可以完成紧急维护和修复的功能。
/usr”目录
包含所有的命令、程序库、文档和其它文件。这些文件在正常操作中不会被改变的。这个目录也包含你的Linux发行版本的主要的应用程序,譬如,Netscape。
/var”目录
包含在正常操作中被改变的文件:假脱机文件、记录文件、加锁文件、临时文件和页格式化文件等。
/home”目录
包含用户的文件:参数设置文件、个性化文件、文档、数据、EMAIL、缓存数据等。这个目录在系统省级时应该保留。
/proc”目录
整个包含虚幻的文件。它们实际上并不存在磁盘上,也不占用任何空间。(用 ls –l 可以显示它们的大小)当查看这些文件时,实际上是在访问存在内存中的信息,这些信息用于访问系统。
/”根目录部分有以下子目录:
/bin 系统启动时需要的执行文件(二进制),这些文件可以被普通用户使用。
/sbin 系统执行文件(二进制),这些文件不打算被普通用户使用。(普通用户仍然可以使用它们,但要指定目录。)
/etc 操作系统的配置文件目录。
/root 系统管理员(也叫超级用户或根用户)的Home目录。
/dev 设备文件目录。LINUX下设备被当成文件,这样一来硬件被抽象化,便于读写、网络共享以及需要临时装载到文件系统中。正常情况下,设备会有一个独立的子目录。这些设备的内容会出现在独立的子目录下。LINUX没有所谓的驱动符。
/lib 根文件系统目录下程序和核心模块的共享库。
/boot 用于自举加载程序(LILO或GRUB)的文件。当计算机启动时(如果有多个操作系统,有可能允许你选择启动哪一个操作系统),这些文件首先被装载。这个目录也会包含LINUX核(压缩文件 vmlinuz),但LINUX核也可以存在别处,只要配置LILO并且LILO知道LINUX核在哪儿。
/opt 可选的应用程序,譬如,REDHAT 5.2下的KDE (REDHAT 6.0下,KDE放在其它的X-WINDOWS应用程序中,主执行程序在/usr/bin目录下)
/tmp 临时文件。该目录会被自动清理干净。
/lost+found 在文件系统修复时恢复的文件。
/usr”目录下比较重要的部分有:
/usr/X11R6 X-WINDOWS系统(version 11, release 6)
/usr/X11 同/usr/X11R6 (/usr/X11R6的符号连接)
/usr/X11R6/bin 大量的小X-WINDOWS应用程序 (也可能是一些在其它子目录下大执行文件的符号连接)。
/usr/doc LINUX的文档资料(在更新的系统中,这个目录移到/usr/share/doc)。
/usr/share 独立与你计算机结构的数据,譬如,字典中的词。
/usr/bin和/usr/sbin 类似与/”根目录下对应的目录(/bin和/sbin),但不用于基本的启动(譬如,在紧急维护中)。大多数命令在这个目录下。
/usr/local 本地管理员安装的应用程序(也可能每个应用程序有单独的子目录)。在“main”安装后,这个目录可能是空的。这个目录下的内容在重安装或升级操作系统后应该存在。
/usr/local/bin 可能是用户安装的小的应用程序,和一些在/usr/local目录下大应用程序的符号连接。
需要理解的是:所有目录出现在单一的文件目录树下,即使这些目录在不同的分区,物理驱动器(包括软驱),或者甚至分布在网络上。所以,在LINUX下没有类似在DOS下的驱动符。在DOS或WINDOWS下的驱动符,在LINUX下以一个装载位置下的子目录的形式出现。
大多数的LINUX发行版本,目录系统很完善并且标准(Linux Standard Base发布了微小的区别)。LINUX目录系统和典型的商业UNIX目录系统完全相似。
总结来说:
<!--mstheme--><!--msthemelist-->
bullet <!--mstheme-->用户应该将文件存在/home/user_login_name目录下(及其子目录下)。 <!--mstheme--><!--msthemelist-->
bullet <!--mstheme-->本地管理员大多数情况下将额外的软件安装在/usr/local目录下并符号连接在/usr/local/bin下的主执行程序。 <!--mstheme--><!--msthemelist-->
bullet <!--mstheme-->系统的所有设置在/etc目录下。 <!--mstheme--><!--msthemelist-->
bullet <!--mstheme-->不要修改根目录(“/”)或/usr目录下的任何内容,除非真的清楚要做什么。这些目录最好和LINUX发布时保持一致。 <!--mstheme--><!--msthemelist-->
bullet <!--mstheme-->大多数工具和应用程序安装在目录:/bin, /usr/sbin, /sbin, /usr/x11/bin, /usr/local/bin。 <!--mstheme--><!--msthemelist-->
bullet <!--mstheme-->所有的文件在单一的目录树下。没有所谓的“驱动符”。 <!--mstheme--><!--msthemelist-->
<!--mstheme-->
更多关于/proc目录(仅为真正好奇的读者)
/proc“虚拟”文件系统目录是一个实时的居留内存的文件系统,用于监视操作系统内核和在计算机上运行的进程的状态。/proc目录是完全虚拟的,即它不写入任何特殊的磁盘或其它永久的媒体,它仅居留于计算机的内存,并且它是不断地更新以反映系统的变化。/proc目录的大小总是0,最后的日期总是当前日期。手工改变/proc目录下文件的内容可能会改变系统设置。许多LINUX使用工具利用/proc目录作为信息资源,如,dmesg, ps, top等。
/proc目录的内容:
/proc/cpuinfo 关于处理器的信息,如类型、厂家、型号和性能等。
/proc/devices 当前运行内核所配置的所有设备清单。
/proc/dma 当前正在使用的DMA通道。
/proc/filesystems 当前运行内核所配置的文件系统。
/proc/interrupts 正在使用的中断,和曾经有多少个中断。
/proc/ioports 当前正在使用的I/O端口。
举例,使用下面的命令能读出系统的CPU信息。
cat /proc/cpuinfo
3.1.3 执行一个程序
在命令行输入可执行程序的文件名但是程序不能运行?有三种可能性:
第一种可能性:没有输入正确的文件名。注意:Linux文件名是区分大小写的!举个例子,输入“Pico”或者“PICO”并不能启动pico编辑器程序。
第二种可能性:程序不在缺省路径PATH下?在Linux和其他的Unix下,可执行程序必须在你的PATH下面你才能够运行。如果程序所在的目录不在缺省路径下,你可以进入到程序所在的目录:
cd the_program_directory (the_program_directory是程序所在的目录名)
./program_name (program_name是程序的文件名)
或者你可以输入程序完整的路径名如下:
/the_program_directory/./program_name
注意,必须在程序名前面加上点“.”和斜杠“/”才能够正确运行。这是Linux的另外一个安全特性,可以使“特洛伊木马程序”更难于入侵。点“.”指的是当前目录,斜杠“/”是文件和目录之间的间隔符(DOS用的是反斜杠“\”)。
可以用一下命令来检查一下缺省路径:
echo $PATH
如果忘记了可执行程序的文件放在哪一个目录下面了,可以用以下命令查找:
find / -name “netscape”
以上命令从根目录“/”开始查找文件名叫“netscape”的程序。用这个命令可能速度更快一些:
locate netscape
(locate命令运行速度更快是因为它依赖于系统预先建立的文件数据库。这个数据库由一个在背景运行的程序cron来建立。因为cron一般安排在夜间运行,所有如果你经常在夜晚关机,就不要依赖locate可以找到你要的文件,也不要巴望locate可以找到刚刚才安装的软件名称)
请注意,PATH对于超级用户root和普通用户一般来说是不相同的。超级用户root的PATH包括/sbin和/usr/sbin,而普通用户一般不包括。所以,普通用户不能执行在/sbin下面的文件,除非他们指定程序的全路径名(目录加文件名)。还有,如果你是使用su命令从普通用户变成超级用户root的,因为继承了普通用户的缺省路径PATH,要执行/sbin目录下的文件,还是要指定程序的全路径名。
如果你知道程序的名字但是不知道程序的全路径名,可以用以下命令:
which netscape
就可以找到所有叫做netscape的文件的全路径名
第三种可能:程序可能是不可执行的。如果是这个原因,把它改成可以执行的(必须是超级用户root或者文件的所有者)
chmod a+x my_file
这个命令把“my_file”变成是所有人都可以执行的。检查是否可行:
ls –l my_file
请注意,在Linux和Unix下,修改文件的扩展名(比如.exe或者.bat)并不能使文件变成可以运行。文件能够被执行需要“可执行访问模式”,而不是象DOS下的“文件属性”.
3.1.4 改变路径(PATH)
一般来说,你不需要去修改缺省路径PATH。
PATH是当你要求执行程序时,文件搜索的目录列表。你可以用以下命令检查你的PATH
echo $PATH
比如说,在我的系统里,显示用户yogin的PATH为:
/opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/yogin/bin
“:”是间隔符,以上的PATH代表以下的目录表:
/opt/kde/bin
/usr/local/bin
/bin
/usr/bin
/usr/X11R6/bin
/home/yogin/bin
以下是在我系统上的超级用户root运行 "echo $PATH" 的结果:
/opt/kde/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
你可以修改文件/etc/profile里以“PATH=”打头的行,这样所有用户的缺省路径都将被修改,我一般用pico编辑器:
pico -w /etc/profile
(可选项 -w 用于关闭文件的自动换行)
你必须重新登录,才能验证修改的结果。仅修改个别用户的缺省路径,可以编辑文件:
/home/user_login_name/.bash_profile
注意文件名前面的“.”。如果文件名的第一个字符是“.”,通常这个文件是不可见的,必须用
ls –a的命令显示。
如果你真的想要当前目录在你的缺省路径PATH里,在你的PATH里加上“.”。
/etc/.bash_profile 文件看起来可能是这样子的
PATH="$PATH:$HOME/bin:"."
export PATH
这个命令从环境变量里得到PATH(对于所有用户,PATH在/etc/profile文件里),然后加上用户的$HOME目录(比如,用户susan的$HOME目录一般就是/home/susan目录),再加上“.”指的是当前目录。修改完PATH或者其他环境变量后,一般要使用export命令。这样才能使所有环境变量在修改之后,在设置脚本之外的环境都是可视的。
3.1.5 关闭计算机
在关闭计算机之前最好把所有的运行程序都关闭。从GUI的主菜单(GNOME或者KDE)选择“Logout”。接着,在logout的窗口里,选择”Shutdown”。
你也可以采用另外一种办法,在字符终端,按住<CTRL><ALT><DEL>(三个键同时按住),等待系统关机完成后,在机器重新启动的时候关掉计算机电源。如果你在X-Windows里,先按<CTRL><ALT><F1>(三个键同时按住)切换到字符终端,然后再按<CTRL><ALT><DEL>。
从来不要在未正常关机的情况下关闭计算机的电源,否则下一次重新启动可能会有硬盘出错的信息。一般来说,由于不正常关机导致的硬盘错误会被系统自动修复,但是在某些场合下也可能导致严重的问题,你可能要手工修复损坏的文件或者重新安装系统!
如果你希望按住<CTRL><ALT><DEL>只是关闭计算机而不是重新启动,你可以编辑文件/etc/inittab。这个文件看起来如下:
# Trap CTRL-ALT-DELETE
ca:ctrlaltdel:/sbin/shutdown –t3 –r now
root用户登陆,把文件修改如下:
# Trap CTRL-ALT-DELETE
ca:ctrlaltdel:/sbin/shutdown –t3 –h now
#”打头的行只是注释行,只是给人看的,对计算机不起影响
t3”告诉shutdown程序在关闭所有的进程之前等待“三秒钟”
r”选项指的是reboot(重新启动), “h”选项指的是halt(关机)
如果你是root用户,也可以直接使用shutdown命令关机。这个命令可以在用于关闭本地和远程的计算机。但是最常用的是当本地计算机的键盘不起作用(由于系统挂住等原因),无法按<CTRL><ALT><DELETE>时从远程登陆后使用shutdown命令关机。
telnet name_of_machine_with_no_operatable_keyboard
[以一般用户登陆到远程计算机name_of_machine_with_no_operatable_keyboard]
su root
[登陆到root用户]
/sbin/shutdown –rn now
[关闭计算机]
这个命令跳过标准的关机程序,所以关机的速度很快,当系统变得很不稳定的时候特别有用。(选项-n在重新启动之前强行中止所有的进程)
注意,出于安全的考虑,你不能在远端或者通过因特网使用root用户直接登陆。你必须先login到一般用户,然后执行su root命令,输入正确的秘密后进入到超级用户root.
你也可以使用shutdown把关机的时间安排得往后一点
/sbin/shutdown –r 23:59
将在午夜0点之前的一分钟重新启动计算机。 或者
/sbin/shutdown –r +1
将在你命令输入后的一分钟重新启动计算机
如果shutdown命令对你来说太长太难记了,也可以使用以下命令:
reboot (重新启动)
halt (关机)
另外一个比较偏门的办法是把计算机切换到runlevel 0 (关机状态) 或者runlevel 6 (重新启动状态)。命令如下:
init 0 (关机)
init 6 (重新启动)
关于不同的runlevel的描速可以在文件/etc/inittab里找到。
3.1.6 处理挂起的程序
有错误的程序在Linux下照样会引起系统挂起没有响应。但是一个崩溃的程序一般不会影响操作系统本身,所有你不需要经常因为某个程序崩溃而重新启动系统。很多Linux的服务器运行超过一年也不需要重新启动。按我们的经验,一个不太稳定的操作系统一般是由硬件或者不正确的系统配置引起的。比如,我们多次碰到奔腾处理器的过热问题(CPU风扇转的不如所要求的速度快或者干脆停了,CPU芯片与散热片之间由于有赃东西导致接触不太紧密),质量不好的内存条,速度不匹配的内存条,错误的BIOS设置(你最好把一些先进功能的设置去掉,让Linux来负责这些设置)。“signal 11”是一个典型的与硬件有关的出错信息,特别是当你执行一些要求复杂运算的任务:Linux安装,内核的编译等等。如果你的奔腾芯片有过热的现象(特别是早期的一些奔腾芯片),这里有一些小诀窍让它“冷却”:清洗芯片上的散热片,更换CPU风扇,把计算机用机壳装起来(一些计算机玩家喜欢“裸机”),在计算机内多安装一个风扇,不要“超频”,减少一些不必要的任务,等等,还有,使用空白屏幕替代很复杂的屏幕保护。
非真正的系统挂机
有些程序运行时看起来好像是系统挂住了,其实是在等待用户的输入。比较经常碰到的是一些程序的命令行需要输入对应的文件名作为选项,但是用户只输入程序名却没有给需要的文件名,程序就假设用户即将在标准输入终端上输入文件名,于是处于等待状态。比如命令:
cat
输入回车后,看起来好像没有响应,其实程序在等待你的键盘输入。按住<CTRL>D(代表“文件结束”)就可以看到真正的结果了。
再举另外一个例子:我在用户新闻组上看到很多关于使用tar命令解压一个下载的文件时,引起系统挂死的问题。比如:
tar -zxv my_tar_file (命令错误!)
其实这也是在等待用户输入。因为命令没有带选项“-f 文件名”,所以文件my_tar_file并不被认为是一个文件名。正确的命令应该是:
tar –zxvf my_tar_file
要注意的是文件名必须紧跟在选项-f后面,否则照样出错,比如:
tar –zxfv my_tar_file (命令错误!)
出错的程序都可以被中止
一个在前台运行的文本程序可以在任何时候使用<CTRL>C中止,但是这对比较大的应用程序不起作用,因为这些应用程序为避免用户的误操作,通常把<CTRL>C的功能屏蔽。当程序被挂起时,你可以使用<CTRL>Z将程序送到后台运行(不是百分百可行),或者切换到不同的终端(使用<CTRL><ALT><F2>),然后,使用相同的用户名登录到系统。一旦你重新回到系统里,找到你需要中止的程序:
ps
这个命令代表“列出当前状态”(print status),可以显示当前系统中由该用户运行的进程列表。在ps的输出中,找到挂起的程序的PID号,然后执行命令:
kill 123
该命令将中止PID号码为123的进程。
作为一般用户,我只能中止那些由我运行的进程。而作为超级用户可以中止任何进程。想要看系统中所有正在运行的进程的完整列表,用命令:
ps –axu | more
这命令将列出正在运行的所有进程(选项a),包括那些没有控制终端的进程(选项x),包括每个进程所属的用户名(选项u)。因为显示的内容可能要超过一个屏幕,所以用管道命令“|”加上“more”让换屏幕之间有个停顿。
kill命令另有一个快捷的方法killall,举例:
killall netscape
这个命令将中止名称是netscape的所有进程
killall pppd
这个命令将中止ppp daemon进程,取消所有的拨入连接
X-windows的程序没有控制终端,可以很容易用xkill命令中止(在X终端里输入命令):
xkill
你可以看到光标变成一个“宣判死刑”的标志,把光标移到你要关闭的窗口,点击鼠标左键,窗口立刻关闭,该程序被中止。
对于上述命令,另外一个快捷的办法是按住<CTRL><ALT><ESC>,等待光标变成一个“宣判死刑”的标志指到对应的窗口。点击鼠标后,窗口就会消失,程序退出。
如果X-Windows系统崩溃实在无法恢复,强行中止X-Server最快的办法是按<CTRL><ALT><BACKSPACE>。然后,运行ps –aux找到任何可能还在运行的X-Windows程序,逐一使用kill命令中止这些进程。如果你不这样做,其他任何一个有问题的X-Windows程序可能又会引起整个X-Windows系统崩溃。如果你有在后台运行的程序,操作系统会要求你退出,接着发送信息“There are stopped jobs”。你只要重复运行命令logout(或者exit),后台运行的程序将会被自动退出,然后你也会退出系统。
核心文件 (core files)
当一个程序崩溃时,它经常导出一个“核心文件”到用户的主目录下。一个“核心文件”通常是一个内存映像文件,这个文件带有一些给程序错误解析时要用到的信息。如果你只是普通用户不想解析任何错误程序,可以把“核心文件”删除。
rm core
或者放在那里不管,下一次有程序出错的时候,该文件会被自动覆盖。你也可以使用以下命令关闭“核心文件导出”的功能:
ulimit -c o
看看是否生效使用命令:
ulimit -a
(该命令显示“用户限制”,选项“-a”代表“所有”)。如果想要关闭所有用户的“核心文件导出”功能,编辑文件/etc/profile (要求超级用户root),调整你要的设置。
如果你想知道“核心文件”有什么用处,可以在“核心文件”所在的目录使用命令:
gdb –c core
这个命令将启动GNU的程序调试工具,显示产生“核心文件”的程序名,程序中止时的信号等信息。输入quit退出程序调试工具。如果想知道更多的信号,用命令:
cat /usr/include/bits/signum.h | more
大部分命令带很多选项,大部分选项在字符前面带有“–”,举个例子:
dir -l
显示当前目录下的文件(以长文件名格式显示,不带选项为缺省时按短文件名格式显示),
dir –l –a
或者
dir –la
以长文件名格式(选项-l)显示所有文件包括隐含文件(选项-a)。
一般情况下,选项只带一个字符。这是为了遵循旧的Unix的传统。当然也有一些新的选项不止一个字符:
dir --help
这里,如果选项超过一个字符,选项前面就必须使用两个“-”作为引导。以上命令显示关于命令dir的一些简单帮助信息。如果显示的内容超过一个屏幕,可以使用管道命令:
dir –help | more
3.2 用户,密码,文件访问权限和安全性
3.2.1主目录, 根目录和添加新用户
对于一般用户来说,主目录(home directory)是硬盘上唯一可以原来写东西的地方。一般的路径名是/home/login_user_name。
主目录用于存储各种用户文件:设置文件,程序配置文件,用户文档,数据,netscape的缓存,邮件等等。作为一个普通用户,你可以在主目录下建立新的目录安排你自己的目录结构。其他用户无法阅读你的文件或者写数据到你的主目录,除非你给他们适当的权限。
除了自己的主目录以内的文件,一般用户也可以看到,阅读和执行很多系统里的文件,但是一般来说他们不能修改和删除这些文件。
root用户(也叫“超级用户”)是一个特殊的系统管理帐号,可以修改系统里的任何文件。经常使用root用户作为缺省的登录用户不是什么好习惯――你的误操作将有可能导致严重后果。建议设置一个一般用户给自己作为日常使用的帐号,只在必要使用root用户的权限时才登陆到root用户模式下。一般来说,root用户是Linux初始化安装后的唯一一个用户。
使用root用户建立一个普通用户:
adduser joe
passwd joe
[输入用户秘密]
[再次输入用户秘密确认]
在上述的例子里,要求超级用户root。以上命令在系统里产生一个joe的用户,接着设置该用户的密码。现在,可以告诉joe他的用户名和初始密码,然后他可以登录到系统,然后修改他的密码。还要注意的是,用户名和密码都是大小写敏感。
超级用户可以修改任何人的密码,尽管他/她无法阅读该用户的密码。用户密码采用单向加密算法,加密后仅仅在系统上储存加密后的密码,对于旧的系统一般存在/etc/passwd文件里,新的系统一般存在/etc/shadow文件里,未经加密的密码文件从来不被储存在系统里。当用户登录的时候,系统把用户的输入密码使用相同的加密算法得到的结果再和密码文件(/etc/passwd或者/etc/shadow)里的结果相比较。
超级用户和一般用户的分开使得Linux系统更加安全――甚至让病毒在Linux系统下很难有所作为(因为用户运行的程序只能把数据写到他/她自己的有读写权限的目录里,不会感染整个操作系统的核心部分)。
一般建议用户在第一次登录到系统的时候立刻修改自己的密码:
passwd
Changing password for joe
(current) UNIX password: [输入旧的密码]
New password: [输入新的密码]
Retype new password: [重复输入新的密码]
passwd: all authentication tokens updated successfully.passwd
实际上,当你输入密码时,出于安全原因,键盘输入并不会显示在屏幕上。如果你是第一次修改密码,看不到键盘输入的结果可能会有点不适应。
Linux里,同一个密码可以用来:
· 登录到文本终端
· 登录到图形用户界面(GNOME或者KDE)
· 取消锁定的文本终端
· 取消密码保护的图形用户界面下的屏幕保护(GNOME或者KDE)
一个“脆弱”(指容易被破解)的密码通常是安全问题的根源。即使在家里,完全有可能当你在浏览因特网的同时,黑客已经攻破你的计算机,正在修改和删除你计算机上的文件,或者通过你的计算机在本地警察局的网络里做一些令人头痛的事情。所以,即使在家里也要保证用户密码的安全。一旦有人登录到你的计算机,即使是普通用户,他也有可能找到其他方法获得超级用户的密码。其实就看你管
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页