since2012/04/23

开机、关机、在线求助与指令下达方式
本文已不再维护!请前往这里查阅最新文章
最近更新日期:2004/05/01
第一次登入系统与离开系统
图形模式与文本模式的切换方式
指令下达方式与基础指令练习
在线求助:man, info
正确的关机方式
开机过程的问题排解
本章习题练习

第一次登入系统与离开系统
登入系统有这么难吗?呵呵!并不难,不过,虽然说是这样说,然而很多人第一次登入 Linux 的感觉都是『接下来我要干啥?』如果是以图形接口登入的话,或许还有很多好玩的事物,但是,要是以文字接口登入的话,面对着一片黑压压的屏幕,还真不晓得要干嘛呢!嗯!为了让大家更了解如何正确的使用 Linux ,正确的登入与离开系统还是需要说明的!
  • 登入系统:

  • 啊开机就开机呀!怎么还有所谓的登入与离开呀!?呵呵!开什么玩笑,在 Linux 里面,正确的开关机可是很重要的!因为,不正常的关机可能会导致整个系统的扇区错乱,造成数据的毁损呢!这也是为什么通常我们的 Linux 主机都会加挂一个不断电系统啰!
    在顺利的安装完成之后,就是要快乐的进入 Linux 的世界啦,这个时候,按下电源,如果你是以文字型的 Grub 登入的话,那么你的屏幕可能会出现下列的字样 ( 注:不同的 Linux distribution 的登入画面都不相同的啦!这无所谓,只是开机的画面而已! ) :
    这个就是 Grub 开机管理程序啦!由上面我们可以发现,总共目前有三个开机的选项,分别是 linux, failsafe 与 floppy 三个!当然啦,我们要使用的是 linux ,则移动光标指到 linux 上面去,按下 Enter 即可!另外,仔细看到右下方有个秒数对不对,呵呵!只要您在预设的秒数之内没有按下任何按键,那么 grub 会自动的以系统默认的启动文件来开机啰!还有还有, grub 还有很多的功能,关于这个,我们留待后面的『系统管理员篇』再来详细的介绍这个玩意儿~此外,如果是以另一个多重引导软件 ( loader ) ,也就是 LILO 来设定你的 MBR 时,那么预设是不会出现选单的!只会有出现『 boot: 』的画面而已,如果按下『 Enter 』就会以预设的开机档来开机,如果按下『Tab』按键,就会出现其他可能的开机档啦!这部份我们同样在管理员篇再介绍!
    选择了 Linux 之后,会开始跑一些硬件搜寻的数据,然后是一些服务的开启动做,就像下图一般:
    呵呵!这就是在正确的开机啦!OK!如果顺利的开机成功,那么就会进入到底下的画面来啦!
 
Mandrake Linux release 9.0 (dolphin) for i586
Kernel 2.4.19-16mdk on an i686 / tty1
test login: root
Password:
[root@test root]#
 
上面的画面显示的内容是:
 
  • 第一行显示的是您的 Linux distribution 与版本,还有安装的软件等级( i586 ),
  • 第二行显示的是您的 Linux 核心版本,以及您的硬件等级 ( i686 ),那么什么是 tty1 呢?这个等一下告诉你!
  • 第三行显是您的主机名 (Hostname) ,至于 login 后面则是需要你输入登入者的账号,由于我们刚刚安装完毕,直接以 root 来登入即可!注意,那个 root 就是『系统管理员』,也就是『超级使用者, Super User』,在 Linux 主机之内,这个账号代表的是『无穷的权力!』,任何事都可以进行的,因此,使用这个账号要『粉小心!』
  • 第四行则在第三行输入后才会出现,要你输入密码啰!请注意,在输入密码的时候,屏幕上面『不会显示任何的字样!』,所以不要以为你的键盘坏掉去!
  • 第五行则是正确登入之后才显示的讯息,最左边的 root 显示的是『目前用户的账号』,而 @ 之后接的 test 则是『主机名』,至于最右边的 root 则指的是『目前所在的目录』,那么那个 # 则是我们常常讲的『提示字符』啦!
 
好了这样就是登入主机了!很快乐吧!耶~
 
    注:关于登入的身份:为了安全的考虑上,通常我们都希望普通时候不要以 root 的身份登入 Linux 系统中。这里有必要说明一下 root 身份与一般身份的异同。其实在 Linux 上面实际上记录用户身份的是 UID 与 GID ,分别是用户的号码与群组的号码。举例来说,系统管理员 ( root ) 的号码即是 0 ,所以你只要进入 /etc/passwd 这个档案中,即可看到 root 有两个号码都是 0 ,基本上,你只要建立一个账号,并且将他的 UID 设定为 0 的话,那么他就具有 root 的身份了!而一般用户的号码通常在 500 以后,至于 1~499 之间,比较多会留给系统来使用!至于为什么?这仅是一个习惯而已!好了!我们都知道 root 具有无穷大的权力,例如他可以杀掉任何一个档案或者是目录!因此,若您以 root 的身份登入 Linux 系统,还不小心杀掉了任何一个档案,是可能会造成非常大的问题。除此之外,使用 root 的身份登入系统最大的问题其实是『不安全』。容易被有心人士监听你对主机下达的命令,使得密码或者是数据的外流!因此,称职的网管人员通常具有两个账号,平时以自己一般的账号使用 Linux 主机,除非系统的主要功能需要修改设定时,才以 root 的身份来登入的!所以我也建议您建立一个普通的账号来供自己使用喔!尤其是远程登录时(如 telnet 与 SSH 服务器),最好不要以 root 来登入喔!
 
  • 离开系统:

  • 离开系统就很简单啦!直接下达:
    [root@test root]# exit

    就能够离开系统,但是请注意:『离开系统并不是关机!』基本上, Linux 本身已经有相当多的工作在进行,您的登入也仅是其中的一个『工作』而已,所以当您离开时,那么该工作就停止了,不过其他的工作但此时 Linux 其他的工作是还是进行的!在后面我们再来提如何正确的关机,这里先建立起这个概念即可!
    图形模式与文本模式的切换方式
      咦!万一我在安装的时候选择的是图形模式呢?怎么办?我要如何跑到文字接口下面工作吶!?呵呵!没有关系, Linux 默认提供了六个文字接口终端机来让您登入呢!您可以直接按下:『 Ctrl 』+ 『 Alt』 加上 『F1』 ~ 『F6』 功能键 来变换不同的文字接口登入点,这也是刚刚我们上面提到的那个 tty1 的咚咚啦!当您以『 Ctrl 』+ 『 Alt』 + 『F1』登入主机时,他所在的位置就是 tty1 这个终端机,而 F2 就是 tty2 这个终端机啰!那怎么回到美美的桌面去?很简单呀!按下『 Ctrl 』+ 『 Alt』 + 『F7』就回到桌面啰! ( 注:某些 Linux distribution 会使用到 F8 这个终端接口做为他的桌面终端机,例如 OpenLinux Server 3.1.1 ,所以这部份还不是很统一!无论如何,尝试按按 F7 or F8 就可以知道啰! )
    • Ctrl + Alt + [F1] ~ [F6]  :文字接口登入 tty1 ~ tty6 终端机;
    • Ctrl + Alt + [F7]   :图形接口桌面。
      这也就是说,如果您是以文字接口登入的话,那么您可以有 tty1 ~ tty6 这六个文字接口的终端机玩,但是 图形接口 则没有任何东西。至于以图形接口登入的话,就可以使用图形接口跟文字接口啰!当然,如果您在文字接口却想要进入图形接口时,可以直接下达:
    [root@test root]# startx
     
    就可以启动图形接口啦!当然,前提是您的 XFree86 需要设定 OK 才行。那么如果您要修订一下默认的开机进入的界面呢?例如由文字接口变到图形接口,哈哈!修改一下 /etc/inittab 这个档案,但是我们还没有提到 vi 文书编辑器呀!所以这部份得到系统管理员篇幅的时候再说明!别担心,再仔细的看下去吧!
    指令下达方式与基础指令练习
    好了,既然我们是要以文字接口来介绍 Linux ,那么自然就需要先谈一谈指令下达的方式啰!一般而言,指令下达的方式为:
    [root@test root]# command [-options] parameter1 parameter2 ... 
                      指令     选项      参数(1)    参数(2) 

    说明:
    0. 上面的指令与参数之下达中,字母的大小写代表意义不同:
    1. command 为指令的名称,例如变换路径的指令为 cd 等等;
    2. 中刮号[]并不存在于实际的指令中,而加入参数设定时,通常为 - 号,
       有时候完整参数名称会输入 -- 符号; 
    3. parameter1 parameter2.. 为依附在 option 后面的参数,
       或者是 command 的参数; 
    4. command, -options, parameter1.. 这几个咚咚中间以空格来区分,
       不论空几格 shell 都视为一格; 
    5. 指令太长的时候,可以使用 \ 符号来跳脱 [Enter] 符号,
       使指令连续到下一行。

     
    实例:
    以 ls 列出 /root 这个目录中的隐藏文件与相关的属性参数;
    [root@test /root]# ls -al /root 
    [root@test /root]# ls           -al   /root
     
    上面这两个指令的下达方式是一模一样的执行结果喔!为什么?请参考上面的说明吧!关于更详细的文本模式使用方式,我们会在『Shell 与 Shell Scripts』篇幅中再来强调喔!此外,请特别留意,在 Linux 的环境中,『大小写字母是不一样的东西!』也就是说,在 Linux 底下, VBird 与 vbird 这两个档案是『完全不一样的』档案呢!所以,您在下达指令的时候千万要注意到您的指令是大写还是小写。例如当您输入底下这个指令的时候,看看有什么现象:

     
    [root@test /root]# date
    [root@test /root]# Date
    [root@test /root]# DATE
     
    很好玩吧!不一样的大小写显示的结果会有错误讯息发生呢!因此,请千万记得这个状态呦!好啰,底下我们来练习一下一些简单的指令,好让您可以了解指令下达方式的模式:
    • 显示日期的指令: date
    • 显示日历的指令: cal
    • 简单好用的计算器: bc

    • 显示日期的指令: date

    • 如果在文字接口上面,想要知道目前的时间,那么就直接在指令列模式输入 date 即可显示:
     
    [root@test root]# date 
    Wed Oct 16 15:19:59 CST 2002
     
    上面是显示:星期三, 十月十六日, 15:19 分, 59 秒,在 2002 年的 CST 时区!请赶快动手做做看呦!好了,那么如果我想要以 2002/10/16 显示目前的时间呢?那么就使用 date 的相关功能吧!
    [root@test root]# date +%Y/%m/%d
    2002/10/16
    [root@test root]# date +%H:%M
    15:32
     
    那个『 +%Y%m%d 』就是 date 的一些参数功能啦!很好玩吧!

    • 显示日历的指令: cal

    • 那如果我想要列出目前这个月份的月历呢?呵呵!直接给他下达 cal 即可!
    [root@test root]# cal
        October 2002
    Su Mo Tu We Th Fr Sa
           1  2  3  4  5
     6  7  8  9 10 11 12
    13 14 15 16 17 18 19
    20 21 22 23 24 25 26
    27 28 29 30 31
     
    基本上, cal (calendar) 这个指令可以做的事情还很多,你可以显示整年的月历情况:
     
    [root@test root]# cal 2002
                                   2002

           January               February                 March
    Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
           1  2  3  4  5                   1  2                   1  2
     6  7  8  9 10 11 12    3  4  5  6  7  8  9    3  4  5  6  7  8  9
    13 14 15 16 17 18 19   10 11 12 13 14 15 16   10 11 12 13 14 15 16
    20 21 22 23 24 25 26   17 18 19 20 21 22 23   17 18 19 20 21 22 23
    27 28 29 30 31         24 25 26 27 28         24 25 26 27 28 29 30
                                                  31
            April                   May                   June
    Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
        1  2  3  4  5  6             1  2  3  4                      1
     7  8  9 10 11 12 13    5  6  7  8  9 10 11    2  3  4  5  6  7  8
    14 15 16 17 18 19 20   12 13 14 15 16 17 18    9 10 11 12 13 14 15
    21 22 23 24 25 26 27   19 20 21 22 23 24 25   16 17 18 19 20 21 22
    28 29 30               26 27 28 29 30 31      23 24 25 26 27 28 29
                                                  30
            July                  August                September
    Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
        1  2  3  4  5  6                1  2  3    1  2  3  4  5  6  7
     7  8  9 10 11 12 13    4  5  6  7  8  9 10    8  9 10 11 12 13 14
    14 15 16 17 18 19 20   11 12 13 14 15 16 17   15 16 17 18 19 20 21
    21 22 23 24 25 26 27   18 19 20 21 22 23 24   22 23 24 25 26 27 28
    28 29 30 31            25 26 27 28 29 30 31   29 30

           October               November               December
    Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
           1  2  3  4  5                   1  2    1  2  3  4  5  6  7
     6  7  8  9 10 11 12    3  4  5  6  7  8  9    8  9 10 11 12 13 14
    13 14 15 16 17 18 19   10 11 12 13 14 15 16   15 16 17 18 19 20 21
    20 21 22 23 24 25 26   17 18 19 20 21 22 23   22 23 24 25 26 27 28
    27 28 29 30 31         24 25 26 27 28 29 30   29 30 31

     
    也就是说,基本上, cal 接的语法为:
    [root@test root]# cal [month] [year]
     
    所以,我想要知道 2003 年 2 月的月历,可以直接下达:
    [root@test root]# cal 2 2003
        February 2003
    Su Mo Tu We Th Fr Sa
                       1
     2  3  4  5  6  7  8
     9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28
     
    所以,未来您可以很轻易的就以 cal 来取得日历上面的日期啰!简直就是万年历啦! ^_^

    • 简单好用的计算器: bc

    • 如果我想要使用简单的计算器呢?很容易呀!就使用 bc 即可!在输入 bc 之后,显示出版本信息之后,就进入到等待指示的阶段,如下所示:
    [root@test root]# bc
    bc 1.06
    Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'.
      ==> 光标在这里等待您的输入
     
    好了,来基本的操作一下,在此之前,必须要先告知几个使用的运算符: 
      +  加法
      -  减法
      *  乘法
      /  除法
      ^  指数
      %  余数
     
    [root@test root]# bc
    bc 1.06
    Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'.
    1+2+3+4
    10
    7-8+3
    2
    10*52
    520
    10%3
    1
    10^2
    100
    10/100
    0
    quit==> 离开 bc 这个计算器
     
    在上表当中,黄色的字表示输入的东西,而在每个黑体的字底下就是输出的结果。咦!每个计算都还算正确,怎么 10/100 会变成 0 呢?这是因为 bc 预设仅输出整数,如果要输出小数点下位数,那么就必须要执行 scale=number ,那个 number 就是小数点位数,例如:
    [root@test root]# bc
    bc 1.06
    Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'.
    scale=3
    1/3
    .333
    340/2349
    .144
    quit
     
    好了!就是这样子啦!简单的很吧!以后你可以轻轻松松的进行加减乘除啦!

    • 一些按键的说明:

    • 在 Linux 底下有几个常用的按键,这里要给他说明一下,以方便你未来在文字接口操作的情况下,可以直接按下这些按键来帮你处理事务喔!
       
      • Ctrl + c : 在 Linux 底下,如果您输入了错误的指令或参数,有的时候这个指令或程序会在系统底下『跑不停』这个时候怎么办?别担心,如果您想让当前的程序『停掉』的话,可以输入: 『Ctrl』+『c』,这个就是中断目前程序的按键啦!
       
      • q : 有很多程序在跑的时候(例如 man 这个指令或 more 这个指令),如果您想跳出来,就按下 q 即可!这个按钮也是很多指令常定义的退出钮
       
      • [Tab] :会不会觉得打字很疲劳啊!没关系,在 Linux 的默认文字接口 ( 我们称为 BASH Shell ) 当中,有个很棒的功能,叫做是『命令与档案补全』的功能!那就是键盘左边的[Tab]这个按键啦!他有什么好处呢?例如刚刚我们要执行 cal 这个指令对吧,这个时候,你只要输入 ca[tab][tab] ,也就是输入 ca 之后,再按两次 [tab] 按键,您会发现什么事呢?啊!所以以 ca 为开头的指令都被显示出来啦!很棒吧!另外,如果你输入『 ls -al .bash[tab][tab]』会发生什么事呢?哈哈!在该目录下面所有以 .bash 的文件名都会被显示出来!所以啰,你就会知道,[tab] 按键是『很棒的功能!』在文字接口底下,要多按 [tab] 按键,可以避免打错字或下错指令喔
       
      总之,在 Linux 底下,文字接口的功能是很强悍的!要多多的学习他,而要学习他的基础要诀就是......多使用、多熟悉啦!

    • 错误讯息的查看

    • 万一我下达了错误的指令怎么办?不要紧呀!您可以藉由屏幕上面显示的错误讯息来了解你的问题点,那就很容易知道如何改善这个错误讯息啰!举个例子来说,假如我输入了 DATE 这个错误的讯息了:
    [root@test root]# DATE
    bash: DATE: command not found
     
    上面那个 bash: 表示的是我们的 Shell 的名称,那么什么是 Shell 呢?还记不记得我们在 什么是 Linux 的时候提到的『用户、用户接口、核心、硬件』的架构呢?呵呵!那个 shell 就是用户接口啰!在 Linux 底下默认的用户接口就是 bash shell 啰!
      好了,那么上面的例子说明了, bash 有错误,什么错误呢? bash告诉你:
       
        DATE: command not found ==>指令找不到啦!
       
      所以说,系统上面可能并没有 DATE 这个指令啰!就是这么简单!那如果是底下的样子呢?
    [root@test root]# cal 13 2003
    cal: illegal month value: use 1-12
     
    呵呵!这下子换到 cal 警告你啦, illegal month value: use 1-12,看不懂英文?没关系,又不是考试,赶快拿本英文字典在旁边对照着看呀!意思是说『不合法的月份值,应该使用 1-12 之间的数字!』所以各位看倌您看看,跟着屏幕的错误讯息瞧,很容易知道问题的错误是什么吧!因此,以后如果出现了问题,屏幕上的讯息真的是很重要的呢!不要忽略了他呦!

    先介绍这几个指令让您玩一玩先,更详细的指令操作方法我们会在第三篇的时候再进行介绍!好了,万一我在操作 date 这个指令的时候,手边又没有这本书,我要怎么知道要如何加参数,好让输出的结果符合我想要的输出格式呢?嘿嘿!到下一节 VBird 告诉你怎么办吧!
    在线求助:man, info
    哇! linux 还有在线求助系统啊!呵呵!这是『一定要的啦!』因为 Linux 是由所谓的『虚拟团队』开发出来的,所以虽然他的功能很多,但是指令也是有点杂乱的!如果没有联机帮助文件的话,那么肯定会让大家无所适从的!因此,不论 任何人写出了一个很好用的指令后,他也会同是附上这个指令的说明文件喔!你可以很轻松的就查询到这个指令的使用方法呢!很不赖吧!底下说一下几个在 Linux 上面很常用的求助指令喔!
    • 最广泛使用的在线查询: man
    • 用在 Linux 上面的在线查询: info
    • Linux 系统中的说明文件汇集目录: /usr/share/doc

    • man

    • 嗄?不知道怎么使用 date 这个指令?嘿嘿嘿!不要担心,我们 Linux 上面的在线求助系统已经都帮您想好要怎么办了,所以你只要使用简单的方法去寻找一下说明的内容,马上就清清楚楚的知道该指令的用法了!怎么看呢?就是找男人 ( man ) 呀!?喔!不是啦! man 是 manual (操作说明) 的简写啦!只要下达:『 man date 』马上就会有清楚的说明出现在你面前:
    [root@test root]# man date
    DATE(1)                        FSF                        DATE(1)

    NAME
           date - print or set the system date and time

    SYNOPSIS
           date [OPTION]... [+FORMAT]
           date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

    DESCRIPTION
           Display the current time in the given FORMAT, or set the system date.

           -d, --date=STRING
                  display time described by STRING, not `now'

           -f, --file=DATEFILE
                  like --date once for each line of DATEFILE

    ……………………………………(中间省略)

    ENVIRONMENT
           TZ     Specifies  the  timezone,  unless overridden by command line parameters.  If
                  neither is specified, the setting from /etc/localtime is used.

    AUTHOR
           Written by David MacKenzie.

    REPORTING BUGS
           Report bugs to <bug-sh-utils@gnu.org>.

    COPYRIGHT
           Copyright ?2000 Free Software Foundation, Inc.
           This is free software; see the source for copying conditions.   There  is  NO  war?
           ranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    SEE ALSO
           The full documentation for date is maintained as a Texinfo manual.  If the info and
           date programs are properly installed at your site, the command

                  info date

           should give you access to the complete manual.

    GNU sh-utils 2.0.11        October 2000                   DATE(1)
    (END)


    看!马上就知道一大堆的用法了!出现的这个屏幕画面,我们称呼他为 man page ,您可以在里头查询他的用法与相关的参数说明,如果要向下翻页的话,可以按下键盘的 空格键 ,也可以使用 [Page Up] 与 [Page Down] 来翻页呢!同时,如果您知道某些关键词的话,那么可以在任何时候输入『 /word 』,来主动搜寻关键词!例如在上面的搜寻当中,我输入了 /date 会变成怎样?
     

     

    此外,看到了最后面的几个信息了吗?包括了这个程序的『环境』、『作者』及相关信息等等,最重要的是那个『See Also』的内容啰,该内容告诉我们,还有其他相关的程序可以查询!呵呵!查了一个,可以知道更多个!棒!那么离开 man page 就直接输入 『q』 这个字母即可离开!整理一下,在 man page 当中可以按的键有:
     
    • 空格键:  往下翻一页;
    • page up:  往上翻一页;
    • page down: 往下翻一页;
    • home:  回到最前面;
    • end:  去到最终页;
    • /word:  搜寻 word 这个档案。
     
    那么这些 man page 放在哪里呢?不同的 distribution 通常可能有点差异性,不过,通常是放在 /usr/share/man 里头,然而,我们可以透过修改他的 man page 搜寻路径来改善这个目录的问题!修改 /etc/man.config ( 有的版本为 man.conf ) 即可啰!至于更多的关于 man 的讯息您可以使用『 man man 』来查询呦!关于更详细的设定,我们会在 Shell 的章节当中继续的说明喔!

    • info

    • 除了 man 之外,在 Linux 里面亦提供另外一种查询的方式,称为 info ,使用的方法跟 man 差不多,
    [root@test root]# info command
     
    使用 info 后面接您要查询的指令名称即可!这个 info 的功能比 man 还要更强大呢!在这个 info page 里面,你可以输入 p 及 n 往前及往后翻页,如果看到『 * text :』的项目时,将光标移到该项目上面,按下『Enter』还可以进入次页面的说明画面中!很厉害喔!不过,这个 info 目前只有 Linux 底下有,其他 Unix-Like 就没有啦!除非你有安装....无论如何,这个部分我们会在『系统管理员篇』里面再加以介绍啦!

    • /usr/share/doc

    • 刚刚上面说,一般而言,指令或者软件制作者,都会将自己的指令或者是软件的说明制作成『联机帮助文件』!但是,毕竟不是每个咚咚都需要做成联机帮助文件的,还有相当多的说明需要额外的文件!此时,这个所谓的 How-To ( 如何做的意思 ) 就很重要啦!还有,某些软件不只告诉你『如何做』还会有一些相关的原理会说明,那么这些说明文件要摆在哪里呢?哈哈!就是摆在这个目录 /usr/share/doc 啦!所以说,其实,您只要到这个目录底下,就会发现好多好多的说明文件档啦!还不需要到网络上面找数据呢!厉害吧! ^_^

    记住喔!在文字接口下,有任何你不知道的玩意儿,但是你想要了解他,请赶快使用 man 或者是 info 来查询这个玩意儿!此外,如果你想要架设一些其他的服务时,请赶快到 /usr/share/doc 底下查一查有没有该服务的说明档喔!另外,再次的强调,因为 Linux 毕竟是外国人发明的,所以中文文件确实是比较少的!但是不要害怕,拿本英文字典在身边吧!随时查阅!不要害怕英文喔!
    正确的关机方式
    OK!大概知道开机的方法,也知道基本的指令操作,而且还已经知道在线查询了,好累呦!想去休息呢!那么如何关机呢?我想,很多朋友在 DOS 的年代已经有在玩计算机了!在当时我们关掉 DOS 的系统时,常常是直接关掉电源开关,而 Windows 在你不爽的时候,按着电源开关四秒也可以关机!但是在 Linux 则相当的不建议这么做! Why?在 Windows 系统中,由于是单人假多任务的情况,所以即使你的计算机关机,对于别人应该不会有影响才对!不过呢,在 Linux 底下,由于每个程序(或者说是服务)都是在在背景下执行的,因此,在你看不到的屏幕背后其实可能有相当多人同时在你的主机上面工作,例如浏览网页啦、传送信件啦以 FTP 传送档案啦等等的,如果你直接按下电源开关来关机时,则其他人的数据可能就此中断!那可就伤脑筋了!此外,最大的问题是,若不正常关机,则可能造成文件系统的毁损(因为来不及将数据回写到档案中,所以有些服务的档案会有问题!)。正常情况下,要关机时需要注意底下几件事:
    • 观察系统的使用状态:如果要看目前有谁在在线,可以下达 who 这个指令,而如果要看网络的联机状态,可以下达 netstat -a 这个指令,而要看背景执行的程序可以执行 ps -aux 这个指令。使用这些指令可以让你稍微了解主机目前的使用状态!当然啰,就可以让你判断是否可以关机了(这些指令在后面 Linux 常用指令中会提及喔!)
    • 通知在线使用者关机的时刻:要关机前总得给在线的使用者一些时间来结束他们的工作,所以,这个时候你可以使用 shutdown 的特别指令来达到此一功能。
    • 正确的关机指令使用:例如 shutdown 与 reboot 两个指令!
    所以底下我们就来谈一谈关于这个关机的正确指令用法啰!
    • 将数据同步写入硬盘中的指令: sync
    • 最正确的关机指令: shutdown
    • 重新启动: reboot
    • 关机啰: halt

    • sync

    • 在 Linux 系统中,为了加快数据的读取速度,所以,默认的情况中,某些数据将不会直接被写入硬盘,而是先暂存在内存当中,如此一来,如果一个数据被你重复的改写, 那么由于他尚未被写入硬盘中,因此可以直接由内存当中读取出来,在速度上一定是快上相当多的!不过,如此一来也造成些许的困扰,那就是,万一当你重新开 机,或者是关机,或者是不正常的段电的情况下,由于数据尚未被写入硬盘当中,哇!所以就会造成数据的更新不正常啦!那要怎么办呢?这个时候就需要 sync 这个指令来进行数据的写入动作啦!直接在文字接口下输入 sync ,那么在内存中尚未被更新的数据,就会被写入硬盘中!所以,这个指令在系统关机或重新启动之前,很重要喔!最好多执行几次!( 注:这个指令也只有 root 可以执行喔! )
    [root@test root]# sync
     
  • shutdown

  • 好了,由于关机有种种的限制因子在,所以只有 root 有权力关机而已喔!嗯!那么就来关机试试看吧!我们较常使用的是 shutdown 这个指令,而这个指令会通知系统内的各个行程( processes ),并且将通知系统中的 run-level 内的一些服务来关闭之( run-level 会在后面告知喔 )。shutdown 可以达成:
     
    • 可以自由选择关机模式:是要关机、重新启动或进入单人操成模式均可;
    • 可以设定关机时间: 可以设定成现在立刻关机, 也可以设定某一个特定的时间才关机。
    • 可以自定义关机讯息:在关机之前,可以将自己设定的讯息传送给在线 user 。
    • 可以仅发出警告信:有时有可能你要进行一些测试,而不想让其他的使用者干扰,或者是明白的告诉使用者某段时间要注意一下!这个时候可以使用 shutdown 来吓一吓使用者,但却不是真的要关机啦!
    • 可以选择是否要 fsck 检查文件系统 。
     
    那么 shutdown 的语法是如何呢?聪明的读者大概已经开始找『男人』了!没错,随时随地的 man 一下,是很不错的举动!好了,简单的语法规则为:
    [root@test root]# /sbin/shutdown [-t 秒] [-arkhncfF] [时间] [警告讯息]
    实例:
    [root@test root]# /sbin/shutdown -h 10 'This server will shutdown after 10 mins'
    告诉大家,这部机器会在十分钟后关机!并且会显示在目前登入者的屏幕前方!
    至于参数有哪些呢?以下介绍几个吧!

    -t sec  : -t 后面加秒数,亦即『过几秒后关机』的意思
    -k      : 不要真的关机,只是发送警告讯息出去!
    -r      : 在将系统的服务停掉之后就重新启动
    -h      : 将系统的服务停掉后,立即关机。 
    -n      : 不经过 init 程序,直接以 shutdown 的功能来关机
    -f      : 关机并开机之后,强制略过 fsck 的磁盘检查
    -F      : 系统重新启动之后,强制进行 fsck 的磁盘检查
    -c      : 取消已经在进行的 shutdown 指令内容。

     
    此外,需要注意的是,时间参数请务必加入,否则会自动跳到 run-level 1 (就是单人维护的登入情况),这样就伤脑筋了!底下提供几个例子吧!
    shutdown -h now    立刻关机,其中 now 相当于时间为 0 的状态 
    shutdown -h 20:25  系统在今天的 20:25 分会关机 
    shutdown -h +10    系统再过十分钟后自动关机 
    shutdown -r now    系统立刻重新启动
    shutdown -r +30 'The system will reboot' 
                     再过三十分钟系统会重新启动,并显示后面的讯息。 
    shutdown -k now 'This system will reboot' 
                     仅发出警告信件的参数!系统并不会关机啦!吓唬人!
     

  • reboot; halt; poweroff

  • 这三个指令差不多,用途上有些不同而已!那个 reboot 其实与 shutdown -r now 几乎相同!不过,建议在关机之前还是将数据回填的指令下达一次再说:
    [root@test root]# sync; sync; sync; reboot
      就可以啦!通常我如果忘记 shutdown 的指令,或者是怕麻烦,都是使用上面说的这一个指令来重新启动,并且在听到『逼』的一声时,立刻将 Linux 主机的总电源关闭!如此亦可达到关机的目的呀!此外, halt 与 poweroff 也具有相同的功能喔!不要担心,使用 man 去查询一下下吧! ^_^
    开机过程遇到的问题解决
    扇区错乱
    在开机的过程中最容易遇到的问题就是硬盘可能有坏轨或扇区错乱(数据损毁)的情况,这种情况虽然不容易发生在稳定的 Linux 系统下,不过由于不当的开关机还是可能会造成的,原因可能有:
    • 最可能发生的原因是因为断电或不正常关机所导致的硬盘磁道错乱, VBird 就曾经发生过多次因为跳电,家里的主机又没有安装不断电系统,结果就导致硬盘磁道错乱了!
    • 硬盘使用率过高也是一个可能的原因,例如你开放了一个 FTP 服务,里面有些数据很有用,所以一堆人抢着下载,如果你又不是使用较稳定的 SCSI 接口硬盘,仅使用 IDE 接口的硬盘,虽然机率真的不高,但还是有可能造成磁道错乱的(这个问题其实在 Windows 系统下更容易发生哩!)。
    解决的方法其实很简单,也可能很困难,如果您的根目录『/』并没有损毁,那就很容易解决,如果根目录已经损毁了,那就比较麻烦!
    • 如果根目录没有损毁:假设你发生错误的磁盘区块是在 /dev/hda7 这一块,那么在开机的时候,屏幕应该会告诉你: press root pass word or ctrl+D : 这时候请输入 root 的密码登入系统:

    •  
      • 在光标处输入 root 密码登入系统,进行单人单机的维护工作;
      • 输入 fsck /dev/hda7 (fsck 为指令, /dev/hda7 为错误的磁盘区块,请依你的情况下达参数),这时屏幕会显示开始修理硬盘的讯息,如果有发现任何的错误时,屏幕会显示:clear [Y/N]?的询问讯息,就直接输入 Y 吧!
      • 修理完成之后,以 reboot 重新启动啰!
    • 如果根目录损毁了:一般初学者喜欢将自己的硬盘只划分为一个大区块,亦即只有根目录,那硬盘区块错乱一定是根目录的问题啰!这时你可以将硬盘拔掉,接到另一台 Linx 系统的计算机上,并且不要挂载(mount)该硬盘,然后以 root 的身份执行 fsck /dev/hdb1 (/dev/hdb1 指的是你的硬盘装置名称,你要依你的实际状况来设定),这样就 OK 啰!
    • 如果硬盘整个坏掉:如果硬盘实在坏的离谱时,那就换一颗吧,如果不愿意换硬盘,那就重灌 Linux 吧,并且在重灌的时候,于 Format 项目中,选取『error check』项目,只是如此一来,format 会很慢,并且,何时会再坏掉也不确定!最好还是换一颗吧!
    预防的方法:
    • 妥善保养硬盘:例如:主机通电之后不要搬动,避免移动或震动硬盘;尽量降低硬盘的温度,可以加装风扇来冷却硬盘;或者可以换装 SCSI 硬盘。
    • 划分不同的磁盘区块:如果诸位看官还记得的话,应该知道 Redhat 安装的方法可以分为四五种,有 upgrad, Server, Workstation 等等的,这些咚咚不一样的地方就在于磁盘划分的不同啦!通常我们会建议划分下列的磁盘区块:
      • /
        /boot
        /usr
        /home
        /var
      这样划分有些好处,例如 /var 是系统默认的一些数据暂存或者是 cache 数据的储存目录,像 e-mail 就含在这里面。如果还有使用 proxy 时,因为常常存取,所以有可能会造成磁盘损坏,而当这部份的磁盘损坏时,由于其他的地方是没问题的,因此资料得以保存,而且在处理时也比较容易!


    忘记 root 密码
    常常有些朋友在设定好了 Linux 之后,结果 root 密码给他忘记去!要重新安装吗?!不需要的,你只要以单人维护模式登入即可更改你的 root 密码喔!不过,目前的开机选单主要有 LILO 与 Grub 两种,这两种模式并不相同,有必要来说明一下:
    • LILO:

    • 您只要在出现 Lilo 选单的时候,输入:(请注意,如果是 Red Hat 7.0 以后的版本,会出现图形接口的 lilo ,这个时候请按下 [Ctrl] + x 即可进入纯文本接口的 lilo 啰!)
    以进入单人单机维护模式(即为 run-level 1 ),然后再输入 passwd 这个指令,就可以直接更改 root 的密码啰!同时,如果图形接口无法登入的时候,也可以使用此一方法来进入单人单机的维护工作,然后再去修改 /etc/inittab 改变一下登入的默认模式,如此一来就可以在下次开机的时候以文本模式登入啰!同时请注意!如果您在设定启动的名称的时候,已经改变了启动的名称,例如我都喜欢在名称之后加上核心码,例如:Red-Hat-2.4.7,这个时候我就必须在 boot: 底下输入:
    另外,您可能会遇到 Lilo 的开机问题,这个时候建议您先参考一下底下这一篇讨论,未来还会再次提到 lilo 的设定问题!
    关于 Lilo !
    • Grub:

    • grub 做为启动文件,要进入单人维护模式就比较麻烦一些!请回到 上面的图示 中查看一下,关于 grub 的图标,看到该图标的底下有些说明对不对!?对啦!这个时候,请按下『 e 』进入编辑画面,这个时候,你的画面会有点像底下的样子:
    此时,请将光标移动到 kernel 那一行,再按一次『 e 』进入 kernel 该行的编辑画面中,然后在出现的画面当中,最后方输入 single :
    再按下『 Enter 』确定之后,按下 b 就可以 boot 看看啦! 关于 LILO 与 grub 我们会在后面继续加以介绍,这里先有概念即可!不过,并非所有版本的 Linux 皆可使用此一方法!例如 OpenLinux 就无法进入单人维护模式,因为他的单人维护模式『仍然需要输入 root 的密码!』哇!真是可怕吶!这个时候怎么办?呵呵!别担心,现在你还不会,看完了后面几个章节之后,您就一定会啦! ^_^
    本章习题练习 ( 要看答案请将鼠标移动到『答:』底下的空白处,按下左键圈选空白处即可察看 )
    • 请问如果我以文本模式登入 Linux 主机时,我有几个终端机接口可以使用?如何切换各个不同的终端机接口?

    • 答:
        共有六个, tty1 ~ tty6 ,切换的方式为 Crtl + Alt + [F1]~[F6],其中, [F7] 为图形接口的使用。
    • 在 Linux 系统中, VBird 与 vbird 是否为相同的档案?

    • 答:
        两者为不同的档案,因为大小写不一样!
    • 我想要知道 date 如何使用,应该如何查询?

    • 答:
        最简单的方式就是使用 man date 或 info date 来查看,如果该套件有完整说明的话,那么应该也可以在 /usr/share/doc 里面找到说明档!
    • 我想要在今天的 1:30 让系统自己关机,要怎么做?

    • 答:
        shutdown –h 1:30
    • man page 的配置文件在哪里?

    • 答:
        /etc/man.config 有的 distribution 会定义为 /etc/man.conf
    • 我想要知道 2003 年 5 月 2 日是星期几?该怎么做?

    • 答:
        最简单的方式直接使用 cal 5 2003 即可找出 2003 年 5 月份的月历。
    • 使用 man date 然后找出显示目前的日期与时间的参数,成为类似:2002/10/16-20:03

    • 答:
        date +%Y/%m/%d-%H:%M
    • 若以 X-Window 为预设的登入方式,那请问如何进入 Virtual console 呢?

    • 答:
        可以按下 [Ctrl] + [Alt] + [F1] ~ [F6] 进入 Virtual console ( 共六个 );
        而按下 [Ctrl] + [Alt] + [F8] 或 [F7] 可回到 X-Window 的 desktop 中!

    2002/07/16:第一次完成吧?
    2003/02/06:重新编排与加入 FAQ
    2004/05/01:在 shutdown 的指令部分,修改 shutdown -k "messages" 成为 shutdown -k now "messages",很抱歉,这部份写太快,写错了!

    Designed by VBird during 2001-2004.  Aerosol Lab. 

    本网页主要以Firefox配合解析度 1024x768 作为设计依据     鸟哥自由软件整合应用研究室