FreeBSD的单用户模式

FreeBSD的单用户模式

什么是单用户模式

FreeBSD 在正常运行时处于多用户模式 (multi-user mode)。此时系统资源全部可用,文件系统都被挂载并可读写。系统中各个用户都可登录或执行特定命令,以及等等。而单用户 (single-user mode) 则相反。进入单用户模式后,系统资源不是全部可用,只有根文件系统 (root filesystem) 被挂载,而且只能读不能写。系统只有一个用户,也就是超级用户 root。单用户模式一般是超级用户用来执行系统维护,修复等工作的。

什么时候需要单用户模式

文件系统有不可自动修复的错误时

进入单用户模式,可以运行 fsck (或者 fsck -y),来修复文件系统。

编译安装系统时

我们需要在单用户模式下来 make installworld,以避免在升级系统和配置时造成不必要的错误。

执行其他维护,升级,修复等操作时

单用户模式下如何让根分区可读写

很简单,执行 mount -uw / 就可以了。

单用户模式下如何启动 ZFS

依次执行两个命令就行了。

#/etc/rc.d/hostid start

#/etc/rc.d/zfs start

如何进入单用户模式

当系统启动到菜单时,按下数字键 4,就能进入单用户模式。如果是老版本的 FreeBSD,或禁止了 beastie 菜单,则需要在出现 boot 提示符的时候按下任意键,然后输入 boot -s 才能启动到单用户模式。

原文链接:http://wiki.freebsdchina.org/faq/boot_and_shutdown/single_user_mode

FreeBSD下sudo的使用

FreeBSD下sudo的使用

sudo是OpenBSD的一部分,其作者是 Todd C. Miller。在 FreeBSD 中可以使用 ports 或 package 来安装。

下面来安装并使用sudo吧!!

  1)安装sudo(两种安装方法):
      a: 从 ports 安装(推荐)
         #cd /usr/ports/security/sudo
         #make install clean
      b: 通过 package 安装
         #pkg_add -r sudo

  2)配置sudo
     sudo的配置文件在/usr/local/etc/sudoers里面。sudo的配置文件不应直接编辑,而应使用 visudo 来进行修改。
     配置权限的格式如下:
        USER MACHINE=(EFFECTIVE USER)  [NOPASSWD:] COMMAND
      第一列(USER)指定要授权的帐号。第二列(MACHINE)定义在那些机器上,这条执行生效,其好处是在多台机器上使用同一份配置文件。括号里的(EFFECTIVE USER)是使用指定实际执行该命令的帐号,
      这就方便一个帐号允许用另外一个帐号来执行特定的命令,而不非得是root帐号。第四列(COMMAND)是指定的命令. NOPASSWD是可选项代表USER在sudo到某身份时不必输入该身份的密码即可执行命令。
     下面是配置sudo的简单方法:
        M-gtuiw ALL=(ALL) ALL
     指定了M-gtuiw可以在任何地点以任何身份执行整个系统的全部命令。
       %wheel ALL=(ALL) ALL
     这个命令指定了wheel这个组的用户可以在任何地点以任何身份执行整个系统的全部命令。
        M-gtuiw ALL=(apache) /usr/bin
     指定了M-gtuiw可以在任何地点但只能以apache用户身份且只能执行/usr/bin目录下的命令。
        M-gtuiw ALL= /usr/bin
     等同于M-gtuiw ALL=(root) /usr/bin

  3)设置密码在一段时间后自动退出
     Defaults:M-gtuiw     timestamp_timeout=0, runaspw, passwd_tries=1
     记住: 在 Defaults:M-gtuiw 这个地方不允许有空格出现。下同:     
     这段句子有三个功能:
     1)M-gtuiw需要root的密码才能运行sudo(句子中runaspw的缘故)。
     2)这密码没有被系统记住(因为有timestamp_timeout=0的缘故),用了一次的sudo之后当再次使用时又得输入root密码。
       如果将timastamp_timeout改为-1话,M-gtuiw只须去验证一次密码,之后将记住了M-gtuiw输入的密码,当第二次,第三次
       使用sudo的时候都不用输入root密码了直到退出登录。
       当然,其它的用户也可以这样,但须要不同的帐户和缺省值。在这里我们只改变M-gtuiw和增加一个新的用户“limda”:
          Defaults:M-gtuiw               timestamp_timeout=0
          Defaults:limda                  timestamp_timeout=-1, runaspw
          #user privilege specification
          root          ALL=(ALL) ALL
          M-gtuiw       ALL=(ALL) ALL
          limda         ALL=(ALL) ALL
       M-gtuiw和limda拥有不同的缺省值。“Defaults”影响着每个用户使用sudo不同的权限。

  4)sudo默认使用系统的 /var/log/messages 作为其日志文件;除此之外,也可以采用另外的日志,以便于进行审计。
      Defaults logfile=/var/log/sudolog
      记住,在上面没有 : 啊。

  5) 限制sudo使用危险的命令:
        M-gtuiw ALL=/bin/kill, /usr/sbin/
  这里说明M-gtuiw用户只可以使用/bin/kill这个命令和/usr/sbin/里面的命令。
        M-gtuiw lnserve=(paul, limda) /bin/kill, /usr/sbin/
  说明了M-gtuiw只能在lnserv指定的机算机中以paul和limda的身份使用/bin/kill和/usr/sbin里面的命令。

  6)sudo限制使用某些命令
        M-gtuiw ALL=ALL, !/bin/rm
  这里说明了M-gtuiw可以用除了/bin/rm之外的所有命令,在/bin/rm前面加上 ! 号就是为了限制使用这个命令。
  这是我在sudo的网页里翻译出来的一些简单文本,本人的英文不是很好,翻译的不是很好,欢迎各位前来修正。

  7)sudo时不输入密码直接执行命令
        M-gtuiw ALL=(ALL) NOPASSWD: /usr/local/sbin/VBoxClient,/sbin/mount -t ntfs /dev/hda5 /d-driver
  这里说明M-gtuiw在执行/usr/local/sbin/VBoxClient以及mount hda5时,不必输入root密码就可以root权限执行,
  这里RUNAS为ALL实际上是指M-gtuiw可以sudo成任何身份且不必输入该身份的密码就可以执行后面的命令,当然root身份也不在话下。
  NOPASSWD特别危险切记要让正确的人使用正确的命令。
        M-gtuiw ALL=(ALL) NOPASSWD: ALL
  这里说明M-gtuiw执行所有命令都不必输入密码,这极其危险。慎用。
        M-gtuiw ALL=(ALL) ALL, NOPASSWD: /sbin/mount -t ntfs /dev/hda5 /d-driver
  也可以让M-gtuiw用户可以sudo所有命令,但只针对某些命令不必输入密码。

原文链接:http://wiki.freebsdchina.org/doc/s/sudo_with_sudo

FreeBSD系统make.conf文件详解

FreeBSD系统make.conf文件详解

make.conf的主要功能

make.conf是 FreeBSD 中 make(1) 的配置文件。如果不了解改变这些配置可能带来的副作用,则不应修改其中的任何配置。

通过修改 make.conf 可以达到下面这些目的:

优化系统:设定系统的处理器类型、编译参数、优化级别。
配置系统的升级服务器以及升级内容:告诉系统去哪里下载kernel和userland的源代码和ports的代码树、去哪里下载ports编译时使用源代码包。
不过,许多时候可能会希望使用另外一些配置文件来达到类似的目的。由于 make.conf 是全局的 FreeBSD make(1) 配置,对其进行不适当的改动,特别是添加优化选项,非常容易导致各种各样的问题,因此一般情况下不需要修改这个文件。

其他一些与 make.conf 起类似作用,但范围受限的 make(1) 配置文件,包括 src.conf(5) 和 ports.conf,关于如何使用这些文件的具体介绍,请参见本文末尾的“参阅”部分。

make.conf的主要文档

make.conf(5)[URL:http://www.freebsd.org/cgi/man.cgi?query=make.conf&sektion=5&format=html]
src.conf(5)[URL:http://www.freebsd.org/cgi/man.cgi?query=src.conf&sektion=5&format=html]
/usr/share/examples/etc/make.conf

make.conf的基本原理

FreeBSD 的 make(1) 在执行联编操作的时候会引用 /usr/share/mk/sys.mk。如果 make(1) 不是以完全 POSIX 模式运行,则后者会引入 /etc/make.conf (或由 make 变量 MAKE_CONF 所定义的其他文件,例如,如果需要在某一次联编过程中临时禁用 make.conf,可以在 make 时指定 MAKE_CONF=/dev/null)。

希望在联编过程中传递给 make 程序本身,或作为环境传递给编译器等其他程序的参数,可以通过 make.conf 来指定。再次强调, make.conf 是一个全局的配置,在增加配置时,其内容会影响 所有 使用 FreeBSD make(1) 的联编过程。添加任何配置一定要慎重。

下面以 vim 举例。使用 ports 套件默认的编译选项编译出来的vim中的gvim是使用gtk1图形库的,但是我很喜欢gtk2,因为gtk2更加的漂亮。为了使用 gtk2,有两个选择:

1.编译的时候手工把这个选项加进去:cd /usr/ports/editor/vim; make WITH_GTK2=yes install clean,但是这样似乎比较麻烦。
2.使用make.conf:直接把WITH_GTK2=yes这句写到make.conf里面,这样系统在编译vim的时候会把这个选项自动地包含进去。

注意:后一种方法中,直接将 WITH_GTK2=yes 加入到 make.conf 将影响所有port的编译过程,这很可能不是希望的结果,因此比较保险的做法是使用下面这样的配置:

.if ${.CURDIR} == “/usr/ports/editors/vim”
WITH_GTK2=yes
.endif

这样,只有在执行 make 的当前目录是 /usr/ports/editors/vim 时,才会定义 WITH_GTK2=yes。

很明显,如此定义 make.conf 十分繁琐,为了解决这个问题,可以通过 Ports 套件安装 ports-mgmt/portconf 并配置 ports.conf。

提示

在FreeBSD系统安装以后的默认设置中,/etc/make.conf这个文件并不存在,你可以自己建立一个,如果系统安装了perl,那么perl会替你建立这个文件,这就是为什么几乎每个人的/etc/make.conf都有一行是关于perl的版本的内容。建立这个文件的命令很简单,因为make.conf本身就是一个纯文本文件,但是,显然你需要root权限来创建或者修改这个文件。

# touch /etc/make.conf

我的make.conf详解:

make.conf的语法非常的简单,其中:#代表注释,在#之后的内容都会被忽略;除注释外,每一行是内容格式如下:一个变量,一个赋值运算符=,一个具体值。

# cpu type
CPUTYPE=athlon64

指定系统的处理器类型,告诉gcc在编译软件的时候针对这个处理器进行优化,从FreeBSD官方论坛的相关讨论来看,这个参数对于提升系统性能比较重要。具体的可以参考/usr/share/examples/etc/make.conf来决定自己的处理器类型。

# ports compilation flag
CFLAGS= -O2 -fno-strict-aliasing -pipe
CXXFLAGS+= -fconserve-space

告诉系统在编译ports的时候使用哪些编译参数,就是优化的级别,推荐使用-O2,不要使用-O3,优化级别越高需要的编译时间越长,并且可能导致某些不可预知的问题。

# shell
MAKE_SHELL=sh

告诉系统在编译过程中使用哪个shell。

# kernel compilation flag
COPTFLAGS= -O2 -pipe

告诉系统编译内核时使用什么优化参数,这个需要单独的指定,并不是使用ports的编译参数,但是编译内核的时候所使用的处理器类型并不需要单独指定。

# kernel config
KERNCONF=MYKERNEL

告诉系统你/sys/amd64/conf目录下面哪个文件是你的kernel配置文件,这样在/usr/src下面直接make buildkernel就可以了,就是说编译内核的时候,不需要手工告诉系统内核的配置文件是哪个。

# install command
INSTALL=install -C

告诉系统安装编译完的软件时使用的安装命令。

# do not build modules with the kernel
NO_MODULES=true

告诉系统编译内核的时候只编译内核的配置文件(就是上面的MYKERNEL)里面包含的东西,这样就不会对配置文件以外的任何东西进行编译了。FreeBSD系统在编译内核的时候,会把配置文件里面的东西以二进制的形式之间编译到生成的内核中,其他的在配置文件里面没有指定的就编译成模块,这一行的作用在于,不编译那些模块,配合ccache可以在1分钟左右完成内核的编译,详细的情况可以看这里http://blog.chinaunix.net/u2/74710/showart_1191786.html。

# avoid compiling profiled libraries
NO_PROFILE=true

告诉系统在编译userland的时候不编译用于性能分析的函数库。

# for update
SUP_UPDATE=true
SUP=/usr/bin/csup
SUPFLAGS=-L 2
SUPHOST=cvsup5.cn.FreeBSD.org
SUPFILE=/usr/share/examples/cvsup/standard-supfile
PORTSSUPFILE=/usr/share/examples/cvsup/ports-supfile
DOCSUPFILE=/usr/share/examples/cvsup/doc-supfile

告诉系统在进入/usr/src目录以后执行make update时升级kernel、userland、ports以及文档系统的代码树,并且指定升级时使用的程序(/usr/bin/csup)、使用的参数(-g -L 2)、使用的服务器(cvsup5.cn.FreeBSD.org)以及升级时分别使用相应的supfile。

# documentation language
DOC_LANG=en_US.ISO8859-1

告诉系统,我在/usr/doc目录下运行make install clean时只生成英文的文档,生成的文档在/usr/share/doc下面,包含FreeBSD的各种文档。

# for textproc/docproj
WITH_JADETEX=yes

编译文档需要安装docproj这个port,并且这个port总是提问题,于是我就直接把答案写在这里了,这样就不用我每次回答了。

# for vim
.if ${.CURDIR} == “/usr/ports/editors/vim”
WITH_GTK2=”yes”
.endif

告诉系统使用gtk2图形库,看上面我举的那个vim的例子。

# for gnome
WITH_GECKO=libxul

告诉系统屏蔽掉firefox,很多人都喜欢firefox,我一直使用gnome的epiphany,不喜欢firefox,但是epiphany在编译的时候需要一个下层的渲染引擎,默认是使用和firefox一样的引擎,所以默认会安装firefox,通过这个选项可以改变这个倚赖关系。

# set server for distfiles
#MASTER_SITE_OVERRIDE?=http://ports.hshh.org/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=ftp://ftp8.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/

告诉系统去哪里下载ports里面软件的源代码,这个不用多说了,语法也很简单,http、ftp代表的是协议或者说是服务类型,需要注意的不是每个http或者ftp都使用相同的目录结构。你可以去FreeBSD的handbook上找一下有那些服务器,我比较喜欢台湾的ftp8,就是在教育网那个,因为我也在教育网上。我虽然写了两个,但是屏蔽掉了的一个,如果ftp8宕机了,我就注释掉ftp8,用上面的那个,如果不写这个的话,编译port的时候会从prot的Makefile里面指定的下载地址下载,可能会比较慢,当然也可能会比较快(这个可能性比较小)。

# for ccache
.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*)) && !defined(NOCCACHE)
CC=/usr/local/libexec/ccache/world-cc
CXX=/usr/local/libexec/ccache/world-c++
.endif

这个是针对于ccache的设置,如果要使用ccache必须添加这个。ccache能大幅度的缩短编译时间,所以它能能帮你省很多时间,能帮全人类省很多电。我个人觉得应该给ccache的作者颁发一个“诺贝尔绿色和平奖”,虽然我不知道有没有这个奖。

我的make.conf的全部内容:

################################################################################
# cpu type
CPUTYPE=athlon64

# ports compilation flag
CFLAGS=-O2 -fno-strict-aliasing -pipe
CXXFLAGS+=-fconserve-space

# shell
MAKE_SHELL=sh

# kernle compilation flag
COPTFLAGS=-O2 -pipe

# kernel config
KERNCONF=MYKERNEL

# install command
INSTALL=install -C

# do not build modules with the kernel
NO_MODULES=true

# avoid compiling profiled libraries
NO_PROFILE=true

################################################################################
# for update
SUP_UPDATE=true
SUP=/usr/bin/csup
SUPFLAGS=-L 2
SUPHOST=cvsup5.cn.FreeBSD.org
SUPFILE=/usr/share/examples/cvsup/standard-supfile
PORTSSUPFILE=/usr/share/examples/cvsup/ports-supfile
DOCSUPFILE=/usr/share/examples/cvsup/doc-supfile

# documentation language
DOC_LANG=en_US.ISO8859-1

# for textproc/docproj
WITH_JADETEX=yes

################################################################################
# for vim
.if ${.CURDIR} == “/usr/ports/editors/vim”
WITH_GTK2=”yes”
.endif

# for gnome
WITH_GECKO=libxul

################################################################################
# set server for distfiles
#MASTER_SITE_OVERRIDE?=http://ports.hshh.org/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=ftp://ftp8.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/

################################################################################
# for ccache
.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*)) && !defined(NOCCACHE)
CC=/usr/local/libexec/ccache/world-cc
CXX=/usr/local/libexec/ccache/world-c++
.endif

################################################################################
# added by use.perl 2009-05-05 08:38:03
PERL_VERSION=5.8.9

后记:

现在,你可以:

进入/usr/src目录使用make update升级系统的kernel、userland、doc、ports树的源代码了。
进入/usr/doc目录使用make install clean来编译安装最新的文档了。

欢迎补充。

原文链接:http://wiki.freebsdchina.org/doc/m/make.conf_usage

FreeBSD学习笔记整理

FreeBSD学习笔记整理

1、查看CPU:
sysctl hw.model hw.ncpu
dmesg | grep “CPU:”

2、查看内存:
dmesg | grep “real memory” | awk -F ‘[( )]’ ‘{print $2,$4,$7,$8}’

查看swap:
top | grep “Swap:” | awk ‘{print $1,$2}’

3、查看硬盘:
diskinfo -vt /dev/ad0
disklable /dev/ad0s2 #查看分区信息
看硬盘大小:
dmesg | grep “sector” | awk ‘{print $1,$2}’
diskinfo -v /dev/da0 | grep “in bytes” | awk -F'[()]’ ‘{print $2}’

4、查看服务器品牌:
dmesg | grep “ACPI APIC”

5、挂载文件系统:
fat32:mount_msdosfs -L zh_CN.eucCN /dev/ad0s1 /mnt
ntfs:mount_ntfs -C eucCn /dev/ad0s1 /mnt
cdrom:mount_cd9660 /dev/acd0 /mnt
注:ntfs在FreeBSD中只能读无法写入

6、给文件添加或禁用系统禁删标志(目录不适用):
chflags sunlink file1
chflags nosunlink file1

7、初始化磁盘:
fdisk -BI ad1

8、建立FreeBSD分区:
disklabel -B -w -r ad1s1 auto

9、建立逻辑分区:
disklabel -e ad1s1

10、格式化分区,创建文件系统:
newfs /dev/ad1s1e

11、显示PCI硬件信息:
pciconf -lv

12、开启Linux 二进制兼容支持(启用这一功能最简单的方法是载入 linux KLD 模块):
kldload linux
让Linux兼容在系统初始化时自动启用,在/etc/rc.conf中中入:
linux_enable=”YES”

13、检查KLD模块是否加载:
kldstat

14、在内核中静态链接进Linux二进制兼容模式,在内核配置文件里面加入:
options COMPAT_LINUX

15、设置网卡em0的IP地址:
ifconfig em0 inet 192.0.2.10 netmask 255.255.255.0

16、给网卡em0设置添加一个别名IP地址:
ifconfig em0 inet 192.168.51.45/24 add

17、删除网卡的别名IP地址:
ifconfig em0 inet 192.168.51.45 -alias

18、设置网卡em0的工作模式为100baseTX全双式:
ifconfig em0 media 100baseTX mediaopt full-duplex

19、当/usr/local/etc/rc.d下的脚本无法自动启动时,可尝试在/etc/rc.conf中加入一行:
local_startup=”/usr/local/etc/rc.d”

20、在ports中寻找需要的软件,进入/usr/ports目录执行:
make search name=lsof 或 echo /usr/ports/*/*lsof* 或 whereis lsof
make search key=关键字 # 在名字、注释、描述中搜索关键字

21、使用package方式安装管理软件,使用以下命令:
pkg_add lsof-4.56.4.tgz # 安装软件包
pkg_info  # 列出已安装所有软件包
pkg_version  # 统计所有安装的软件版本,比较本地package的版本与ports目录中的当前版本是否一致
pkg_delete lsof-4.56.4 # 删除软件包,需提供完整包名

22、使用CVSup协议更新本地ports:(将cvsup.FreeBSD.org改为离得较近的CVSup服务器)
csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile

23、一些shell会缓存环境变量PATH中指定的目录里的可执行文件,以加快查找速度,这会造成一些新安装的命令无法运行,执行以下命令,然后才能运行新安装的那些命令:
rehash 或 hash -r

24、当不是所有时间都能上网时,可在/usr/ports下执行以下命令,所有需要的文件都将被下载:(此命令可以在下级目录中执行,如/usr/ports/comms/nmp)
make fetch # 只下载所需要文件,不下载依赖包
make fetch-recursive # 连同依赖包一起下载

25、改变默认的Ports目录:
make WRKDIRPREFIX=/usr/home/example/ports install # 在/usr/home/example/ports中编译port,安装到/usr/local
make PREFIX=/usr/home/example/local install # 在/usr/ports中编译port,安装到/usr/home/example/local
make WRKDIRPREFIX=../ports PREFIX=../local install # 在../ports中编译port,安装到../local

26、使用portsclean工具清除临时目录和distfiles目录:
portsclean -C # 清除安装时的临时目录
portsclean -D # 清除distfiles目录下所有port都不引用的文件
portsclean -DD # 删除目前安装的port没有使用的源码包文件

27、强制手动检测SCSI设备,SCSI总线扫描:
camcontrol rescan all

28、显示SCSI设备列表:
camcontrol devlist

29、利用管道修改用户密码:
echo “password” | pw usermod root -h 0
30、sed插入行:
sed -i -E ‘/service port/a \\
apex port : 18306\\
‘ /home/xiyou/config

31、用freebsd的MBR覆盖现有的MBR:
fdisk -B -b /boot/boot0 device

32、根据一个新的文件重新构建用户列表:
pwd_mkdb -p /etc/master.passwd.new # -p即为生成新的/etc/passwd

33、取时间:
date -v -1d +%Y%m%d # Freebsd取昨天日期方法
date -v -1w +%Y%m%d # Freebsd取上周今日方法
date -v -1m +%Y%m%d # Freebsd取上个月今日方法
date -v -1y +%Y%m%d # Freebsd取去年今日的方法

34、以xiyou用户身份执行命令或脚本:
su – xiyou -c “cd /home/xiyou/script; ./start_apex.sh &”

35、tar打包时排除某个子目录:
tar zcvf Apex09010702.tgz –exclude=ApexItemServer/hook_log ApexItemServer
注:上例是使用GUN版本的tar程序格式,否则–exclude参数应放在最后
36、锁住终端:
lock -np #-n 永不超时,-p 使用系统密码作为开启终端的密匙

37、显示ATA设备列表:
atacontrol list

38、查看网络流量:
systat -if 1 #1表示1秒刷新屏幕一次,Traffic 流量 peak 峰值 average 平均值
netstat 1

39、查看硬盘详细分区实时读写状况:
gstat

40、进单用户模式也需要密码:
a. vi /etc/ttys 找到when going to single-user mode
b. 修改console none unknown off后面的secure,改为insecure
c. 存盘退出

41、在FreeBSD5.X以上加载,卸载ISO文件:
mount:
mdconfig -a -t vnode -f myisofile.iso #屏幕输出md0或者类似的设备名
mount -t cd9660 /dev/md0 /mnt
umount:
umount /mnt
mdconfig -d -u 0 #-u后面的数字和前面的md?中的数字一致
mdconfig -l #可以列出关于配置md?设备的信息

42、更新配置文件,比如编辑了.cshrc等文件,就需要用source命令:
source .cshrc
43、修复UFS文件系统分区:
fsck_ufs /dev/ad1

44、pf防火墙
pfctl -e                 # 启动pf防火墙
pfctl -d                 # 停止pf防火墙
pfctl -sa | grep Status  #查看状态
pfctl -f /etc/pf.conf    # 载入 pf.conf 文件
pfctl -nf /etc/pf.conf   # 检查配置文件错误,但不载入
pfctl -Nf /etc/pf.conf   # 只载入文件中的NAT规则
pfctl -Rf /etc/pf.conf   # 只载入文件中的过滤规则
pfctl -sn    # 显示当前的NAT规则
pfctl -sr    # 显示当前的过滤规则
pfctl -ss    # 显示当前的状态表
pfctl -si    # 显示过滤状态和计数
pfctl -sa    # 显示任何可显示的

pfctl -t http_table -T show               #查看动态表
pfctl -t http_table -T add 192.168.1.X    #添加一个IP到表
pfctl -t http_table -T del 192.168.1.X    #从表中删除IP

45、系统优化+防止ddos
加载文件修改
# vi /boot/loader.conf #加入如下文本
kern.dfldsiz=”2147483648″             # Set the initial data size limit
kern.maxdsiz=”2147483648″             # Set the max data size
kern.ipc.nmbclusters=”0″             # Set the number of mbuf clusters
kern.ipc.nsfbufs=”66560″              # Set the number of sendfile(2) bufs
##解释:
a.   第一,第二行主要是为了突破1G内存设置的
b.   第三行其实是bsd的一个bug,当系统并发达到一个数量级的时候,系统会crash,这个是非常糟糕的事情,所幸更改了这个参数后,在高并发的时候,基本可以没有类似情况,当然非常bt的情况,还得进一步想办法
c.   第四行是读取的文件数,如果你下载的文件比较大,且比较多,加大这个参数,是非常爽的
Sysctl修改
#vi /etc/rc.local
sysctl kern.ipc.maxsockets=100000    ##增加并发的socket,对于ddos很有用
sysctl kern.ipc.somaxconn=65535      ##打开文件数
sysctl net.inet.tcp.msl=2500         ##timeout时间
加速ports安装
#vi /etc/make.conf     ##加入如下
MASTER_SITE_OVERRIDE?=http://ports.hshh.org/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=http://ports.cn.freebsd.org/${DIST_SUBDIR}/
Freebsd颜色显示
secureCRT设置:仿真:终端->linux>勾选ANSI颜色–>确定
#vi /etc/csh.cshrc ##加入如下
setenv LSCOLORS ExGxFxdxCxegedabagExEx
setenv CLICOLOR yes
#cd /usr/ports/edit/vim;make install
#echo “syntax on”>/root/.vimrc
#echo “alias vi        vim” >>/root/.cshrc
##颜色主要是靠vim来显示的,因此需要安装vim,然后把vi alias成vim就可以了

46、查看系统状态
fstat     #报告系统中打开文件的信息
pstat -T   #显示这几个系统表的状态,包括当前使用的和可以利用的系统表空间,因此可以用来检查系统在当前负载下是使用多大的系统表,帮助进行优化系统性能
systat    #缺省情况下systat是报告处理器的使用率,包括总利用状态、空闲使用率和各个进程的使用率
通过指定参数,systat也能进行I/O的统计、虚存的统计、网络的统计等,这些参数包括-iostat, -vmstat, -mbufs, -netstat, -ip, -icmp, -tcp, -swap等
kldstat -v  #显示内核加载的模块
klsdstat -m ipfilter   #显示指定模块
pnpinfo    #即插即用设备
devinfo -u  #显示设备占用的IRQ和内存地址

原文链接:http://blog.chinaunix.net/u3/112017/showart_2213285.html

FreeBSD网络配置

FreeBSD网络配置

/etc/rc.conf 相关

如何修改 IP address

1 修改/etc/rc.conf,需要/etc/rc.d/netif重起,或reboot才能生效。

ifconfig_re0=”inet 192.168.0.76  netmask 255.255.254.0″

增加第二个 IP

ifconfig_re0_alias0=”inet 192.168.0.76  netmask 255.255.254.0″

2 直接使用ifconfig,立刻生效

#ifconfig re0 192.168.0.76 255.255.254.0

注意,使用方法2修改,重启机器后ip会变回未修改之前的ip

设定系统默认网关

1 修改 /etc/rc.conf

defaultrouter=”192.168.0.1″

2 直接使用 route 命令,立即生效

route add default 192.168.0.1

启用 NFS 客户端

1 修改 /etc/rc.conf

nfs_client_enable=”YES”

2 修改 /etc/fstab,添加远程 nfs 分区。例如:

remote_server:/path/to/export /local/mount/point nfs rw,late 0 0

注: 选项 late 也可以不添加。如果添加了,就可以用 /etc/rc.d/mountlate 来挂载启动时没有挂载或挂载失败的 nfs 分区。

3 执行 /etc/rc.d/nfsclient

#/etc/rc.d/nfsclient start

设定系统默认域名服务器

修改 /etc/resolv.conf 文件到如下内容,如果这个文件不存在,可以直接创建。

nameserver 192.168.0.1

更复杂的设定可以参考这个文件的 man 文档。

/etc/hosts 文件的作用

系统默认查询域名的顺寻是,先从 /etc/hosts 查询,如果查不到就从 dns 服务器查询。因此,你可以把一些常用的 域名-IP 地址对应写到 /etc/hosts 里面以加快网络速度。

原文链接:http://wiki.freebsdchina.org/faq/networking

FreeBSD的Ports系统

FreeBSD的Ports系统

什么是 Ports 系统

简单的讲,一个 port 就是一个被移植到了 FreeBSD 上的软件。所有这些软件的集合,加上 FreeBSD 处理这些软件的各种工具,就是 Ports 系统。

Ports 系统有什么用

每一个被移植到 FreeBSD 上的软件(就是 Port),都能通过 Ports 系统中的工具方便有序的安装,升级,卸载。而且符合 FreeBSD 系统对应用软件施加的各种规范。免去了你到处寻找软件,自己编译,安装,升级的麻烦。借助这些 ports 维护者的努力,你也不用担心这些软件与系统不兼容导致无法安装升级等等。

怎么安装 Ports 系统

有三种方法来安装 Ports 系统:

1 安装系统时选择安装 Ports 系统

这是最简单的方法,但是也有缺点。因为 Ports 系统总是随时更新的。因此你从安装光盘上安装的 Ports 系统肯定不是最新的了。

2 使用 portsnap 安装/同步 ports 系统

这是推荐的方法。使用portsnap不需要事先安装 ports tree,并且能够在任何时候恢复到已知的最新状态(即使手工对ports tree进行了修改)。

使用 portsnap 分成两个步骤:下载压缩的 portsnap 快照,和更新现有系统。下载或更新 portsnap 快照的方法是 portsnap fetch;首次安装,或希望将 ports tree 恢复到快照的样子,应使用 portsnap extract;之后更新系统中的 ports tree,则可以通过 portsnap update 来完成。对于服务器而言,推荐在 crontab 中增加在每天3点执行 portsnap cron,以减少使用时所需要的下载时间。

首次下载 portsnap 快照时,需要下载一个大约50MB的快照基础文件。在中国大陆,由于网络状况的原因,这可能需要较长时间。可以考虑用 portsnap fetch -s portsnap.cn.freebsd.org 做首次下载;之后的下载,还是推荐使用正常的 portsnap fetch。

可以使用下面步骤完成上述情况

1.首先设置一个比较快的portsnap服务器,如果系统默认的地址你的访问速度也很快,可以不修改

#vi /etc/portsnap.conf设置SERVERNAME=portsnap.cn.freebsd.org ,你可以设置相对你速度快点的服务器的地址

2.执行下面命令

#portsnap fetch extract    这里直接下载ports并且解压这样就完成了下载ports系统以及解压到/usr下面了

3.设置最快的ports镜像

用ports安装软件的时候,如果没有设置相对于你来说最快的ports服务器地址,那就会默认的 ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/,这个地址对于很多地方来说是很慢的。

修改 /etc/make.conf 加入以下代码

MASTER_SITE_OVERRIDE=\
ftp://ftp.freebsdchina.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}\
ftp://ftp.tw.freebsd.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}如果你有最快的地址,可以加到上面去,下载就会块了

3 使用 csup/cvsup 安装/同步 Ports 系统

这种方法已经不再推荐使用。

不管事先你有没有安装 Ports 系统,你都可以使用 csup/cvsup (推荐使用 csup,这是基本系统中自己带的)来安装/同步最新的 Ports 系统。把 /usr/share/examples/cvsup/ports-supfile 拷贝到一个地方(比如 /home/user/tmp/ports-supfile),然后作适当的修改(比如修改要连接的服务器)。最后使用如下命令来安装/同步:

csup -L 2 /home/user/tmp/ports-supfilePorts 树的目录结构

假设你的 ports 树安装在默认位置 /usr/ports。

文件:

/usr/ports/CHANGES # ports 开发者、维护者等的记录文档。
/usr/ports/COPYRIGHT # ports 树的版权。
/usr/ports/GIDs # 一些 port 可能用到的组名称。
/usr/ports/INDEX-xxx # 每个 port 的摘要
/usr/ports/KNOBS # 编译 port 时需要的一些环境变量与解释。
/usr/ports/LEGAL # 某些 port 的协议限制。
/usr/ports/MOVED # 被移动/删除了的 port 列表。
/usr/ports/Makefile # ports 树总的 BSD Makefile。
/usr/ports/README
/usr/ports/UIDs # 一些 port 可能用到的用户名称。
/usr/ports/UPDATING # ports 树的更新记录以及建议。目录:

/usr/ports/Mk # 编译 port 需要的 Makefile 集合。
/usr/ports/Templates # 一些模板。
/usr/ports/Tools # 一些工具。
/var/db/ports # 包含所有进行过配置的可定制 port 的可选变量。每一个 port 占用一个目录。
/var/db/pkg # 包含所有已经安装的 port 的记录。用 pkg_add 安装的预编译好的包也会在此留下记录。除开以上文件和目录,其他所有的目录都是 ports。一个 port 的目录结构:

/usr/ports/分类/名称比如 firefox 被分类在 www。因此 firefox 在 ports 树中的位置就是:

/usr/ports/www/firefox使用 Ports 系统

1 查询

比如,你想知道 ports 中是否有 pidgin 这个软件,那么可以这样:

$cd /usr/ports
$make search key=pidgin同样也可以使用

$cd /usr/ports
$make search name=pidgin用上面两种方法查询时,显示的信息比较详细,包括维护者、依赖包、主页等内容。如果只想显示所在的路径和软件名称,则可以用

$cd /usr/ports
$make quicksearch name=php这样可以使显示的结果更清晰。

/usr/ports/README 中还有更多的例子可以参考。

2 安装

非常简单。比如你要安装 firefox,那么作为超级用户 root:

#cd /usr/ports/www/firefox
#make install clean3 卸载

要卸载 firefox 的话:

#cd /usr/ports/www/firefox
#make deinstall clean4 升级

要升级 firefox:

#cd /usr/ports/www/firefox
#make deinstall reinstall clean5 定制 port

有时候,你会发现安装某个 port 的时候会有奇怪的事情发生。比如 editors/vim,安装的时候竟然会自动安装 glib1 和 gtk1,而明明自己的系统上已经有了 glib2 和 gtk2。

这是因为有些 port 有很多不是默认的编译选项。这个时候你需要设定一些环境变量让 port 知道该怎么做。对于 editors/vim,你需要设定 WITH_GTK2 来让 vim 依赖 gtk2 而不是 gtk1。

你可以在 csh 下:

setenv WITH_GTK2或者在 bash 下:

export WITH_GTK2=yes也可以把这个选项写到 /etc/make.conf 里面:

WITH_GTK2=yes或者你也可以指定在更新/安装某个 port 的时候使用特定的环境变量。添加如下代码(注:csh 的语法,不是 sh/bash)到 /etc/make.conf 里面:

.if ${.CURDIR:M*/ports/editors/vim}
WITH_GTK2=yes
.endif这样下次升级 editors/vim 的时候就会自动依赖到 gtk2 而不是 gtk1 了。

类似的例子还包括 WITH_GECKO 环境变量。请阅读 ports/Mk/bsd.gecko.mk 来获得详细资料。

定制 Ports 系统

1 设定 Ports 树的位置

当你把 Ports 树放在非默认位置(/usr/ports)的时候,就需要修改一些环境变量让 Ports 中的工具知道你的修改。这个变量就是 PORTSDIR。 比如,你把 Ports 树放在了 /opt/ports,那么 在 sh/bash 中,执行如下命令:

export PORTSDIR=/opt/ports在 csh 中,你需要执行如下命令:

setenv PORTSDIR /opt/ports妥贴的办法是把这个环境变量放到超级用户 root 的 dot.cshrc 文件(/root/.cshrc)里面。又或者你想让普通用户也能用到这个环境变量,可以考虑放到 /etc/profile 或者 /etc/csh.cshrc 里面。

注意!如果你使用 portsnap 命令来同步 Ports 树,而你的 Ports 树不在默认位置,请在 /etc/portsnap.conf 中也设定你的 Ports 树的位置。

注意!如果你使用 csup/cvsup 同步 Ports 树,而你的 Ports 树不在默认位置,请在你的 ports-supfile 中也设定你的 Ports 树的位置。

2 设定 dist 文件的位置

所谓 dist 文件,就是 port 的源码。一般情况下,这些源码都是用 tar 打包然后用 bzip2 压缩的。默认的位置是在 $PORTSDIR/distfiles。 但是,你也可以把这些 dist 文件放到另外的地方。需要设定的环境变量就是 DISTDIR。你可以根据上面的例子来设定这个环境变量。

3 设定工作目录

如果没有设定工作目录,ports 系统默认在 port 的目录进行编译。比如你的 firefox 在 /usr/ports/www/firefox,那么默认将在 /usr/ports/www/firefox/work 下编译 firefox。这样有一个缺点,如果你的 /usr 目录不是很大的话,在编译某些大软件的时候,比如 gnome,kde 桌面系统时,你的 /usr 空间可能会不足。

解决的办法之一就是设定环境变量 WRKDIRPREFIX,比如

export WRKDIRPREFIX=/opt/obj/portbld这个时候 ports 系统就会到 /opt/obj/portbld/usr/ports/www/firefox/work 下编译 firefox。

Ports 管理工具

1 系统自带的工具

同步 ports

portsnap 是同步 ports 用的,前文已经作了介绍。

详细用法参照这里[URL:http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/ports-using.html](搜索“Portsnap 方式”)

为了方便,我在 csh 的配置文件里写入了如下 alias :

alias update-ports ‘portsnap fetch update’大家不妨参考一下。

维护 ports

pkg_add

pkg_create

pkg_delete

pkg_info

pkg_updating

pkg_version

注:

1.具体的用法请参考手册中的4.4、4.5节[URL:http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/ports.html]。

2.严格来说,pkg_add,pkg_updating并不是用于 ports 的工具,它们只能用于 package 。这里只是为了让大家全面了解,哪些是官方的东西。

2 推荐的第三方工具

主要工具

portupgrade

portupgrade是一个强大全面的工具,但是依赖于ruby。

个人没有用过,所以不多作评论,大家可以试一下。

portmaster

portmaster是一套仅使用系统软件,而不依赖其他ports的工具。

因为它没有依赖,很“纯”,功能也够用,所以个人比较推崇这个。

我在csh的配置文件里写了关于portmaster的如下alias:

alias update-apps ‘portmaster -a –force-config’
alias show-dep ‘portmaster –show-work ./ | sort’前者用来更新所有ports,并强制make config。

后者用来显示该软件的依赖,按已装和未装排序,需要事先进入那个软件的目录才能执行。

辅助工具

pkg_rmleaves

这个工具可以用来删除用不着的软件,其作用相当于Gentoo的emerge –depclean,或者Debian的orphaner(deborphan这个包)

它首先列出所有不被其他软件所依赖的“叶子节点”,或者说“孤立的软件包”(这意味着删除它们不会影响依赖关系)。

然后你可以手动指定哪些软件是你不需要的,

选中执行[OK]后,它会进一步筛选“叶子节点”。

如此递归之后,它可以保证该软件及其(不被其他软件依赖的)依赖被彻底清除。

pkg_cleanup

这个工具的作用和pkg_rmleaves完全一样,其工作原理也一致,不用担心两者冲突或者哪个剔除起来更彻底。

唯一的区别在于,这个软件能充分利用你的显示屏,另外能在上方显示出每个软件的描述,

比如上图中,光标停在了amarok这一行,它的上面就显示出amarok的介绍:“Media Player for KDE4”。

但是它存在一个“bug”,启动的时候光标虽然在第一行,但它不会显示描述,除非你上下移动光标。

这个小问题在man手册中有提及。总得来说它还是瑕不掩瑜。

pkg_cutleaves

这个工具也是用来清理孤立软件包的,它没有图形界面,

但是它支持配置文件,可以预先设定你需要保留的软件包,以后就直接cut,不必每次都做选择。

pkg_search

可能有的同学要问,怎样才能快速找到某个ports的位置呢,locate?find?

这个时候,我要向你推荐pkg_search。

pkg_search <name>可以让你快速找到该软件包的版本和描述,而加上参数-r,就可以知道它的位置。

pkgsearch

这个工具的作用和上述相同,但是它需要建立一个数据库,而且每次更新ports之后也要更新数据库。

看起来它的工作方式接近于Gentoo的eix。

portconf

它是用来设置全局的编译标记的,类似于Gentoo中设置的USE标记。 (详细内容待撰,哪位对它比较熟悉的帮个忙吧)

Ports 开发工具

portlint

当你写了一个新的 port 之后,可以使用 portlint 来检查自己的 port 是否符合 FreeBSD ports 的规范。

相关链接

中文 FAQ [URL:http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/faq/applications.html]

中文手册 [URL:http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/ports.html]

中文 Porter 手册 [URL:http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/porters-handbook/]

FreshPorts 查看所有 ports 更新的站点 [URL:http://www.freshports.org/]

原文链接:http://wiki.freebsdchina.org/faq/ports

FreeBSD作弊条

FreeBSD作弊条

1.在 ls 时显示多种颜色

打开 /etc/csh.cshrc(全局生效) 或者 ~/.cshrc(当前用户有效),加入下列设置:

setenv LSCOLORS ExGxFxdxCxegedabagExEx
setenv CLICOLOR yes

根据之前修改的配置文件,在命令行运行如下命令,以 /etc/csh.cshrc 为例:

source /etc/csh.cshrc

2.修改 rc.conf 之后让它立即生效

sh /etc/rc

3.新建一个空白文件

touch filename

4.清空文件内容但保留文件本身

cat /dev/null > filename

更简单的:

true > filename

5.快速注销

按下ctrl+d即可,代表EOF(End of File),适合于退出多种交互界面,如gdb、python、bc、ghci、数据库。

6.将 man 的内容转输出为 txt

man socket | col -b > socket.txt

7.让 grep 高亮匹配出的字符串

在/etc/csh.cshrc中加入如下配置

setenv GREP_OPTIONS –color=auto

8. 快速切换音频输出通道(snd_hda 驱动)

snd_hda 驱动可以通过 sysctl(8) 来快速切换是否使用前置音频接口还是后置音频接口(作为超级用户)

sysctl hw.snd.default_unit=1

默认 hw.snd.default_unit 为 0,就使用后置的音频接口,为 1 时使用前置。

原文链接:http://wiki.freebsdchina.org/doc/t/tip

FreeBSD 7.0 全程图解安装手册

FreeBSD 7.0 全程图解安装手册

FreeBSD 是一种优秀的 Unix 类操作系统,它以卓越的稳定性、安全性和性能著称,是目前主流服务器操作系统之一。就在不久前,FreeBSD 发布了一个新的重大版本 FreeBSD 7.0,新版本增加了许多优秀特性。现在我们以标准PC机为例,开始介绍 FreeBSD 7.0 的安装过程。

首先,你需要拥有 FreeBSD 7.0 的安装光盘,你可以在官方网站 http://www.freebsd.org/ 中下载到安装镜像,刻录成 CD 后使用。如果你是在虚拟机中安装,直接下载镜像即可。FreeBSD 7.0 的安装光盘有3张,格式为ISO。第一张光盘 7.0-RELEASE-i386-disc1.iso 可以满足最小安装,如果你还需要安装其他组件,还需要下载剩余两张光盘。

将第一张光盘载入光驱,将计算机设置为使用光盘引导启动。然后开启计算机。

启动计算机后,经过一些加载过程后,将载入 FreeBSD 引导画面,如下图:


现在,按回车键或数字1键,选择第一项使用默认方式启动 FreeBSD 安装程序。如果您不进行选择,安装程序会在十秒后自动使用此方式启动。


经过一些加载过程后,开始进入安装向导。进入向导前,首先会要求你选择所在国家。按键盘方向键选择 45 China 中国,为我们的国家,回车键确定。

下一个画面,是要求你选择键盘类型。中国地区和欧美地区都是使用美式键盘,我们可以直接使用默认选项 USA ISO,回车确认进入下一步。


正式进入了安装向导,FreeBSD 7.0 的安装程序名叫 Sysinstall。现在你看到的就是 Sysinstall 的主菜单,其中有各种安装选项。使用方向键选择 Standard 项目,回车确认,进入标准安装。


首先会看到一个安装提示消息框,确认即可。


现在看到的是分区向导,这里会列出你的硬盘信息。一般情况下,我们按键盘A键,使用自动分区功能,或者手工创建分区。这里我们按A键,自动分区完毕。按键盘Q键,完成分区。


这里是询问你安装何种硬盘引导程序。第一项是使用 FreeBSD 的启动引导程序,第二项是标准引导,第三项是不安装引导程序。如果我们安装单操作系统,请选择第二项。如果有多个操作系统,请选择第一项。第三项是不安装,这指使用目前已经有的其他操作系统的引导程序。我们选择第二项,确认。


再确认,进入分区向导。要注意的是 FreeBSD 的磁盘分区与 Windows 的分区概念不一样,除了硬盘分区之外,还有一个 Label 分区。我们依然按A键,使用自动分区,软件会为我们分配合适的磁盘分区与虚拟内存,按Q键完成。


现在看到的,是比较重要的部分,选择软件安装包。我们只需要一个全新干净的 FreeBSD,这里我们选择倒数第二项 Minimal 最小安装模式,按空格键确认。这里要注意的是,FreeBSD 有一个很方便的软件包管理和安装器,名叫ports,类似 Ubunut 的 Apt-get,一般我们都是必须安装的。我们再选择菜单最后一项,进入详细软件包设置。


使用空格键勾选 ports,然后再选择第一项 Exit,回到前一个菜单。然后同样选择第一项 Exit,结束选择。


询问我们所使用的安装介质,这里我们选择 CD/DVD,确认。


警告我们即将开始安装,将正式对硬盘进行写入操作。选择 Yes 开始安装,选 No 可以回到之前的安装步骤。


分区操作结束后,开始复制文件,FreeBSD 7.0 正在安装。


稍等片刻,提示安装完成。确认进入接下来的设置过程。


设置网卡,确认。


选择首项,一般是你的第一块本地网卡。然后会询问你是否是 IPv6 网络,目前我们主流网络依然是 IPv4,选择否。询问你是否使用 DHCP 网络自动配置网络,如果您的网络路由器开启了此功能,请务必选择是,否则选择否。


设置网络参数,如果您使用 DHCP 设置,现在已经设置完毕。如果不是,请手工填写网络信息。依次需要填写的项目是 主机名称、域名、IP地址、DNS服务器地址、网关地址、子网掩码与附加参数。如果你不知道这些信息,请咨询网络管理员。按Tab键切换表格项目,填写完毕选择 OK 结束。然后会提示你是否现在启动网络与自动启动网络,一般均选择是。


配置系统服务,选择 Yes 进入配置,No 则不配置。配置画面是一个文本编辑器,里面有各种服务参数,设置完毕按 Esc 结束,如果你不知道这是什么,请先不要设置或直接结束。


是否开启 SHH 功能,这是远程终端连接服务,一般服务器均开启。系统额外设置,选择否。

是否开启匿名 FTP 服务,选择否。NFS 服务器 与 NFS 客户端,选择否。


是否设置时间,选择是。稍后会提示你是否使用 UTC 时间,还是本机 CMOS 时间,根据需要选择。如果选择否,接下来需要选择时区,我们选择亚洲 Asia 的中国标准时间。


是否需要安装 Linux 软件兼容程序,如果选择是,你的操作系统就可以使用 Linux 的软件。根据需要设置。

设置鼠标,根据需要选择。


是否安装一些安装光盘自带的软件包,我们选择否即可。


建立用户,我们选择是,然后选择 User 项,建立一个新用户。


需要填写的内容依次是:登录用户名、用户ID、用户组、密码、完整名称、主目录与默认命令行程序,一般我们这里只要填写用户名和密码即可,选择 OK 完成。然后回到前一画面,你可以选择再建立其他用户或选择 Exit 结束用户建立过程。


提示设置 root 密码,root 是 FreeBSD 的最高权限用户,密码关系整机安全,请务必认真对待。输入新密码,按回车确认,再输入一遍并确认。这里输入的密码不会回显。


安装已经完成,选择 No,回到 Sysinstall 的安装主菜单。这里你可以进行其它设置,或者选择 Exit Install 或直接手工重启计算机,完成安装。这里会提示你是否真的退出,选择 Yes。

FreeBSD 已经安装完成,现在请务必取出所有安装光盘,否则系统重启后会再次进入安装程序。现在我们的计算机开始正常重启,重启后经过一些载入操作,进入 FreeBSD 操作系统。


这是 FreeBSD 的命令行启动完毕的主界面,提示输入登录用户名,我们可以使用刚才建立的新用户或 root 用户登陆,依次输入用户名和密码登陆。


登陆成功后,正式进入 FreeBSD。你可以输入一条命令执行,比如查看进程的 ps 命令,回车即可。测试你的操作系统是否可以正常使用。

到这里,FreeBSD 7.0 的安装过程已经结束,您已经可以开始探索 FreeBSD 伟大魅力了。

这是糯米平方的第一篇“多学两招”内容,介绍了 FreeBSD 7.0 操作系统的详细安装过程,如果您需要更深层的学习和了解 FreeBSD,请登陆 FreeBSD 的中文官方手册

原文链接:http://www.ittang.com/2008/0309/4832.html

FreeBSD中的tar命令详解

FreeBSD中的tar命令详解

tar在FreeBSD下创建和解压tar.gz压缩包

创建 格式:tar czvf [文件名.tar.gz] [文件名]

例如:tar czvf test.tar.gz test (当前命令发生在需要打包文件所在目录)

解压 格式:tar zxvf [文件名.tar.gz]

例如:tar zxvf test.tar.gz (需要提前将压缩包传至当前释放目录下)

freebsd tar的详细用法

tar命令
tar 文件是几个文件和(或)目录在一个文件中的集合。这是创建备份和归档的佳径。

tar 使用的选项有:
-c — 创建一个新归档。
-f — 当与 -c 选项一起使用时,创建的 tar 文件使用该选项指定的文件名;当与 -x 选项
一起使用时,则解除该选项指定的归档。
-t — 显示包括在 tar 文件中的文件列表。
-v — 显示文件的归档进度。
-x — 从归档中抽取文件。
-z — 使用 gzip 来压缩 tar 文件。
-j — 使用 bzip2 来压缩 tar 文件。

要创建一个 tar 文件,键入:
tar -cvf filename.tar directory/file

可以使用 tar 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:
tar -cvf filename.tar /home/mine/work /home/mine/school

上面的命令把 /home/mine 目录下的 work 和 school 子目录内的所有文件都放入当前目录中一个叫做 filename.tar 的新文件里。

要列出 tar 文件的内容,键入:
tar -tvf filename.tar

要抽取 tar 文件的内容,键入
tar -xvf filename.tar

这个命令不会删除 tar 文件,但是它会把被解除归档的内容复制到当前的工作目录下,并保留归档文件所使用的任何目录结构。譬如,如果这个 tar 文件中包含一个叫做bar.txt 的文件,而这个文件包含在 foo/ 目录中,那么,抽取归档文件将会导致在你当前的工作目录中创建foo/ 目录,该目录中包含 bar.txt 文件

tar 默认不压缩文件。
要创建一个使用 tar 和 bzip 来归档压缩的文件,使用 -j 选项:
tar -cjvf filename.tbz file

以上命令创建了一个归档文件,然后将其压缩为 filename.tbz 文件。如果你使用 bunzip2 命令为 filename.tbz 文件解压,filename.tbz 文件会被删除,继之以 filename.tar 文件。

你还可以用一个命令来扩展并解除归档 bzip tar 文件:
tar -xjvf filename.tbz

要创建一个用 tar 和 gzip 归档并压缩的文件,使用 -z 选项:
tar -czvf filename.tgz file

这个命令创建归档文件 filename.tar,然后把它压缩为 filename.tgz 文件(文件 filename.tar 不被保留)。

如果你使用 gunzip 命令来给 filename.tgz 文件解压,filename.tgz 文件会被删除,并被替换为 filename.tar。

你可以用单个命令来扩展 gzip tar 文件:

tar -xzvf filename.tgz

一. tar

1.压缩一组文件为tar.gz后缀。
# tar cvf backup.tar /etc
#gzip -q backup.tar

# tar cvfz backup.tar.gz /etc/
tar zxvf XXXX.tar.gz
tar jxvf XXXX tar.bz2

2.释放一个后缀为tar.gz的文件。
#gunzip backup.tar.gz
#tar xvf backup.tar

# tar xvfz backup.tar.gz

3.用一个命令完成压缩
#tar -cvf  /etc/ | gzip -qc > backup.tar.gz

4.用一个命令完成释放
# gunzip -c backup.tar.gz | tar -xvf

5.如何解开tar.Z的文件?
# tar xvfz backup.tar.Z

# uncompress backup.tar.Z
#tar xvf backup.tar

6.如何解开.tgz文件?
#gunzip backup.tgz

7.如何压缩和解压缩.bz2的包?
#bzip2 /etc/smb.conf
这将压缩文件smb.conf成smb.conf.bz2
#bunzip2 /etc/smb.conf.bz2
这将在当前目录下还原smb.conf.bz2为smb.conf
注: .bz2压缩格式不是很常用,你可以man bzip2

原文链接:http://www.lvtao.cn/computer-internet/freebsd/tar-command.html

FreeBSD中的top命令详解

FreeBSD中的top命令详解

top监控工具可以显示CPU占用率为前几位的进程,并提供CPU的实时活动情况。

语法:top [-s time] [-d count] [-q] [-h] [-n number] [-f filename] [-o field][-U usename]
-S 将系统进程信息也显示到屏幕上,默认情况下,top不显示系统进程的信息
-b 使用”batch”方式运行top。在此种方式下,所有来自终端的输入都将被忽略,但交互键(比如C and )
依然起使用。这是运行top输出到哑终端或输到非终端的默认运行方式
-i 使用交互运行top程序,在此种方式下,命令会被进程立即被处理。不管命令是不是能被top所理解执行,
屏幕都将立即更新。这是top的默认运行方式。
-I 不显示空闲进程,在默认情况下,top连同空闲进程的信息一同输出。
-t 不显示top进程自己
-n 不以交互方式使用top命令,作用同”batch”方式。
-s time 设置屏幕刷新的延时,单位为秒,默认值5秒
-d count 设置屏幕刷新的次数,刷新显示完count次后退出
-q 如果经过nice授权,使用-q可以使top运行的更快一些,这样,在系统反应缓慢的时候,可以会更快的找到存在的问题。
此选项在FreeBSD下只有root可以使用
-n number 设置每一屏幕显示的进程数目,number值超过进程最大数目,则设置无效
-u 用显示User ID代替username,提高命令运行速度
-v 显示程序版本号后,立即退出。如果要在top运行时查看版本号,输入”?”
-o 以指定的字段排序显示进行信息。字段名必须为输入在屏幕的可见列的名字,而且必须是小写。
比如”cpu”、”size”、”res”与”time”,但不同的操作系统间有许多的不同。注意不是每个UNIX操
作系统都支持此选项。

-U 只显示属于后面所跟用户名的进程的信息
屏幕控制命令
交换方式下,可以使用以下命令控制top
^L – 刷新屏幕
q – 退出
h or ? – 显示帮助
d – 修改刷新显示的次数
e – 显示最近”kill”或”renice”命令所产生的错误
i – 显示/不显示处于空闲的进程
I – 作用同 ‘i’
k – kill 进程; 发送一个信号到某个进程列表
n or # – 修改显示进程的数目
o – 以特定的字段排序 (pri, size, res, cpu, time)
r – renice 一个进程
s – 修改输入的更新时间
u – 只显示属于某个用户的进程 (+ selects all users)
顺序显示下面三个常规的信息

一. 系统信息:

last pid: 22228; load averages: 0.25, 0.97, 1.56 up 44+03:25:56 21:39:36
274 processes: 3 running, 259 sleeping, 12 zombie
CPU states: 2.9% user, 0.0% nice, 4.2% system, 0.4% interrupt, 92.5% idle
Mem: 483M Active, 120M Inact, 222M Wired, 25M Cache, 112M Buf, 153M Free
Swap: 2048M Total, 143M Used, 1905M Free, 6% Inuse

首部的几行显示系统的几个信息,其中包括:
+ Load averages:1分钟、5分钟和15分钟内运行的负载平均数
+ system:系统名和当前日期.
一般来说只要每个CPU的当前活动进程数不大于 3那么系统的性能就是良好的,如果每个CPU的任务数大于5,
那么就表示这台机器的性能有严重问题
+ 最近一次更新时存在的进程总数,并分别列出run(运行)、sleep(睡眠)、idle(停止)和zomb(‘僵尸’)状态的进程数
+ CPU state:用户占用时间的百分比、系统占用CPU时间的百分比、被nice命令改变优先级的任务占用的CPU时间百分比、以及CPU空闲时间的百分比。
(被nice命令改变优先级的任务仅指那些nice值为负的任务)。花费在被nice命令改变优先级的任务上的时间也将被计算在系统和用户时间内,因此
整个时间加起来可能会超过百分之百

二.内存信息
Memory: 610008K (24424K) real, 995344K (30304K) virtual, 12588K free Page# 1/4
Memory:关于内存使用情况的统计,包括实际(real)内存的活动值/总值,虚拟(virtual)内存的使用值/总值,剩余的内存。

DESCRIPTION OF MEMORY
Mem: 9220K Active, 1032K Inact, 3284K Wired, 1MB Cache, 2M Buf, 1320K
Free Swap: 91M Total, 79M Free, 13% Inuse, 80K In, 104 K Out

K: Kilobyte(K)

M: Megabyte(兆)

%: 1/100(百分比)

Active:
活动页的数目

Inact: 非活动页的数目

Wired: 已经被写入页的数目, 包括缓存文件数据页码

Cache: 被用于 VM-level 磁盘缓冲的页的数目

Buf: 被用于 BIO-level 磁盘缓冲的页的数目

Free: 空闲页

Total: 总的可使用交换区

Free: 总共空闲的交换区

Inuse: 交换区的使用情况

In: pages paged in from swap devices (最近的时间间隔)

Out: pages paged out to swap devices (最近的时间间隔)

三.进程信息
CPU PID USERNAME PRI NI SIZE RES STATE TIME %WCPU %CPU COMMAND
1 33 root 152 20 0K 0K run 153:43 1.18 1.18 vxfsd
0 1751 root 154 20 2500K 868K sleep 2084:19 0.52 0.52 ARMServer
0 1730 root 154 20 4500K 332K sleep 1664:55 0.44 0.44 acactmgr
列出系统里每一个处理器的信息,当信息在一个屏幕内无法显示时,会被分成多个屏幕显示,可以前面提到l,k和t命令查看
(1)CPU:处理器号(仅当多处理器系统时列出)
(2)PID:进程号
(3)USERNAME:用户名
(4)PRI:任务的优先级
(5)NICE:任务的nice值,一个具有较低值的进程在系统上将具有优先权。可以通过改变nice值提高某些进程速度,但是这实际上是一种交易,因为那些nice值被升高的进程此时将运行得很慢。
(6)SIZE:任务的代码加上数据再加上栈空间的大小。
(7)RES:任务使用的物理内存的总数量。
(8)STATE:任务的状态
(9)TIME:自任务开始时使用的总CPU时间,单位为秒,如153:43,对应是153秒43毫秒
(10)%WCPU:进程的CPU利用率权重百分比
(11)%CPU:进程的原始的CPU利用率百分比,自上一次屏幕刷新以来任务占用CPU 时间的份额
(12)COMMAND:启动进程的命令名。如果名字太长而不能在一行显示时,它将被截短

top -d time 这是设置两次刷新之间的时间间隔的吧 作用与交互命令s相同
top -n times 这是设置刷新多少次以后退出的times表示次数

原文链接:http://www.majormoves.net/post/224/