Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1854357
  • 博文数量: 237
  • 博客积分: 9995
  • 博客等级: 中将
  • 技术积分: 2890
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-30 10:33
文章分类

全部博文(237)

文章存档

2011年(1)

2007年(59)

2006年(177)

我的朋友

分类: BSD

2006-04-30 14:00:13

FreeBSD全能服务器安装手册之基础篇

 

更新记录:

2006-3-26修改了一些安装错误,并对文章版式进行了调整

2006-3-29增加相应基础知识

############################### BSD基础知识######################################

BSD基础知识

 

问:如何将 man 文件转为文本文件?

 

答:如要将 ls man 手册转为文本文件,命令如下:

 

man ls | col -b > outfile

 

 

 

问:如何快速切换当前目录?

 

答:在 UNIX 下要在切换目录是非常方便的,以下列出各个快速切换当前目录的命令。

 

cd .. 返回上级目录

 

cd ../.. 进入上二级目录

 

cd - 返回上一次进入的目录

 

cd 进入用户自己的主目录

 

cd ~ 进入用户自己的主目录

 

注意:因为 UNIX 下的命令输入格式非常严格,所以不能像在 DOS 下那样将命令和参数连在一起输入,如要进行上级目录,在 DOS 下可能这样输入 cd.. 但在 UNIX 下,系统会说找不到 cd.. 这个命令,正确的输入是要在命令和参数之间有一个空格 cd ..

 

 

 

问:让 ls 只显示目录名

 

答:ls -l | grep ^d

 

 

 

问:让 ls 只显示文件名

 

答:ls -l | grep ^f

 

 

 

问:让 ls 以颜色显示目录名和文件名

 

答:ls --color=auto ( under linux )

 

要在 FreeBSD 下让 ls 以颜色显示目录名和文件名,需要安装 colorls 这个程序。可用 pkg_add 来进行安装,安装完成后,在 /etc/profile 或用户主目录下的 .bash_profile 文件中加入:

 

alias ls=ls -G

 

以后运行 ls 时,即会以颜色显示目录名和文件名。

 

 

 

问:修改 FreeBSD 的登录提示信息

 

答:每一次登录系统,系统都会派生一个 gettty 进行来响应用户的登录请求,此时 gettty 会向用户显示登录提示信息,而这些提示信息是由 gettty 的配置文件 /etc/gettytab 指定的,我们可以对 /etc/gettytab 进行修改来修改登录的提示信息。

 

 

 

问:如何加快 FreeBSD 的启动速度?

 

答:将 autoboot 0 加入到 /boot/loader.rc 里,可以不用等 10

 

 

 

问:如何以 root 的身份远程登录系统?

 

答:要对远程的系统进行管理就需要用到远程登录。但在安全上的考虑,root 是不能直接远程登录系统,所以要以 root 的身份远程登录系统就要另想办法。我们可以先以一个普通用户的身份来登录系统,然后利用 su 功能将自身变成 root 的身份。这样就基本上同以 root 登录的效果是一样的。但有一些问题是要注意的:1、用 su 是,如果指定 - 参数,将会在转换身份时执行转换后用户的环境变量设置,即读即用户目录下的 .bash_profile bash),如果只用 su 命令,则不会读取该文件的内容。2、要转换身份的普通用户必须是 wheel 组的成员,否则不能使用 su 命令转换成超级用户的身份。

 

 

 

问:如何快速引用主目录的文件?

 

答:~ 是指用户自己的主目录,所以如果用户要在其它目录引用自己的目录时,可以用以下的快捷方式。

 

cp ~/myfile /tmp 将用户的主目录下的 myfile 文件拷贝到 /tmp 目录下。

 

 

 

问:如何只显示子目录?

 

答:ls -l | grep ^d

 

 

 

问:如何只显示文件?

 

答:ls -l | grep ^-

 

 

 

问:如何统计当能目录下的子目录数?

 

答:ls -l | grep ^d | wc -l

 

 

 

问:如何统计当能目录下的文件数?

 

答:ls -l | grep ^- | wc -l

 

 

 

问:为什么不能进行象“pub-mail”这样的目录?

 

答:在 UNIX 下,shell 是用 - 来指参数的,所以要进行象“pub-mail”的目录时,shell 会认为 pub 是一个目录而 mail 是一个参数,所以是不能进行正确操作的。要进行这样的目录,只要在输入时在 - 前面加入 \ 即可。

 

cd pub\-mail

 

或用 "" 括起来:

 

cd "pub-mail"

 

 

 

问:如何解压扩展名为的 .tgz .tar.gz文件?

 

答:以扩展名 .tgz .tar.gz 结尾的文件是 tar 命令和 gzip 命令的结晶品。所以要解开以 .tgz 结尾的文件时,就需要用到 tar gzip 命令。 假如要解压的文件名为 myTGZfile.tgz,操作方法如下:

 

gzip -D myTGZfile.tgz | tar xvf -

 

也可以直接用 tar 命令解压

 

tar zxvf myTGZfile.tgz

 

还可以用 tar -C 参数指定解压后的目标目录。即如果要将文件解压到 /usr/local 目录下,不必将文件拷贝到 /usr/local 下再解压,可以在任何一个目录将该文件解压,然后用 -C 参数指定解压的目标目录 /usr/local,操作如下:

 

tar zxvf myTGZfile.tgz -C /usr/local

 

 

 

问:如何查找指定的正在运行的进程?

 

答:如要找名为 httpd 的进程,操作如下:

 

ps -auwx | grep httpd

 

 

 

问:用 mail 发送带附件的邮件

 

答:用重定向的方法可使 mail 发送带附件的邮件,操作如下:

 

mail charles@netease.com -s "Hi,friend!" < attach.file

 

 

 

问:如何重启一个进程?

 

答:如果刚刚修改了 httpd 的配置文件,可以用重启 httpd 进程的方法来让 httpd 重读 httpd 的配置文件,使新设置的内容生效。操作如下:

 

首先找出 httpd 的进程 IDPID

 

ps -auwx | grep httpd

 

kill -HUP httpd's PID

 

 

 

问:用 nohup 命令让用户退出后,用户的进程也可以继续运行

 

答:当用户退出登录后,用户所运行的程序会被自动 kill 掉,因为这些进程是承继用户的 shell 运行的,如果用户退出后,用户的 shell 也会被 kill 掉,那么那些由 shell 派生的进程自然会被 kill 掉。要让用户的进程在用户退出后也可以一直运行,可用 nohup 命令,操作如下:

 

nohup myProgram &

 

这样用户的 myProgram 进程会在后台运行。并且,当用户退出后,该进程也会一直运行,直至被用户或 root kill 掉或关机。

 

注意:因为用 nohup 运行的程序不会在显示器上显示运行信息,所以所有的信息会被保存在一个以进程 + .output 命名的文件里。

 

 

 

问:最近装了台FreeBSD4.0,两块网卡, 配置网卡的时候提示什么 no duplicate,到是不影响使用,但屏幕老提示: /kernel : arp : xxx.xxx.xxx.xxx is on 网卡一 but got reply from 00:a 0:24:26:ab:a0 on 网卡2 ,两块网卡在同一个网段.我想知道我如何禁止掉它? 如果必须修改内核源代码,那请问在什么地方修改?

 

1 :它仅仅是个log信息,不是错误,如果你一定要去掉这个信息的话,它在 /usr/src/sys/netinet/if_ehter.c

log(LOG_ERR, "arp: %s is on %s%d but got reply from %6D on %s%d\n",...);

 

去掉这句就可以了.

 

(由 phj 发表)

 

2 :使用arp命令进行静态arp映射,可能会防止这种错误信息。

 

(由 wb 发表)

 

(摘自 maillist

 

 

 

 

问:如何将文件容量变为 0 字节?

 

答:如何要将文件 access_log 文件的容量变为 0 字节,可用以下命令:

 

cp /dev/null access_log

 

 

cat /dev/null > access_log

 

 

 

 

问:如何让启动脚本的设置生效?

 

答:我们通常会在 .bash_profile 等启动脚本里加入常用的设置,以免每次登录都要设置一次,但这个脚本只在用户登录时才会被读取。那么有没有办法让里面设置的内容即时生效呢?用以下方法即可:

 

source .bash_profile

 

也可以直接运行它一次:

 

sh .bash_profile

 

 

 

问:如何查看已输入的命令?(以 bash 为例)

 

答:当用户登录后,用户所输入的命令都会记录在用户目录下的 .bash_history 这个文件里。用 cat .bash_history 即可查看已输入的命令。

 

 

 

问:程序出错导致“死机”了怎办?

 

答:有时程序出现错误,可能会导致控制台不响应,出现死机现象。其实这时并不是机器的硬件出错,而只是程序不响应而已。只要从另外一个控制台登录(alt + Fx),然后用 ps auwx 查出出错程序的 PID,然后用 kill -9 PID 将其进程杀死即可。这样系统又可以继续进行各方面的操作了。

 

 

 

 

 

###################################基本设置#######################################

setenv PACKAGEROOT "ftp://ftp.tw.freebsd.org"

设置环境变量使pkg_add –r 源代码安装方式选择较快的服务器下载二进制软件安装

pkg_add -r cvsup-without-gui

下载并安装二进制代码程序cvsup-without-guicvsup-without-gui无图形支持在文本方式下工作的软件用来同步代码及ports用。)

 

 

 

编辑/etc/rc.conf

ee /etc/rc.conf

 

增加以下用来停止sendmail

sendmail_enable="NO"

sendmail_submit_enable="NO"

sendmail_outbound_enable="NO"

sendmail_msp_queue_enable="NO"

 

mkdir /usr/home/chb/pkg_info

rehash

pkg_info | col -b > /usr/home/chb/pkg_info/pkg_info_cvsup-without-gui.txt

(主要是记录安装的软件,用来以后分析软件包的关联性)

 

 

################################同步系统代码###################################

 

cvsup -g -L 2 -h cvsup.tw.FreeBSD.org /usr/share/examples/cvsup/standard-supfile

(注意standard-supfile这个文件同步前一定要查看里面内容是否正确[*default release=cvs tag=  ]    默认的情况下可能会把代码同步到当前的最新版本当然这个最新版本可能是current所以一定要指定

我的写法是:

*default release=cvs tag=RELENG_5_4  意思是同步到FreeBSD5.4的当前稳定版代码

还有就是值得注意的是

目前同步代码可以选择两个文件

一是stable-supfile

二是standard-supfile

 

 

stable-supfile     一般已经指定了同步代码的版本,一般也不需要设定!但是用FreeBSD5.2.1的朋友们就需要注意了因为FreeBSD5.2.1会把代码同步到4系的最新版,我一直没明白FreeBSD开发小组为什么会这么做!一旦没有修改就同步的话,轻则造成部分软件无法使用重则造成内核错误根本就无法进入系统!我可亲身经历过

 

standard-supfile    我认为同步前最好核对一下里面关于同步代码版本的部分。

 

至于为什么选择standard-supfile而不选择stable-supfile我可是经过N次的重做才确定用standard-supfile

 

登陆系统后运行uname –v查看系统版本号你会发现

standard-supfile同步的系统显示的是FreeBSD 5.4-RELEASE-p4 #0: Sat Jul 16 09:29:22 CST 2005 chb@ns1.tjhaina.net:/usr/obj/usr/src/sys/GENERIC

注意这里的5.4-RELEASE-p4stable-supfile是不会出现p4

当然这只是我个人的做法)

rehash

 

 

##############################同步ports软件包##################################

cvsup -g -L 2 -h cvsup.tw.FreeBSD.org /usr/share/examples/cvsup/ports-supfile

rehash

 

 

################################编译系统内核###################################

进入内核编辑区域

cd /usr/src

 

多线程支持加快编译速度(注意:cpu的占用率会升高)

make -j4 buildworld

 

备份原有内核

cd /usr/src/sys/i386/conf

cp GENERIC  /root/GENERIC.OLD

 

编辑内核

ee NS1

 

建立内核

cd /usr/src

make buildkernel

 

安装内核

make installkernel

 

重新启动计算机

shutdown -r now

 

mergemaster -p

更新系统配置文件。这个命令后会跟随多个提示问题建议仔细阅读后做出选择如果是安装系统后第一次同步代码并是在没有安装任何软件的情况下可以考虑执行mergemaster –ai

“跳过询问信息选择全部更新”

提示如下

www# mergemaster -p

 

*** Creating the temporary root environment in /var/tmp/temproot

 *** /var/tmp/temproot ready for use

 *** Creating and populating directory structure in /var/tmp/temproot

 

 

 

*** Beginning comparison

 

 *** Temp ./etc/master.passwd and installed have the same CVS Id, deleting

 *** Temp ./etc/group and installed have the same CVS Id, deleting

 

*** Comparison complete

 

Do you wish to delete what is left of /var/tmp/temproot? [no] yes

//我选择了yes删除/var/tmp/temproot

//将会有以下显示结果

*** /var/tmp/temproot has been deleted

 

grep: /etc/make.conf: No such file or directory

 

*** Comparing make variables

 

*** From /etc/make.conf

*** From /usr/src/share/examples/etc/make.conf

 

 

 

 

 

更新系统配置文件

cd /usr/src

make installworld

 

mergemaster

shutdown -r now

 

 

 

删除/usr/obj以防影响下一次编译内核

cd /usr/obj

chflags -R noschg *

rm -rf *

 

 

阅读(1773) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~