大概在 1999~2000 年期间为了防止自己忘记所作的学习心得纪录!
1999 年初次接触 Unix 系统,1999 年底接触 Red Hat 6.1,而在 2000 开始撰写一些心得文章,于是有了底下这些文本的产生。 这些文本对大家来说,可能没什么,但是对鸟哥来说,这是相当珍贵的!所有鸟站的数据起源,都是从这些文本开始的! 慢慢再将许多的指令分门别类的处理进去!网站的数据汇整,真的相当花费时间啊~
不过对于学习者来说,这些数据真的不要再读了!因为实在太老旧... 建议您前往本站查找最新版本的 Linux distribution 文章来阅读,比较不会浪费时间。最新文章请前往鸟站首页查阅啰!
先说明一下,基本上虽然 Linux 目前对于图形界面的使用已经支持的相当的不错,但是对于一些比较细微的设置方面,毕竟是比不上使用传统的文本接口来的有效!并且,使用文本接口来设置对于了解 Linux 有一定的帮助,毕竟 Linux 与 MS 的咚咚是不太相同的!鸟哥特别建议大家使用文本接口来解决问题!除此之外,使用文本接口登录 Linux 对于系统资源的损耗也比较少,相对的,就有比较多的资源可以做为网络的用途,进而增加 Linux 的性能。尤其,在我们这个网页中,基本上是以一般被淘汰的 586 系列电脑做为主机,因此对于内存与 CPU 的性能要求并不高,所以能有效的减少系统资源的浪费就尽量的减少一些容易耗掉系统资源的废物吧!
底下我们会分门别类的将各个比较常用的指令给搬上来,你可以参考一下。另外一个最重要的地方是,在 Linux 主机上,已经内置各个指令的说明内容了,而且是很详细的在线说明,你可以使用:
[root@tsai root]# man command <=== command 为你欲查找的指令名称 [root@tsai root]# info command 在上表中,针对 command 这个指令你可以使用 man 或者是 info 来查找他的功能与说明,例如你要查寻 ls 这个指令时,你可以输入: man ls 或 info ls 来查找一下!适当的利用在线查找对于你的英文及相关的指令功能有一定程度的帮助喔!
这套软件在 Windows 及 Linux 系统中都存在,只是接口有点不很相同就是了。基本上,这个程序是 user 端用来连接登录远程主机的。例如鸟哥人在台南,但是我可以在台南使用可以连上 Internet 的电脑,经由 telnet 连接上家里的 Linux 主机,而进行设置!感觉上就好像在家里玩自己的 Linux 主机一样!
一般来说,如果你是使用 Winodows 系统,则你可以在『开始』-->『运行』后,输入 telnet xxx.yyy.zzz.qqq ,其中, xxx.yyy.zzz.qqq 为 IP 地址,则可以连上主机(或者是 BBS )啰。当然,如果您是在 Linux 系统下,亦可直接输入 telnet xxx.yyy.zzz.qqq 来连上主机或BBS喔!
语法: telnet 主机地址(或主机名称)
登录系统的指令,在远程进入系统时,程序会自动运行。假设你所要登录的系统主机为 sun.os.test.com ,则你可以在 Windows 底下的 Telnet 软件,或其他软件上,运行:
telnet sun.os.test.com
则会出现如下的画面:
SunOS 5.7 login: username
Password:sun# _
你只要有 username 及 pass word 就可以登录系统啦!在你登录系统后, sun# 是提示字符,相当于古早的 C:\> 的意思!
shutdown这是离开 Linux 系统的指令,相当于 login out 的意思。
sun# exit Linux 用来关机的指令,这个指令只有 root 才有权力下! shutdown 的用法如下:reboot
[root@tsai root]# shutdown <==系统在两分钟后关机,并发送消息给在在线的人
[root@tsai root]# shutdown -h now <==系统立刻关机
[root@tsai root]# shutdown -r now <==系统立刻重新开机
[root@tsai root]# shutdown -h 20:30 <==系统在今天的 20:30 分关机
[root@tsai root]# shutdown -h +10 <==系统在 10 分钟后关机这是鸟哥最常用来重新开机的指令(或关机),可以配合写入缓冲数据的 sync 指令动作,如下:
[root@tsai root]# sync; sync; sync; reboot
多人多任务Linux 最为人所称道的即是其多人多任务的能力,你可以在任何时刻连接上来你的 Linux 主机,并且同时做很多的工作,例如同时运行 http 的 Web 功能,同时进行 fortran 等编程语言的编辑,并同时上网聊天!你会怀疑, Windows 98 也可以做到这样的地步呀!不过,不要忘了,在 Linux 的系统下,你所做的任何工作都是独立的,你可以随时将你所不要的工作给杀掉,而且,当其中某一个程序当掉的时候, Linux 并不会当机,只要你在其他的窗口再打开一个终端接口,然后查出当机的那一个指令的 process (过程),然后将之杀掉就可以了!根本不用再重新开机!也因为这种多人多任务的强大能力,因此, Linux 系统一般来说是很少当机的,并且,由于其内存的管理功能完善,因此也不容易有 CPU 过热的情况发生(如果只是做为一般服务器使用)。
在你的 Linux 主机中,可以支持七个终端窗口接口,你可以按[Alt]+[F1].....[F7]来切换不同的终端机接口!所以当其中一个终端机接口当机的时候,你可以在另外一个终端机登录,然后查出错误的所在(使用 ps -aux 的功能),再以 kill 将错误的地方杀掉即可!
背景运行
另外一个功能,就是『背景运行』的功夫了。当你输入
[root@tsai root]# cp file1 file2 & 这一串指令的时候,表示将 file1 这个文件拷贝为 file2 ,且放置于背景中运行,也就是说运行这一个命令之后,在这一个终端接口仍然可以做其他的工作!而当这一个指令( cp file1 file2 )运行完毕之后,系统将会在您的终端接口显示完成的消息!很便利喔!
多人多任务的问题
多人多任务确实有很多的好处,但其实也有管理上的困扰,因为用户越来越多,将导致你管理上的困扰哩!另外,由于用户日盛,当用户达到一定的人数后,通常你的机器便需要升级了,因为 CPU 的运算与 RAM 的大小可能就会不敷使用!
如前所述,背景运行可以提供你在同一个终端机接口(命令模式)当中同时做很多的事情,你可以使用 & 或 [Ctrl]+[z] 来将指令放置背景中运行。例如运行 find "/" -name httpd & 这一行命令,表示将寻找 httpd 这个文件的指令放置到背景中运行的意思。另外,当你运行一个需要长时间的程序,例如运行 ftp 程序时,在程序进行当中,也可以经由按下 [Ctrl]+[z] 来将程序放置于背景中。那如何由背景中将程序在叫回屏幕上呢?请参考下一个指令 fg。fgfg 是将程序再叫回屏幕上显示的一个指令,在终端模式中输入 fg 即可。当然,如果你当时并没有程序在运行的话,系统会告诉你,并无运行中程序(no such job)。ps -aux这是察看运行中的程序的一个指令,你可以配合其参数 -aux 来运行,如下:kill
[root@tsai root]# ps -aux 则系统将会列出连同系统服务的程序,在输出的第一列中会出现 『PID』字样,在那一栏中的咚咚就是每一个程序运行的代码。例如下面的输出画面。
[root@tsai root]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 1324 532 ? S Jul16 0:14 init [3]
root 2 0.0 0.0 0 0 ? SW Jul16 0:05 [kflushd]
root 3 0.0 0.0 0 0 ? SW Jul16 0:29 [kupdate]
root 4 0.0 0.0 0 0 ? SW Jul16 0:00 [kpiod]
root 5 0.0 0.0 0 0 ? SW Jul16 0:00 [kswapd]在上图中, init 这个程序的 PID 为 1 。
这是用来杀掉运行中程序的指令,需配合 ps 这个指令,当你运行一个 ftp 程序,但是他有点当当的时候,你可以 ps -aux 这个指令查出 ftp 这个程序的代码(PID),假设其 PID 为 110 ,然后输入:
[root@tsai root]# kill 110 即可杀掉这个 ftp 程序。
cd这是用来变换工作路径的指令。一登录 Linux 系统后,root 会在 /root 下,至于用户会在缺省的 /home/username 底下,例如鸟哥的 ID 为 vbird ,则以 vbird 的身份登录后,会到 /home/vbird 这个路径下。OK!那回到上一层可以用 cd .. 而到相对路径可到 cd ../bird,至于绝对路径则是 cd /usr/sbin !注意喔,在前面的提示字符会改变路径名称!pwd
[root@tsai /root]# cd .. <== 回到上一层
[root@tsai /]# cd <== 回到用户目录
[root@tsai root]# cd /usr/bin <== 到 /usr/bin 这一个目录
[root@tsai bin]# <== 看吧!到 bin 这个目录下啰!这是显示目前所在目录的指令,例如在上个表格最后的目录是 /usr/bin 这个目录,但是提示字符仅显示 bin ,如果你想要知道目前所在的目录,可以输入 pwd 即可:ls
[root@tsai bin]# pwd
/usr/bin <== 显示路径啰!
[root@tsai bin]#这是用来显示文件名称与内容的指令,文件的内容说明已经在 这里 说明过了,在此不再重复! ls 的语法为:cat
[root@tsai bin]# ls --color 以彩色显示文件数据
[root@tsai bin]# ls -l 详细列出文件系统结构
[root@tsai bin]# ls -a 显示隐藏档 (以"."开头的文件)
[root@tsai bin]# ls -al 同时显示隐藏档与详细数据
[root@tsai bin]# ls -al|more 将文件内容以一页一页显示这是将文件内容列出的指令。例如在 /root 下有一个文件名为 .bashrc (这是系统缺省的文件,是隐藏档),你可以按下 cd 回到 /root 目录后,运行:more
上面显示的就是 .bashrc 这个文件的内容啦!基本上,cat 与 DOS 下的 type 是相同的!
[root@tsai /root]# cat .bashrc
# .bashrc# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias ll='ls -l'
alias lm='ls -al|more'是否觉得 cat 在读取较大的文件的时候会有看不到的信息呢(如果文件太大的话),这时候你可以用 more 来一页页读取喔!另外, more 也可以与其他的程序合并使用,例如 ls !(如下表中,『|』就是分隔号,可以将两个指令放在一起运行!)mkdir
[root@tsai /root]# more .bashrc
[root@tsai /root]# ls -al|more创建新的目录!例如我们要创建一个 test 的目录,你可以这样下指令:rm -irf
再运行了 ls -l 之后,你就可以看到 test 这个目录啦!
[root@tsai /root]# mkdir test
[root@tsai /root]# ls -l这是移除的指令,相当于 dos 下的 del 指令!这里要注意的是,通常在 Linux 系统下,为了怕文件被误杀,所以都已经有 -i 这个参数, -i 是指每个文件被杀掉之前都会确认一次。而如果要连目录下的东西都一起杀掉的话,就要使用 -rf 这个参数了!你可以用下面这个例子来试试看有什么不同的现象!rmdir
[root@tsai /root]# rm test
[root@tsai /root]# rm -rf testmkdir 是创建目录,而 rmdir 就是移除目录的指令。不过,若是欲移除的目录里头有文件或其他目录存在,就无法移除,这时就要用刚刚的 rm -rf 来移除啦!mv这是移动文件或目录的指令,例如我们要将 .bashrc 这个文件移动至根目录下,则:cp
而将文件移动至目前的工作目录,则加上 "." 这个字!
[root@tsai /root]# mv .bashrc /
[root@tsai /root]# mv /.bashrc .语法: mv 来源档(或目录) 目的档(或目录)
就是 copy 的意思。例如我们要将 .bashrc 这个文件拷贝到 /home 底下,可以:ln
[root@tsai /root]# cp .bashrc /home 语法: cp 来源档 目的档
ln -s 真实目录或文件 链接的目录或文件:这是链接文件或目录的指令,通常我们都会加 -s 这个参数,例如我们将 /usr/bin 这个目录连接到 /root 底下,可以这样输入:find
不过请注意喔,在你的 /root 底下的 bin 这个目录中的所有文件其实都是 /usr/bin 里面的东西,所以你如果进入 /root/bin 内乱杀东西的话,等于是将 /usr/bin 内的文件杀掉喔!
[root@tsai /root]# ln -s /usr/bin bin 语法: ln -s 来源档(或目录) 目的档(或目录)
寻找文件的指令,会将欲寻找的文件找出来,例如下面的例子:whereis
上面的意思为:在 / 目录(根目录)下寻找文件名(-name)为 bin 的文件,要注意的是,因为 Linux 的文件很多,如果你的电脑比较旧,可能会找很久...
[root@tsai /root]# find / -name bin 语法: find 路径 -name 文件名
相对于 find ,你也可以使用 whereis 这个指令来下达找寻的文件,whereis 利用曾经找过的系统信息内的数据去找文件,所以速度会很快,不过,如果 whereis 找不到的话,并不代表该文件真的不存在!这个要小心!chmod
[root@tsai /root]# whereis bin
bin: /usr/bin这是变更文件属性的指令,通常鸟哥都是以数字作为改变属性的依据;在文件的属性中, r 为4分、w 为2分, x 为1分,如果你想要让你刚创建的一个文件,让大家都看到的话,即你需要『-rw-r--r--』,这是你的三个群组的分数分别是 r+w=6, r=4, r=4,所以可以下达:chown
[root@tsai /root]# chmod 644 .bashrc
[root@tsai /root]# ls -al .bashrc
-rw-r--r-- 1 root root 216 Apr 8 13:54 .bashrc记得文件有『拥有人』及『拥有群组』吧,这个 chown 就是在改变拥有者的指令。例如你 copy 一个文件给 vbird ,但是因为你的身份是 root ,所以你 copy 过去的文件 vbird 可能不能使用,因此你需要将文件的拥有人改成 vbird 才可以!如下:chgrp
那如果想要将整个目录下的文件都改变拥有者与拥有群组呢?可以下达
[root@tsai /root]# cp .bashrc /home/vbird
[root@tsai /root]# cd /home/vbird
[root@tsai vbird]# chown vbird .bashrc
chown -R username:groupname directory (ex> chown -R root:root /root)
即可喔!作用与 chown 相似,只是在改变文件或目录的『拥有群组』。df这是用来察看硬盘空间的指令。由于我们目前将文件都创建在根目录『/』下,所以只要没有空间,则所有文件都无法拷贝进来系统。不过,若你规划出多的硬盘,则可以察看你的硬盘空间信息,如下所示:du
上面说,Filesystem 是硬盘所在的划分表, Used 是指使用掉的硬盘空间(KB),Available是剩下空间,Mounted on则是这颗硬盘代表哪一个目录。如上所示,根目录(/)在 hda5 这颗硬盘,总空间有 964312 KB,剩下可用空间为 827680KB,至于 /win98 则在 hda1 中,且全部空间有 1022080 KB。
[root@tsai /root]# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda5 964312 87648 827680 10% /
/dev/hdb5 2150420 745500 1295680 37% /home
/dev/hdb1 2016016 1419708 493896 74% /usr
/dev/hda1 1022080 349880 672200 34% /win98如果要将数据型态以 MB 数显示的话,可以输入 df -m 来达成。
这是用来察看目录内所有文件使用掉的空间的情况,如下所示:
其中, du 缺省的文件输出数据为 KB,以参数 -m 使文件数据显示为 MB。
[root@tsai /root]# du -m
mount这是将硬盘或者是光盘、软碟接挂上系统的指令!之前有提过,在 Linux 下面,每一个设备都是一个文件(或目录),而每一种设备的文件型态都不相同,因此对于 mount 后面加的参数就很重要啰:例如:fdformat
光盘设备档=/dev/cdrom、软碟设备档=/dev/fd0、硬盘设备档=/dev/hdxx。
[root@tsai /root]# mount -t iso9660 /dev/cdrom /mnt/cdrom <=光盘
[root@tsai /root]# mount -t vfat /dev/fd0 /mnt/floppy <=软碟(windows 系统档)
[root@tsai /root]# mount -t ext2 /dev/fd0 /mnt/floppy <=软碟(Linux 系统档)
[root@tsai /root]# mount -t ext2 /dev/hdc1 /mnt/harddisk <=硬盘
如上表所示, -t 是参数,至于 iso9660, vfat, ext2则是这些设备的文件型态!后面接的则是这个设备所在的目录!千万记得,这些目录需要是早已存在的,而且最好是空的目录,不然目录里面原本存在的文件会不见去!
另外,注意喔!当你 mount 上光驱或软碟的时候,请不要轻易的拿出磁片(而且光盘片也不会被你退出),因为会造成系统读取的错误!你应该用 umount 来退出!指令为
umount /mnt/cdrom (umount 设备所在目录)这是用来『低级格式化』软碟的指令。(注意:软碟的设备档为 /dev/fd0 )不必将软碟 mount 就可以格式化了,指令内容为:fdisk
注意喔!在上面的设备文件为 /dev/fd0H1440 ,其中加在 /fd0 之后的 H1440 为表示 1.44MB 的软碟容量!在低级格式化之后,还要将软碟的文件格式化为 Linux 的 ext2 之型态,则需要使用 mke2fs 指令!
[root@tsai /root]# fdformat /dev/fd0H1440 这是对硬盘(也可以对软碟喔)做分割的程序。基本的用法为=> fdisk 设备文件,假设您有一颗硬盘要重新规划,而这颗硬盘为 hdc ,则你可以输入:mke2fs
然后,按下 m 会出现 help 的菜单,要知道的大概只有两个子指令,一个是删除 partition 按 d ,一个是增加 partition 按 n,假设你要增加一个 primary partition,按下 n 再按 p 再按你要的 primary partition 号码(1-4)就可以了。假设你的 hdc 需要规划成为一个硬盘(即 hdc1)则在输入 fdisk /dev/hdc 后,需要按:
[root@tsai /root]# fdisk /dev/hdc
n(增加) -> p(primary partition) -> 1(partition 1) -> w (保存写入) -> q (离开)
同样的,分割完硬盘(或软碟)后,要以 mke2fs 格式化!这是用来将磁盘格式化成 Linux 系统档的指令。基本上,只要写入对的设备文件就可以了。例如我们要格式化软碟的话,或是新的硬盘 hdc1 ,则可以如此写:mkbootdisk
要记得的是,在你做这个格式化的动作时,软碟与硬盘均不可 mount 到 Linux 的系统中。
[root@tsai /root]# mke2fs -c /dev/fd0
[root@tsai /root]# mke2fs -c /dev/hdc1这是制作开机磁片的指令。指令很简单:badblocks
其中, `uname -r` 是目前 Linux 系统所使用的内核版本,如果你有多个内核版本的话,你以可以直接输入内核版本。例如在这个网页中所使用的内核有两个版本,一个是 2.2.12-20,另一个是 2.2.18,若要以 2.2.18 设置开机的话,可以使用: mkbootdisk --device /dev/fd0 2.2.18 !
[root@tsai /root]# mkbootdisk --device /dev/fd0 `uname -r` 这是用来检查硬盘或软碟有没有坏轨的指令,你可以用底下的方式来下达:fsck
[root@tsai /root]# badblocks -svw /dev/hdc1 这是用来检查与修正硬盘错误的指令。注意:通常只有身为 root 且你的系统有问题的时候才使用这个指令,否则在正常状况下使用此一指令,可能会造成对文件的危害!rpm
通常使用这个指令的场合都是在系统出现极大的问题,导致你在 Linux 开机的时候得进入单人单机模式下进行维护的行为时,才必须使用此一指令!
[root@tsai /root]# fsck /dev/hdc1 这是一个安装或者是解安装 RedHat 软件的指令,在 RedHat 中已经有设置了一些有点像 Windows 的软件安装功能,这就是 rpm 这套软件了!而 rpm 所安装的软件又分为两种形式,因此你可以分别使用下面两种参数对不同的文件进行安装:
这里要注意的是, rpm 的文件主要有两种形式,一种是已经经过编译的 i386.rpm 文件,令一种是未经编译的 .src.rpm 文件,两种文件形式的安装参数是不一样的,请小心注意!
[root@tsai /root]# rpm -ivh xxxxx.rpm <==将 xxxxx.rpm 文件安装于 Linux 系统中
[root@tsai /root]# rpm -ivh --nodeps xxxxx.rpm <==将 xxxxx.rpm 文件『强制』安装于 Linux 系统中
[root@tsai /root]# rpm -Uvh xxxxx.rpm <==将 xxxxx.rpm 升级
[root@tsai /root]# rpm -e xxxxx.rpm <==将 xxxxx.rpm 卸载
[root@tsai /root]# rpm -q squid <==察看 squid 这一个软件的版本
[root@tsai /root]# rpm --recompile yyyyy.src.rpm <==安装文件名为 .src.rpm 的文件!
su这是一个用来转换你身份成为 super user (系统管理员)的指令,任何人只要知道 root 的密码,就可以成为 super user,所以密码可千万不要外流呀!由于 RedHat 在主机之外的终端机上,无法以 root 的身份直接连接,所以你需要以一般身份的 user 连接之后,再以 su 指令来成为 super user:clear
[vbird@tsai vbird]# su <==输入指令
Password: <==在这里输入 root 的密码
[root@tsai vibrd]# <==看,用户名变啰!这是用来清除屏幕画面用的,没有什么太大的用处。通常是你觉得画面太乱的时候输入用的!直接输入 clear 就可以了!dmesg在开机的时候你会发现有很多的消息出现吧,例如 CPU 的形式、硬盘、光盘型号及硬盘分割表等等。但是消息都是『刷』的一声就跑过去了!这些消息有时候对于系统管理员是很重要的,因为他提供了系统的信息呀!要看这些消息你可以用 dmesg 这个指令来观看!groupadd
加上 |more 的原因是因为消息太多了,所以可以加入这个管线指令来使画面暂停!
[root@tsai /root]# dmesg|more 这是用来增加群组的指令,通常鸟哥都不用这个指令的,因为有更容易使用的指令 /bin/userconf 可以使用哩(注意,在 RedHat 7.0 以后的版本,就要使用 /sbin/userconf 哩)!useradd这是用来增加用户的指令,鸟哥通常不使用这个指令,你可以使用 /bin/userconf 这个指令,更简单易用喔(是窗口接口的喔!)(注意,在 RedHat 7.0 以后的版本,就要使用 /sbin/userconf 哩)userconf这是用来增加用户、群组等,且以窗口为接口的一个指令!如果你是以远程登录,并使用 su 指令成为 super user 的话,直接输入 userconf 可能会找不到这个指令,你可以输入: /bin/userconf 来启动这个指令!(注意,在 RedHat 7.0 以后的版本,就要使用 /sbin/userconf 哩),由于这个指令的图标较多,请到这里来看看!passwd这是用来更改密码的指令,很简单,只要在提示字符下输入 passwd ,然后输入目前的密码,再输入两次欲修改成的新密码,就修改OK了!不过要注意,密码的形式:不能与帐号相同,且需要 8 个字符以上,另外,帐号也不能太简单!否则系统会不接受!who
[vbird@tsai vbird]# passwd
Changing password for vbird
(current) UNIX password: <==这里输入目前的密码
New UNIX password: <==这里输入新的密码
Retype new UNIX password: <==这里再输入新的密码一次
passwd: all authentication tokens updated successfully这是用来视察目前在系统上的用户指令,你也可以使用 w 这个指令来下达动作。whoami
基本上,who 与 w 的功能是相同的,只是 who 仅列出用户名与登录时间,至于 w 则会列出用户的
[root@tsai /root]# who
root pts/0 Aug 2 20:43[root@tsai /root]# w
8:48pm up 4 days, 5:08, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.1.2 8:43pm 0.00s 0.38s ? -
- 来源地址(IP):就是 FROM 那一项即是IP;
- 登录时间:即是 LOGIN@ 那一项;
- 工作项目:就是 WHAT 那一项!
这是用来确认你目前的身份的指令,由于你可能会有几个身份在你的机器上,所以需要以这个指令来确认你的身份,不过由于 Linux 会将用户名写在提示字符上,所以这个指令目前比较少用到了。top这是用来指示目前系统的服务项目的动态数据。free
输入 top 之后,会出现类似上面的显示情况。上图中说明了你的内存有63124K,而下方的面版说明了目前正在运行中的工作内容!
[root@tsai /root]# top
10:14pm up 4 days, 6:34, 1 user, load average: 0.01, 0.01, 0.00
40 processes: 39 sleeping, 1 running, 0 zombie, 0 stopped
CPU states: 0.5% user, 0.3% system, 0.0% nice, 99.0% idle
Mem: 63124K av, 60844K used, 2280K free, 23604K shrd, 35648K buff
Swap: 104380K av, 1684K used, 102696K free 10788K cachedPID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
3121 root 20 0 1016 1016 820 R 0 0.9 1.6 0:47 top
1 root 0 0 380 368 320 S 0 0.0 0.5 0:04 init
2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushd
3 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kupdate
4 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kpiod
5 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kswapd
6 root -20 -20 0 0 0 SW< 0 0.0 0.0 0:00 mdrecoveryd
366 bin 0 0 308 288 228 S 0 0.0 0.4 0:00 portmap
382 root 0 0 392 376 328 S 0 0.0 0.5 0:00 apmd
435 root 0 0 488 480 388 S 0 0.0 0.7 0:00 syslogd
446 root 0 0 688 676 316 S 0 0.0 1.0 0:00 klogd这是用来察看内存的指令。quotacheck, edquota
如上图中,说明总内存容量为 63124K,而使用了 60732K,另外,虚拟内存(Swap)共有 104380K(亦即共有 100MB 的虚拟内存)。
[root@tsai /root]# free
total used free shared buffers cached
Mem: 63124 60732 2392 23136 35648 10796
-/+ buffers/cache: 14288 48836
Swap: 104380 1684 102696这些文件是用来限制用户在 Linux 主机上的硬盘使用容量。例如,有十个人同时分享一个 2G 的硬盘空间,但是有一个用户就用了 1.5 GB 的容量,那相对的,其他人可使用的空间就只有剩下 0.5G 啦!不公平对不对,而且也怕被用户填充大量的垃圾,而使用系统资源被瓜分掉!因此就有 Quota 这个咚咚的出现啦!由于运行的步骤较为繁琐,所以额外写了一个页面,请到这里来看看。
compress这是用来压缩及解压缩文件名为 .Z 的压缩档。要注意的是,用 compress 压缩的时候,会将原文件杀掉而变成文件名为 .Z 的文件,例如你压缩一个名为 bird.test 的文件,则压缩完成后只会剩下 bird.test.Z 这个压缩档!当然,解压缩的时候也是一样的,压缩档不见了,只有剩下被解压缩的文件。指令如下:gzip
上表中,解压缩也可以用 uncompress xxxxx.Z 来达成!
[root@tsai /root]# compress xxxxx <==将 xxxxx 文件压缩成为 xxxxx.Z 文件名
[root@tsai /root]# compress -d xxxxx.Z <==将 xxxxx.Z 解压缩成 xxxxx这个也是一个压缩指令,与 compress 很相似,指令的用法也相同!只是压缩的文件名为 .gz 罢了!tar
[root@tsai /root]# gzip xxxxx <==这是压缩指令
[root@tsai /root]# gzip -d xxxxx.gz <==这是解压缩指令这是一个很棒的压缩指令,这个指令可以配合 gzip 来进行整个目录的压缩!例如有一个名为 bird 的目录要被你集成成一个文件,你可以使用:tar -xvf *.tar *(其中 * 为你所要集成的目录名称)。
上面这个例子的 bird.tar 只是将 bird 这个目录整个拷贝成为一个文件而已,并没有压缩,而 bird.tar.gz 则是将 bird 这个目录压缩成为一个文件!基本上,我们都是使用 -zxvf 来压缩一整个目录的!而如果是要解压缩呢?由于有没有压缩所下的参数并不相同,所以针对两种文件也是有两种参数的组合:
[root@tsai /root]# tar -cvf bird.tar bird <==只有将目录转成一个文件,没有压缩
[root@tsai /root]# tar -zcvf bird.tar.gz bird <==压缩一整个目录成为 .tar.gz 文件
上面则是解压缩的参数!
[root@tsai /root]# tar -xvf bird.tar
[root@tsai /root]# tar -zxvf bird.tar.gz
注意了,用 compress 及 gzip 压缩及解压缩的时候,会将原文件取代掉!而使用 tar 来压缩及解压缩的时候,原文件将会与产生文件同时存在!通常我们都是使用 tar 来进行压缩或解压缩的!(当然,你还是可以使用 compress 及 gzip 来压缩一个大的文件!)
ifconfig这是用来查找目前我们这个系统的网络卡的状况的指令,可以查找 IP、子遮罩网络及网络卡的硬件信息等等。例如:route
由于上面的例子是使用两张网络卡,因此会有 eth0 及 eth1 两个接口,至于 lo 是系统内设的递归网络,这是一定会有的咚咚,而且其 inet addr(IP)一定是 127.0.0.1!另外, ppp0 则是 ADSL 拨接之后所产生的虚拟接口(对外的接口!)。在这个例子中,鸟哥使用了两张网络卡, eth0 用在内部网络, eth1 用在 ADSL 拨接,所以 eth1 就没有 address。至于第一张网络卡的网络地址是虚拟的 192.168.1.2。而真正的对外联系是 ppp0 这一个拨接接口,其 internet 是 211.74.249.38!
[root@tsai /root]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:FC:20:F1:4D
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7651977 errors:0 dropped:0 overruns:0 frame:0
TX packets:7467862 errors:0 dropped:0 overruns:0 carrier:0
collisions:961 txqueuelen:100
Interrupt:10 Base address:0x6100eth1 Link encap:Ethernet HWaddr 00:80:C8:5A:87:01
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7492497 errors:0 dropped:0 overruns:0 frame:0
TX packets:7617653 errors:0 dropped:0 overruns:0 carrier:0
collisions:289 txqueuelen:100
Interrupt:9 Base address:0x6200lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:512 errors:0 dropped:0 overruns:0 frame:0
TX packets:512 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0ppp0 Link encap:Point-to-Point Protocol
inet addr:211.74.249.38 P-t-P:172.16.11.8 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:7469726 errors:0 dropped:0 overruns:0 frame:0
TX packets:7617651 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10这是用来看你的网络通信包发送的路由情况的指令。由于通信包是借由一个一个的路由表来传递的,所以观察你的路由表,对于网络调试(debuge)就很重要啦!netstat
例如上表中,所有的通信都是借由 ppp0 这一个适配器(Iface)并且其通信闸(Gateway)为 172.16.11.8 这一个!另外,在虚拟 IP (内部网络)则是借由 eth0 (192.168.1.2)这一块网卡来连接的!
[root@tsai /root]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.2 * 255.255.255.255 UH 0 0 0 eth0
172.16.11.8 * 255.255.255.255 UH 0 0 0 ppp0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 172.16.11.8 0.0.0.0 UG 0 0 0 ppp0另外,你也可以使用 route 来加入你的路由表,假如你要将一个网络为 192.56.76.XXX 且子网络为 255.255.255.0 的位置加入你的 eth0 这个网络卡的连接处理中,就可以使用如下的语法:
[root@tsai /root]# route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0 这也是用来观察网络状况的指令。hostname
在上表黄色的部分,由于鸟哥是在另一部电脑连接进入的,所以网络地址就会不同啰!
[root@tsai /root]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 126 swks249-38.adsl.:telnet 192.168.1.15:1341 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 87643 /dev/log
unix 0 [ ] STREAM CONNECTED 116 @00000012这只是用来观看你的主机名称而已。ping
[root@tsai /root]# hostname
tsai.adsldns.org这是用来察看对方网络是否有动作的指令,这个指令亦可以在 windows 上面运行!nslookup
例如上表中,我们去观察 www.kimo.com.tw 是否有启动,看每一列的最后一行,会告诉你消息回应的时间大约是 56ms!(10-3 sec.)
[root@tsai /root]# ping www.kimo.com.tw
PING www.kimo.com.tw (202.1.237.21) from 211.74.249.38 : 56(84) bytes of data.
64 bytes from 202.1.237.21: icmp_seq=0 ttl=245 time=56.7 ms
64 bytes from 202.1.237.21: icmp_seq=1 ttl=245 time=58.0 ms
64 bytes from 202.1.237.21: icmp_seq=2 ttl=245 time=58.7 ms
64 bytes from 202.1.237.21: icmp_seq=3 ttl=245 time=52.0 ms
64 bytes from 202.1.237.21: icmp_seq=4 ttl=245 time=72.2 ms
--- www.kimo.com.tw ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 52.0/59.5/72.2 ms这是用来查找或反查找 DNS 的指令!例如我们要知道 奇摩 的网络地址,则可以如此查找:talk
系统会告诉你,我们使用的 DNS server 是 ksdns.seed.net.tw,而查找到的网址是 202.1.237.21。如果需要更详细的查找,可以用下面的方式来查!
[root@tsai /root]# nslookup www.kimo.com.tw
Server: ksdns.seed.net.tw
Address: 139.175.10.20Non-authoritative answer:
Name: www.kimo.com.tw
Address: 202.1.237.21
[root@tsai /root]# nslookup
Default Server: ksdns.seed.net.tw
Address: 139.175.10.20> set type=any <==告诉系统我们要详细的数据!
> www.kimo.com.tw
Server: ksdns.seed.net.tw
Address: 139.175.10.20Non-authoritative answer:
www.kimo.com.tw internet address = 202.1.237.21Authoritative answers can be found from:
kimo.com.tw nameserver = ns1.kimo.com.tw
kimo.com.tw nameserver = ns1.yahoo.com
kimo.com.tw nameserver = ns3.europe.yahoo.com
kimo.com.tw nameserver = ns5.dcx.yahoo.com
ns1.kimo.com.tw internet address = 210.59.144.1
ns1.yahoo.com internet address = 204.71.200.33
ns3.europe.yahoo.com internet address = 217.12.4.71
ns5.dcx.yahoo.com internet address = 216.32.74.10这是用来交谈的指令。traceroute这是用来追查通信包发送的情况,例如我们要从 seednet 的网络上查找到成大的代理服务器的通信状况,可以使用如下的指令:mail
系统会告诉你,总共通过了7个路由,并列出了每一个路由的 Internet 地址。这个东西有个好处,可以告诉你,当网络出问题时,问题是在哪一个地方!
[root@tsai /root]# /usr/sbin/traceroute proxy.ncku.edu.tw
traceroute to proxy.ncku.edu.tw (163.28.112.100), 30 hops max, 38 byte packets
1 172.16.11.8 (172.16.11.8) 128.378 ms 68.920 ms 118.313 ms
2 139.175.15.1 (139.175.15.1) 54.146 ms 38.557 ms 44.320 ms
3 R58-37.seed.net.tw (139.175.58.37) 61.339 ms 43.177 ms 39.548 ms
4 R56-162.seed.net.tw (139.175.56.162) 66.631 ms 43.182 ms 41.429 ms
5 203.72.191.222 (203.72.191.222) 65.538 ms 61.379 ms 38.887 ms
6 140.116.241.230 (140.116.241.230) 40.159 ms 46.107 ms 46.854 ms
7 proxy.tnrc.edu.tw (163.28.112.100) 38.641 ms 57.286 ms 46.380 ms这是用来收发信件的指令,详细的流程我们会在 mail 架站中提及。
date这是用来察看日期的指令。cal
[root@tsai /root]# date
Fri Aug 3 19:09:31 CST 2001这是用来叫出日历的指令。grep
[root@tsai /root]# cal
August 2001
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这是用来搜索某些特定字符的指令。例如使用 ps -aux 查找系统服务时,我们只需要知道 sendmail 是否有动作,则可以使用管线指令『|』来加入 grep 这个指令同时运作。
上表则表示 sendmail 有在运作了!
[root@tsai /root]# ps -aux|grep sendmail
root 443 0.0 1.0 2092 660 ? S Jul26 0:36 sendmail: accepti
vbird 8387 0.0 0.7 1240 492 pts/1 S 19:11 0:00 grep sendmail
ftpFTP 这个功能不用再多谈了吧?这是用来捉取网络上免费文件的一套软件。例如我们要连上交大的 FTP 站捉东西,可以如下:ncftp
[root@tsai /root]# ftp linux.cis.nctu.edu.tw
Connected to linux.cis.nctu.edu.tw.
220 ProFTPD 1.2.0rc3 Server (Linux.CIS FTP server) [linux.cis.nctu.edu.tw]
Name (linux.cis.nctu.edu.tw:vbird): anonymous <==输入 anonymous 匿名登录
331 Anonymous login ok, send your complete email address as your password.
Password: <==输入 name@server.xxx.xxx 型态的 mail-address 密码
230 Anonymous access granted, restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir <==检查网站上的目录
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
-rw-rw-rw- 1 linux adm 39491400 Aug 3 21:00 00ls-lR
-rw-rw-rw- 1 linux adm 3091546 Aug 3 21:01 00ls-lR.gz
-rw-r--r-- 1 linux wheel 232 Mar 15 22:00 00mirror.today
drwxr-xr-x 5 linux wheel 4096 Oct 29 2000 java
drwxr-xr-x 14 linux wheel 4096 Aug 2 19:31 kernel
drwxr-xr-x 4 linux wheel 4096 Sep 28 2000 mirrors
226-Transfer complete.
226 Quotas off
ftp> cd kernel/v2.4 <==进入 kernel 底下的 v2.4 目录
250 CWD command successful.
ftp> get linux-2.4.0.tar.bz2.sign <==捉下 linux-2.4.0.tar.bz.2.sign 这个档
local: linux-2.4.0.tar.bz2.sign remote: linux-2.4.0.tar.bz2.sign
200 PORT command successful.
150 Opening BINARY mode data connection for linux-2.4.0.tar.bz2.sign (248 bytes)
.
226 Transfer complete.
248 bytes received in 0.014 secs (17 Kbytes/sec)在使用 FTP 功能的时候,因为只能一次捉一个文件,所以要捉一群文件的时候就会有困扰。这时我们可以使用更容易登录匿名 FTP 站的 ncftp 来运行 FTP 功能!gftp
加上了 mget -R 目录 这个指令后,就可以将目录下的东西完全捉下来!好用吧!
[root@tsai /root]# ncftp linux.cis.nctu.edu.tw
ncftp / > mget -R kernel <==将 kernel 这个目录的东西全捉下来!这是在 X-Windows 使用的图形接口 FTP 咚咚!这个咚咚的使用方法就跟 CutFTP 很相似!
set这是用来设置或是观看目前系统的设置的指令,若只打入 set 则仅会列出目前系统的参数。uname这是用来观看系统名称的指令,可以打入 -a 参数来列出所有信息。setup
[root@tsai /root]# uname -a
Linux vbird.adsldns.org 2.2.12-20 #1 Mon Sep 27 10:25:54 EDT 1999 i586 unknown这个是常常使用来设置系统的一个指令,运行之后会有一个窗口出现,较常使用的是 System services 这一项,可用来设置开机的时候要开放的服务!lilo这是用来设置多重开机,或是开机选项的指令,详细的流程请到这里来看看!Xconfigurator这是用来简易的设置 X-Windows 的指令,当你的 X-Windows 确定是可以跑的,而你想要改变一些设置,例如:分辨率、色彩度等等,就直接使用这个指令啦!xf86config这是用来设置 X-Windows 的指令!这个指令会比 Xconfigurator 麻烦,不过当你的 X-Windows 没有办法跑的时候,这个咚咚是很好用的!
startx这是开始运行 X-Windows 的指令!netconf这是网络设置的指令!netcfg这也是网络设置的指令!XF86Setup这是在 X-Windows 下以图形接口设置 分辨率、色彩度 的设置指令。
- Q:在 Linux 上面都是一些在线的英文说明,有没有中文说明,或更详细的说明数据呢?
A:
其实在网络上已经有一票高手在进行 Linux how to 的翻译工作,这是一个很有意义的事情,因为可以让新手或者是一些有需要使用 Linux 的人,有一个很好的学习文档。你可以来下面的网址看看:
中文How-to:http://www.linux.org.tw/CLDP/
英文How-to:http://www.ibiblio.org/mdw/HOWTO/HOWTO-INDEX/howtos.html
- Q:在 Linux 中如何加入新硬盘?
A:
其实加入新硬盘的方法也是很简单的:
- 安装硬盘:关掉 Linux 主机电源,调整 Hard Disk 的 Jump (master 或 slave),串接在 IDE 的接口,请注意,留意你增加的硬盘所串接的 IDE 接口为哪一个插槽,例如你插在 IDE2 的 Master ,则你的硬盘应为 hdc;
- 添加硬件于BIOS:打开电脑后,按 del 键进入 BIOS,选择 IDE Hard Disk Detector 字样的选项,让BIOS去捉硬盘,然后再选择 Save and Exit;
- Linux 安装:开机进入 Linux 的时候,系统会告诉你有捉到一个新的硬件,你可以按 『configure』 由系统直接安装即可;
- 格式化硬盘:以 root 的身份进入 Linux 后,运行以下两个程序:
- fdisk /dev/hdc <== hdc 与你的硬盘串接的IDE接口有关,关于这个指令的介绍请参考上面的指令说明;
- mke2fs -c /dev/hdc1 <==假设硬盘全部配置成一个大硬盘,则硬盘应为 hdc1 ,以 mke2fs 将系统规划为 Linux 的系统档。
- 开机自动加载:再来则是以 vi 修改 /etc/fstab 文件,让每次开机把这个硬盘直接挂入系统中。例如 hdc1 这颗硬盘挂在 /mnt/hdc1 中,则 fstab 的文件有点像这样:(/dev/hdc1 那一行是新加入的!)
/dev/hda1 / ext2 defaults 1 1
/dev/hda5 swap swap defaults 0 0
/dev/hdc1 /mnt/hdc1 ext2 defaults 1 1- 安装完成:然后再重新开机就可以啦!
- Q:在 Linux 中如何增加新用户呢?
A:
无论是加入新用户或者是加入新群组,都可以使用 /bin/userconf 这个程序来完成,使用这个程序,只要输入 ID 及 pass word 就可以啦!(不过你必须是 root 的身份才可以运行!)详细的运行请看上面的指令说明。
- Q:在 Linux 中如何制作开机片?
A:
无论何种系统,有个开机片总是比较安心的! Linux 也是一样!虽然他很稳定,但是并不是说就不会有问题,因此制作可开机磁片以利解救 Linux 问题是一个好习惯!制作开机片的方法很简单,只要下达:就可以啦!
- mkbootdisk --device /dev/fd0 `uname -r`