FreeBSD的一些简单使用技巧
1、在 unix-like 中档案结构是蛮重要的,那么要如何去看相关档案目录结构的说明呢?
难道是 cd 到每个目录下吗?其实有更好的..
那就是用好男人 man 来看:
# man hier
2、在 console 下时,由于屏幕显示有限,有时需看前面显示的资料,这时你可:
. 按一下 Pause or Scroll Lock键后,则可利用 PageUp PageDown Up Down
Home End 等键来看前后显示的资料
. 再按一下 Pause or Scroll Lock则可回复等待输入画面.
3、 使用 pw 来管理你的帐号
在 FreeBSD 下使用 adduser 来新增帐号,有些时会满烦的,可用以下方式:
pw useradd -n -g -m -s /bin/csh
=> -m 代表建立使用者目录
●同时设密码
echo | pw useradd -n -g -m -s /bin/csh -h 0
● 删除帐号
pw userdel -n -r
=> -r 代表同时删除其 home 目录等相关资料
● 修改帐号
pw usermod -g -s /bin/csh
PS:无法修改帐号名称
● lock 及 unlock 使用者帐号
pw lock
pw unlock
4、 激活你的 screensaver
由于 FreeBSD 大多当为主机使用,都是常期不关机的,因此可将屏幕关掉,或使
用 ScreenSaver 功能..
使用 ScreenSaver 请在 /etc/rc.conf 这个档加入以下两行:
blanktime="900"
=> 以秒数为单位,如以上为 15 分钟
saver="logo"
=> logo 是 FreeBSD 的吉祥物(图型接口),另也可使用 "daemon",这是文字型式
5、 检查你的某一个 ports 版本及更新
如果要更新所有的 port 只需在 /etc/ports/ 下执行以下指令:
# make update
有时我们可能要检查某一个 ports 的版本,在每个 ports 中的 Makefile 都有这一行
PORTVERSION= x.x.x
如此就可看到这个 ports 的版本了,另外也可使用以下方式(用 grep),比如我
们想看 mod_php4 的版本
# grep PORTVERSION= /usr/ports/www/mod_php4/Makefile
PORTVERSION= 1.4.1 -> 版本讯息
如果版本太旧了,则可利用以下来更新单一 ports
a. 使用 portupgrade 或 portinstall,请用 man 查看用法
b. 到 FreeBSD 网站查询最新的 ports 信息,并抓 ports 回来更新
网址:
抓回来后在相关目录更新,例如我们抓回的是 mod_php4.tar.gz,存在 /usr/tmp/ 目录下,则解压缩的方式如下:
# cd /usr/ports/www/mod_php4
# tar xzvf /usr/tmp/mod_php4.tar.gz
如此就 ok 了..
6、 加速你的按键速度..
相信使用 FreeBSD 的人很多都是在 console 下吧,有些时,要重复某一按键速度实在很慢..
另一个问题就是 cusror 的位置有些时不太明显..
可用以下来改善:
在 /etc/rc.conf 中加入以下资料..
keyrate="fast"
cursor="blink" 或 "destructive"
7、 设定开机画面
使用 windows 的人,都知道所谓的开机画面,在 FreeBSD 下是否也有此功能呢?答案是肯定的,而且设定更为简便,请照以下 steps:
一. 首先制作一个图型文件,档案格式为 logo.pcx 或 logo.bmp,需注意的是
.bmp 的档案存盘时不用压缩,分辨率需为 640 X 480 以内(含),色阶为 256
色..
二. 将此档案 copy 到 /boot/ 这个目录下
三. 设定 /boot/loader.conf,加入以下资料
splash_bmp_load="YES" -> 如果使用 .bmp 格式,此项需设为 YES
splash_pcx_load="YES" -> 使用 .pcx,请将此项设为 YES
vera_load="YES"
bitmap_load="YES"
bitmap_name="/boot/logo.pcx" -> 请依你的档案格式更改
bitmap_type="splash_image_data"
四. 重新激活
ps: 请检查你的 kernel 中是否有设定以下资料,一般在 4.x 中都是内定值..,至于 3.x 版,没用过..^.^
preudo-device splash
如果没有,则需将此行加入并重新编绎核心.
8、 一些 console 下使用的快速键..
相信大多使用 unix-like 的使用者,还是在 console 下执行你的日常维护工作吧,那有那些按键组合可帮我们提高效率呢..
以下按键皆适用于 tcsh 及 bash..
1. 快速移动光标
ctrl+a -> 到最前面
ctrl+e -> 到最后面
2. 编辑方面
ctrl+d -> 删除光标所在字符
ctrl+w -> 删除光标所在字前面的字符
ctrl+u -> bash:将光标前所有的字及字符删掉,tcsh:删除所有字
ctrl+k -> 将光标后所有字符删掉
ctrl+b -> 下个字符
ctrl+f -> 前一个字符
ctrl+m -> 和按下 enter 的结果一样
ctrl+h -> 和按下 del 或 backspace 键一样
del 或 backspace -> 删除前一个字符
如果对按键有研究兴趣者,不彷参考 /usr/share/syscons/keymaps/ 这个目录,其中 us.iso.kbd 是一般我们使用的按键..
9、 快速切换目录
在 FreeBSD 中常常需要切换目录,有时目录名称较长、或是有大小写、或是只记得前面几个字,怎么办..
其实只要输入部份字再加上 * 这个符号就可以了..
如我们要切换到 /usr/local/ 这个目录,只需输入 cd /usr/lo* 就可以了..
如果输入 cd /usr/l* 会如何呢?则会进到 /usr/lib/ 这个目录,这是因为 shell 找到第一个符合的条件便停止了..
10、 有关时间及时区的比较
使用 FreeBSD 大多是拿来当做主机使用,那时间及时区的正确与否就非常重要
了,以下介绍如何校整时间及时区
● 时间校正
1. 使用 date 指令
格式 date [yymmdd]HHMM
说明:
yy 年数,如 02 代表 2002 年
mm 月份 01-12
dd 日数 01-31
HH 时数 01-59
MM 分钟 01-59
2. 使用对时主机
# ntpdate clock.stdtime.gov.tw
这项需能连上,其中 clock.stdtime.gov.tw 是一标准时间的主机
● 时区的设定
1. 使用 tzsetup
2. 在 /etc/ 下有个档案 localtime,这个就是本机的时区设定档案,因此我们可用个取巧方式(不经由 tzsetup),如以下:
# cp /usr/share/zoneinfo/Asia/Taipei /etc/localtime
这样是不是比较快呢..
11、 如何清空档案内容..
有时我们需将一个档案内容清空,但需保留这个档案..
一般常见的用法是用文字编辑器,如 vi 将这个档案叫出来,再将其内容全部删掉,再存盘..
这样是不是有些烦呢?
有一个更好的,使用 true 指令..
如我们要将 /var/log/httpd-access.log 清空,则下以下指令..
# cd /var/log/
# true > httpd-access.log
12、 显示目录及档案 => tree
有时需显示某个目录下所有的目录及档案,虽使用 ls 可达到部份功能,但并不是很方便..
在 dos 中,有个 tree 指令,是不是满好用的..
其实在 FreeBSD 中也有类似的指令 => tree..
以下我们就透过 ports 来 tree
# cd /usr/ports/sysutils ; make install
如此会将 tree 这个指令在 /usr/local/bin/ 这个目录下..
使用例子:
1. 显示 /usr/ 下的目录及档案
# tree /usr
2. 只显示 /usr 下的目录
# tree -d /usr
详细用法请参考 man tree
PS:可透过管道 | 及 more 来显示
如 tree /usr | more..
13、 如何检视档案类型
由于 FreeBSD 并没有像 dos 或 windows 般有扩展名的观念,因此要如何检查一个档案的类型呢?
用 file 吧..
语法: file
详细用法请参考 man file
14、 重复使用先前使用过的指令
你可以使用以下的来重复使用先前使用过的指令:
例如,我们先用 history 显示先前输入的指令:
# history
.
..
...
10 clear
11 cd /usr/local
12 ls
13 ls etc
14 cd ~
15 clear
1. 用 up down 可用上下一个指令,或是 ctrl+p ctrl+n 亦然
2. 配合 ! 的用法,例如以下(ps: 在<...>内代表要输入的东东)
!!
# !! => 重复执行上个一个指令
!<编号>
# !11 => 执行 cd /usr/local
!<指令> 可输入部份字,但前面部份需符合
# !cl
执行 15 clear 指令
! 输入部份字符,部份吻合
# !?etc?
执行 13 ls etc
以上指令在 tcsh 及 bash 下皆可使用,如此是不是可帮你省下许多时间..
15、 如何将 man 的档案印出来..
man 是大家学习 FreeBSD 的最佳资料参考来源,但在显示器上看到底不是很方便,有没有转成一般的文件档案呢?
使用 col 这个指令吧..
例我们要将 ssh2 转成 ssh2.txt,则使用以下语法:
# man ssh2 | col -b > ssh2.txt
16、 为何查不到正确的 ports 资料..
在 /usr/ports/ 下有着几千个 ports 的资料,有时我们可使用以下方式来查相关的 ports..
以下都是在 /usr/ports/ 这个目录下执行..
1. 先将 ports 资料转换成一个文字文件,如 index.txt
# make print-index > index.txt
2. 使用 make search key="...." 来查
3. 将 ports 内容转换成 README.html
用以上,可很容易的查到相关的 ports 资料,但很奇怪的是,为何我更新
一个 ports 的资料后(或 ports tree),为何会查不到,
查到的仍然是旧的资料..
原来,在 /usr/ports/ 中有一个 INDEX文件,以上的查询方式都是在这个
INDEX 档中查询,当你更新 ports 资料时,这个 INDEX 档并不会随之更新..
所以为了查询方便,我们需以手动的方式来做..
# make index
做完后,再更新 index.txt 及 README.html..
不过更新 INDEX 档需要一些时间,大约 12-30 分钟..(视计算机等级而定).
17、 用 dig 及 host 来取代 nslookup
一般我们用来检查是否有问题,大多是用以下三个指令..
nslookup
ping
traceroute
其中 nsllokup 是用来检查 dns 的相关设定, ping 用来检查自己和对方是
否通顺,而 traceroute 则是用来检查从自己的计算机到对方的计算机所经过的
线路状况..
不过以 nslookup 而言,个人觉得不是很实用,有时我们只是想单纯的查一下某
台主机或是 MX 记录,那使用 nslookup 就有点噜嗦了..
在此介绍二个好用的指令 host 及 dig,这二个指令很类似,不过效率较 nslookup 高
# host -a <主机名称> 或
=> 输入主机名称显示 dns 正向解析的部份,输入 ip 则是显示反向(ptr)
# dig <主机名称或ip>
如要显示 MX 记录
# dig 主机名称 mx
个人是觉得比 nslookup 方便多了,你觉得呢.. ^.^
当然功能不只这些,详情请 man dig 或 host..
18、 加快你的开机速度..
严格说起来,FreeBSD 的开机速度算满快的,不过中间会有个 10 秒的延迟时间
(以便让你进入 boot 的 command prompt mode),如果你嫌这10秒还是太慢了,
那你可将时间?#123;短一些..
FreeBSD 激活时会先去参考 /boot/defaults/loader.conf 档的设定,然后再参
考 /boot/loader.conf,一般我们都不去?#123;整
/boot/defaults/loader.conf 这个档,而直接?#123;整 /boot/loader.conf..
只要在 /boot/loader.conf 中加上以下这一行即可
autoboot_delay="秒数" 即可,如
autoboot_delay="7" 代表7秒
这样开机是不是更快了..
另外建议,有时间可参考一下 /boot/defaults/loader.conf 这个档案的设定,
其中有许多实用的设定哦
19、 忘了 root 密码
如果你忘了 root 的密码怎么办,这在 FreeBSD 中满好的,请照以下 steps 来处理..
1. 进入单人模式
开机后,当出现
Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [kernel] in 10 seconds...
按 space(或除了 enter 以外的键) 键则会进入 command prompt mode,同时出现一个 ok ..
这时请输入 boot -s 以进入单人模式
2. 选择 sh
进入单人模式后,会询问你要使用那个 sh,内定是 /bin/sh ,就使用这个吧,直接按 enter 跳过
3. 将所有的硬盘分割架起来
# mount -a
4. 更改密码
# passwd
长度要在 6 个以上,输入二次
5. 重新激活
# reboot
20、 有关 kernel 的激活..
kernel 对 unix-like 来说,是非常重要的一环,如果 kernel 损坏或编译出了问题,可能会导致严重的后果..
FreeBSD 一向以安全著称,在这方面有什么防护的措施呢?
FreeBSD 的 kernel 是放在 / 目录下,一般会有二个
kernel
kernel.GENERIC
如果你有编译过核心(kernel)的话,则原先的 kernel 会转换成 kernel.old,新
的核心会变成 kernel,也就是在 / 下的 kernel 档案如下:
kernel => 新编译过的核心
kernel.GENERIC
kernel.old => 原先的核心
那 kernel.GENERIC 是什么呢,这个是时所装好的,一般都不会变动,
即使编译过核心亦然,这个档案可说是救命核心,最好不要乱动,理由如下所
言..
FreeBSD 激活时,会使用 kernel 这个核心,如果这个档案不存在,则会抓 kernel.old 这个档案..
如果这二个档案不幸都不在,那怎么办..这时则会进入 command prompt mode,你必需自行输入 kernel 的名称,如
boot 如
boot kernel.GENERIC
了解以上之后,在编译核心无法正常执行时,相信各位知道如何处理了..
21、 FreeBSD 在那激活程序..
一般 FreeBSD 激活后会依序执行以下位置的程序..
1. /etc/rc.conf 这个档案内的程序,如 sendmail、sshd .. 都是在此执行,另
外要注意的是,在执行这个档案之前,会先参考 /etc/defaults/rc.conf 的设定
2. /usr/local/etc/rc.d 下的一些 .sh 文件,这些档案的权限都是被设定成 x ,如 apache samba .. 都是在此设定
3. /etc/rc.local 这里也可设定,如我要把 postfix 设定在此,只需在这个档案内加一行,如下
/use/local/sbin/postfix start &
加上 & ,就不会显示出讯息
4. 由 cron 所控制的一些档案,当时间到了,便会自动执行..
那心细的人可能会问, /etc/inetd.conf 内设定的呢?这些在第 1 项就执行了..
了解以上并时时注意是否有不明的程序在执行(可能是被人植入木马程序),也是
日常检视的重要工作..
22、 加快你的主机名称查询速度..
unix-like ,初期都是使用 hosts 这个设定文件来做主机的查询,因此有些
程序在查主机名称时,都会参照这个设定档,像 sendmail 就是一个很好的例
子..
内定第一个是会查 /etc/hosts 这个档案,因此如果里面设定有问题,则会影响到某些程序的执行..
典型的 hosts 档设定如下..以我本身的主机来说
127.0.0.1 localhost.cmlab.idv.tw localhost
61.219.230.5 cmlab.idv.tw cmlab
61.219.230.5 cmlab.idv.tw.
其中第一及第二行最后一个项目是 aliases 名称(主机别名),比如我们在主机
ping cmlab.idv.tw
和
ping cmlab
是同样的结果..
你可把一些常用的主机加到这个项目内,如有一台 mail.cmlab.idv.tw ,假设 IP 为 61.219.230.8
则在这个 hosts 中加入以下
61.219.230.8 mail.cmlab.idv.tw mail
61.219.230.8 mail.cmlab.idv.tw.
这样就行了..
另外如果有自行架设 dns server,请注意在 /etc/host.conf 这个档案,典型的档案如下:
# $FreeBSD: src/etc/host.conf,v 1.6 1999/08/27 23:23:41 peter Exp $
# First try the /etc/hosts file
hosts
# Now try the nameserver next.
bind
# If you have YP/NIS configured, uncomment the next line
# nis
由以上可以看得出来,在查询主机名称时的顺序,是先查 hosts 再查 bind 也就是 dns,你可视你的需要修改其顺序..
另外要注意的就是 /etc/resolv.conf 文件,这个是有关 dns 主机 search 的顺序,如以我的设定如下:
domain cmlab.idv.tw
nameserver 61.219.230.5
nameserver 168.95.1.1
nameserver 168.95.192.1
其中第一行是设定我的网域名称,第 2-4 行则是 dns 主机的设定,建议至少设二个以上,以免一个挂了,还有个备用的..
第2行是我的 dns 主机,3-4 行是 hinet 的 dns 主机..
了解以上并有正确的设定,是有助于主机的查询的及速度的提升..
23、 我要如何分割硬盘..
档案目录对于 FreeBSD (或者是所有 unix-like ),都是相当重要的,如开
始时,分割的不是很恰当,日后就会遇到一些麻烦,如空间不够..等问题..
那么,我们要如何分割比较恰当呢..
这就有关于你的用途及 FreeBSD 的目录架构了..
一般个人是建议你如此分割:
1. / 根目录,一般在 250 ~ 500 MB 绝对够用,以我的根目录来说,使用一年多
了,也才用了 66 MB 多。因为这个目录只是一些 kernel modules sbin bin
etc .. 等目录
2. swap 档,一般人都不知道如何设较恰档,这也没一个标准,最主要是要看你
的 ram 及硬盘而言,一般设成 1-2.5 倍(相对于你的 ram)。如你的 ram 在
256 mb 以上(含),设成一倍;如在 64 - 128 mb,则建议设成 2 倍
如要检查你的 swap 使用状况,可用以下指令来看..
# pstat -T
44/4044 files
0M/127M swap space
由以上可看出目前使用的 swap 为 0 ,设定的大小为 128 M
3. /var 目录 及 /usr 目录
这二个目录一般都会占比较大的空间,/var 的变动较小,以我个人来说,一年前设为 8 GB ,在目前只使用了不到 2GB。
但要注意的是一般的 mail 软件,都是将信件存在 /var/mail/ 中,如果你的信件很多或很大,这个部份不妨加大一些..
而 /usr 这个目录能大就给它大一点的空间,因为所的程序,或是 hone 都是在这个目录下(如果你没将 home 目录设成一个分割) ..
那这两个要如何分配呢,我的建议是 usr 和 var 的比例为 3:1,或是 2:1
4. 有些主机使用者较多,如学校单位。如果你没将 home 设成一个 partition,
则 FreeBSD 会将 home 在 /usr 目录下,如果为了管理及安全问题,则不妨
将 home 分割为单一目录..
至于大小,我想应该 3-5 GB 左右,就绝对够用了
我们来举个实际例子,假设你有一颗 40 GB 的硬盘,使用内存为 128 MB RAM,那我建议你的硬盘如此分割..
1. / => 250 MB
2. swap => 取 2 倍,即 256 MB
3. /home 如要独立出来,给它 3-5 GB
4. 剩下来的以 3:1 或 2:1 的比例设给 /usr 及 /var
以上只是一般建议,最重要的是必需了解各目录的性质及实际使用情况而予以适
当的分配,有关这方面的信息,不妨参考 man hier ..