几个性能工具备忘

Posted by 曹宇伟 on 九月 17th, 2008

top:

* A: PID        = Process Id
* E: USER       = User Name
* H: PR         = Priority
* I: NI         = Nice value
* O: VIRT       = Virtual Image (kb)
* Q: RES        = Resident size (kb)
* T: SHR        = Shared Mem size (kb)
* W: S          = Process Status
* K: %CPU       = CPU usage
* N: %MEM       = Memory usage (RES)
* M: TIME+      = CPU Time, hundredths
b: PPID       = Parent Process Pid
c: RUSER      = Real user name
d: UID        = User Id
f: GROUP      = Group Name
g: TTY        = Controlling Tty
j: P          = Last used cpu (SMP)
p: SWAP       = Swapped size (kb)
l: TIME       = CPU Time
r: CODE       = Code size (kb)
s: DATA       = Data+Stack size (kb)
u: nFLT       = Page Fault count
v: nDRT       = Dirty Pages count
y: WCHAN      = Sleeping in Function
z: Flags      = Task Flags <sched.h>
* X: COMMAND    = Command name/line

Flags field:
0×00000001  PF_ALIGNWARN
0×00000002  PF_STARTING
0×00000004  PF_EXITING
0×00000040  PF_FORKNOEXEC
0×00000100  PF_SUPERPRIV
0×00000200  PF_DUMPCORE
0×00000400  PF_SIGNALED
0×00000800  PF_MEMALLOC
0×00002000  PF_FREE_PAGES (2.5)
0×00008000  debug flag (2.5)
0×00024000  special threads (2.5)
0x001D0000  special states (2.5)
0×00100000  PF_USEDFPU (thru 2.4)

进程的优先级和nice级别
进程优先级是一个决定进程被CPU执行优先顺序的参数,内核会根据需要调整这个值。Nice值是一个对优先权的限制。进程优先级的值不能低于nice值。(nice值越低优先级越高)
进程优先级是无法去手动改变的,只有通过改变nice值去间接的调整进程优先级。如果一个进程运行的太慢了,你可以通过指定一个较低的nice值去为它分配更多的CPU资源。当然,这意味着其他的一些进程将被分配更少的CPU资源,运行更慢一些。Linux支持nice值的范围是19(低优先级)到-20(高优先级),默认的值是0。如果需要改变一个进程的nice值为负数(高优先级),必须使用su命令登陆到root用户。下面是一些调整nice值的命令示例,
以nice值-5开始程序xyz
#nice –n -5 xyz

改变已经运行的程序的nice值
#renice level pid

将pid为2500的进程的nice值改为10
#renice 10 2500

vmstat:

·process(procs)
r:等待运行时间的进程数量
b:处在不可中断睡眠状态的进程
w:被交换出去但是仍然可以运行的进程,这个值是计算出来的
·memoryswpd:虚拟内存的数量
free:空闲内存的数量
buff:用做缓冲区的内存数量
·swap
si:从硬盘交换来的数量
so:交换到硬盘去的数量
·IO
bi:向一个块设备输出的块数量
bo:从一个块设备接受的块数量
·system
in:每秒发生的中断数量, 包括时钟
cs:每秒发生的context switches的数量
·cpu(整个cpu运行时间的百分比)
us:非内核代码运行的时间(用户时间,包括nice时间)
sy:内核代码运行的时间(系统时间)
id:空闲时间,在Linux 2.5.41之前的内核版本中,这个值包括I/O等待时间;
wa:等待I/O操作的时间,在Linux 2.5.41之前的内核版本中这个值为0

iostat:

%user:user level(应用)的CPU占用率情况
%nice:加入nice优先级的user level的CPU占用率情况
%sys:system level(内核)的CPU占用情况
%idle:空闲的CPU资源情况

Device:块设备名
Tps:设备每秒进行传输的数量(每秒的I/O请求)。多个单独的I/O请求可以被组成一个传输操作,因为一个传输操作可以是不同的容量。
Blk_read/s, Blk_wrtn/s:该设备每秒读写的块的数量。块可能为不同的容量。
Blk_read, Blk_wrtn:自系统启动以来读写的块设备的总量。

块可能为不同的容量。块的大小一般为1024、2048、4048byte。可通过tune2fs或dumpe2fs获得:
# tune2fs -l /dev/hda1|grep ‘Block size’
Block size:               4096
# dumpe2fs -h /dev/hda1|grep ‘Block size’
dumpe2fs 1.35 (28-Feb-2004)
Block size:               4096

对缓存的新认识

Posted by 曹宇伟 on 七月 1st, 2008

这个是FaceBook的应用构架,没什么好说的。

Dell PowerEdge 860 安装Debian GNU/Linux 4.0 (i386) 时使用LVM遇到Waiting for root filesystem

Posted by 曹宇伟 on 十二月 26th, 2007

  Dell PowerEdge 860 安装Debian GNU/Linux 4.0 (i386) 时,我使用了LVM,结果在重启的过程中遇到了找不到卷组,Waiting for root filesystem的提示。不排除是我这台设备的问题。由于时间关系,我没有在其它同型号设备上做LVM安装。

我现在就在机房安装PE860,发现重启的时候偶尔会遇到LVM不工作,提示找不到vg0(卷组)。实际上是遇到了两次,第一次还以为是安装问题,第二次又出现,就有些担心了,于是不敢在这台设备上使用LVM。不得不再重装一次。

补充,貌似不是LVM的问题,在安装第二台的时候,没有使用LVM,但在重启之后,也出现了一次Waiting for root filesystem……

找到一篇全英的文章:

大致的解决办法是,假如真的完全进入不了系统(我还是比较幸运的,只是偶尔进不去系统),可以用急救盘启动,然后

chroot /mnt/debian /bin/bash

apt-get upgade

apt-get install udev

避免掉线而使任务中断的技巧

Posted by 曹宇伟 on 十一月 21st, 2007

使用环境:UNIX平台 (Linux)

使用screen:
  在执行可能会花费时间较长的任务时,可能我们要中断网络连接而去干别的事儿,或者网络环境不太好的地方,网络会意外中断,使用screen命令,可以使网络、终端意外断开时,可重新连接至screen程序。

其中,Ctrl+a ,0/1/2 切换screen窗口
Ctrl+a,d 分离screen窗口
screent -list  查看当前用户的screen窗口有哪些
BBC-FILER-02 01:19:48 ~ # screen -list
There is a screen on:
        17486.pts-0.BBC-FILER-02        (Detached)
1 Socket in /tmp/screens/S-root.

重新连接至已经存在的窗口:screen -r
若有多个窗口,需要指点pid,screen -r 17486

有时screen意外断线时状态为:attached
这时无法重新连接到screen窗口,可以使用screen -D 命令分离之,然后再使用-r参数连接。

使用串口访问FreeBSD/Linux系统

Posted by 曹宇伟 on 四月 7th, 2006

  最近热衷于使用串口登录系统,这样就不用在需要调试系统的时候为系统连接显示器和键盘了。
 
  FreeBSD中的串口通信,可以阅读它的手册,下面的地址是中文手册中的串口通信部分,可以仔细阅读它。
  http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/serialcomms.html
  以下为引用:
  在FreeBSD中,您可以通过 /dev 目录中的一个记录来访问每个串行端口。有两种不同的记录:
  呼入端口被命名为/dev/ttydN, 这里 N 是端口号,从零开始。 通常,您使用呼入端口作为终端。呼入端口要求数据线使用载波检测 (DCD) 信号来工作。
  呼出端口被命名为 /dev/cuadN。 您通常不使用呼出端口作为终端, 只使用modem。如果串行线或终端不支持载波检测数据传输, 您可以使用呼出端口。
 
注意: 在 FreeBSD 5.X 和更早版本中, 呼出端口的名字是 /dev/cuaaN。
 
  如果您已经连接一个终端到第一个串行端口 (在 MS-DOS® 上是COM1), 则可以使用 /dev/ttyd0 来作为终端。 如果它是在第二个串行端口 (COM2), 那就是 /dev/ttyd1,等等。
 
  引用完毕。
 
  简单地来说,使用串口访问FreeBSD需要修改FreeBSD的配置文件/etc/ttys,我现在使用的版本是5.4的,找到
# Serial terminals
# The ‘dialup’ keyword identifiles dialin lines to login, fingerd etc.
ttyd0  “/usr/libexec/getty std.9600″        dialup    off     secure
ttyd1  “/usr/libexec/getty std.9600″        dialup    off     secure
ttyd2  “/usr/libexec/getty std.9600″        dialup    off     secure
ttyd3  “/usr/libexec/getty std.9600″        dialup    off     secure
……
 
将ttyd0行如下修改:
ttyd0   “/usr/libexec/getty std.38400″      vt100    on     secure
 
然后让init 进程重新读取一下配置文件:
#kill -HUP1
 
使用命令:ps aux |grep getty 来查看是否运行
输出中包含
root  24331  0.0  0.1  1288   800  d0  Is+   8:26PM   0:00.00 /usr/libexec/getty std.38400 ttyd0
表示ttyd0上已经有getty程序在监听。
 
然后,就可以使用串口线连接到服务器的COM1口,将波特率设置成38400,进行连接测试。需要说明的是:
 
  引用:
  如果 getty 进程确实在运行,但终端上仍然没有显示出登录提示, 或者虽然显示了单缺不允许您输入,您的终端或电缆可能不支持硬件握手。请尝试将 /etc/ttys 中的 std.38400 改为 3wire.38400 并一定能够记得在改完 /etc/ttys 之后 kill -HUP 1)。 3wire 记录和 std 类似,但忽略硬件握手。 您可能需要在使用 3wire 时减少波特率或启用软件流控制以避免缓冲区溢出。
  我的是HP DL380 G3的服务器,FreeBSD 5.4的系统,Cisco自带的串口线,和一个RJ-45到RS-232转换器,我的设置是这样的:
ttyd0   “/usr/libexec/getty 3wire.38400″      vt100    on     secure
 
  当是std.38400时无法正常通信。
 
  下面谈Linux系统。
  在Linux系统中,让串口上运行监听程序比在FreeBSD中在容易的多。
  大部分Linux发行版,在配置文件/etc/inittab中都已经包含了串口的getty配置信息,形似:
#S0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt100
只不过默认是注释掉的,把前面的“#”去掉,然后执行一下kill -HUP 1,ps aux |grep getty查看一下是否已经在运行,就可以了。可以看到,Linux中与FreeBSD中的串口设备命名是不一样的,不再赘述。
 
  建议把9600改成38400,这样操作起来就真得跟插上显示器键盘操作的感觉相似了。
 
  最后:
 
  这种使用串口访问系统方式,只有在getty程序运行在串口的时候才能正常使用,就是说系统必然是正常在运行的,尽管可能网络不通。假如出现文件系统损坏需要修复的情况,串口就不能访问了,为了使串口在这种情况下也能使用,在Linux 中,可以在内核启动参数(kenel一行)中加入console=ttyS0,38400 ,这样会把内核console定义到ttyS0(COM1)上去。
  不用困惑,试一下就明白了,其实上目前流行的服务器像HP DL380 G4等都支持串口,就是说系统启动,硬件POST自检的时候,串口上都有输出,而且可以互动操作。但是不要误以为终端屏幕(VT100)上所有的显示都会跟显示器(console)一样,Linux的话,从内核开始解压开始,终端上就没有任何信息了,除非内核接收到了console=ttyS0这样的参数,否则,串口会一直到系统启动完毕,才会在终端上显示login信息。
  FreeBSD也可以让内核信息显示在串口上,甚至还可以在没有显示器,没有键盘的情况下从串口安装系统。这个在上面给出的FreeBSD手册串中通信中有详细的说明,没有我还没有用过,就不写了。

用rsync对网站进行镜像备份

Posted by 曹宇伟 on 十月 1st, 2005

by inburst<inburst@263.net>
http://xfocus.org

  对系统管理员来说,平时的工作重心应该集中在维护系统正常运转,能够正常提供服务上,这里往往牵涉到一个数据备份的问题,在我所了解的情况中,有80% 的系统管理员不是太关心自己服务器的安全性,但往往对备分镜像的技术相当感兴趣,但由于商业产品的软硬件价格都相当高昂,因此往往会选择自由软件。这里准备介绍的rsync就是这样的软件,它可以满足绝大多数要求不是特别高的备份需求。

一、特性简介

rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下:

1、可以镜像保存整个目录树和文件系统。
2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3、无须特殊权限即可安装。
4、优化的流程,文件传输效率高。
5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
6、支持匿名传输。

二、使用方法

rsync的使用方法很简单,我就举自己使用的例子来说明吧。

1、系统环境

rsync支持大多数的类unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。我的系统环境为:

server: FreeBSD 4.3  ip: 192.168.168.52
client: Solaris 8    ip: 192.168.168.137
rsync 版本 2.4.6(可以从http://rsync.samba.org/rsync/获得最新版本)

2、配置server端的/etc/rsyncd.conf文件

bash-2.03# cat /etc/rsyncd.conf

uid = nobody
gid = nobody
use chroot = no         # 不使用chroot
max connections = 4         # 最大连接数为4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log    # 日志记录文件

[inburst]            # 这里是认证的模块名,在client端需要指定
path = /home/inburst/python/    # 需要做镜像的目录
comment = BACKUP CLIENT IS SOLARIS 8 E250
ignore errors            # 可以忽略一些无关的IO错误
read only = yes            # 只读
list = no            # 不允许列文件
auth users = inburst        # 认证的用户名,如果没有这行,则表明是匿名
secrets file = /etc/inburst.pas    # 认证文件名

[web]
path = /usr/local/apache/htdocs/
comment = inburst.org web server

3、在server端生成一个密码文件/etc/inburst.pas

bash-2.03# cat /etc/inburst.pas
inburst:hack

出于安全目的,文件的属性必需是只有属主可读。

4、在server端将rsync以守护进程形式启动

bash-2.03# rsync –daemon

如果要在启动时把服务起来,有几种不同的方法,比如:

  a、加入inetd.conf

    编辑/etc/services,加入rsync   873/tcp,指定rsync的服务端口是873
    编加/etc/inetd.conf,加入rsync  stream  tcp   nowait  root  /bin/rsync rsync –daemon

  b、加入rc.local

    在各种操作系统中,rc文件存放位置不尽相同,可以修改使系统启动时rsync –daemon加载进去。

5、从client端进行测试

  下面这个命令行中-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数。– progress是指显示出详细的进度情况,–delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。后面的inburst@ip中,inburst是指定密码文件中的用户名,之后的::inburst这一inburst是模块名,也就是在/etc/rsyncd.conf中自定义的名称。最后的/tmp是备份到本地的目录名。

  在这里面,还可以用-e ssh的参数建立起加密的连接。可以用–password-file=/password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。

bash-2.03# rsync -vzrtopg –progress –delete inburst@192.168.168.52::inburst /tmp/
Password:
receiving file list … done
./
1
785 (100%)
1.py
4086 (100%)
2.py
10680 (100%)
a
0 (100%)
ip
3956 (100%)
./
wrote 190 bytes  read 5499 bytes  758.53 bytes/sec
total size is 19507  speedup is 3.43

6、创建更新脚本

如果有比较复杂的工作,利用一些常见的脚本语言可以有帮助。比如:

bash-2.03# cat /usr/local/bin/rsync.sh

#!/bin/sh
DATE=`date +%w`

rsync -vzrtopg –progress –delete inburst@192.168.168.52::inburst /home/quack/backup/$DATE –password-file=/etc/rsync.pass >

/var/log/rsync.$DATE

7、修改/etc/crontab做好定时

比如:

bash-2.03# echo “15      4       *       *       6       root    rsync.sh”>>/etc/crontab

三、FAQ

Q:如何通过ssh进行rsync,而且无须输入密码?
A:可以通过以下几个步骤

1. 通过ssh-keygen在server A上建立SSH keys,不要指定密码,你会在~/.ssh下看到identity和identity.pub文件
2. 在server B上的home目录建立子目录.ssh
3. 将A的identity.pub拷贝到server B上
4. 将identity.pub加到~[user b]/.ssh/authorized_keys
5. 于是server A上的A用户,可通过下面命令以用户B ssh到server B上了
                e.g. ssh -l userB serverB
这样就使server A上的用户A就可以ssh以用户B的身份无需密码登陆到server B上了。

Q:如何通过在不危害安全的情况下通过防火墙使用rsync?
A:解答如下:

这通常有两种情况,一种是服务器在防火墙内,一种是服务器在防火墙外。
无论哪种情况,通常还是使用ssh,这时最好新建一个备份用户,并且配置sshd仅允许这个用户通过RSA认证方式进入。
如果服务器在防火墙内,则最好限定客户端的IP地址,拒绝其它所有连接。
如果客户机在防火墙内,则可以简单允许防火墙打开TCP端口22的ssh外发连接就ok了。

Q:我能将更改过或者删除的文件也备份上来吗?
A:当然可以:

你可以使用如:rsync -other -options -backupdir = ./backup-2000-2-13  …这样的命令来实现。
这样如果源文件:/path/to/some/file.c改变了,那么旧的文件就会被移到./backup-2000-2-13/path/to/some/file.c,这里这个目录需要自己

手工建立起来

Q:我需要在防火墙上开放哪些端口以适应rsync?
A:视情况而定

rsync可以直接通过873端口的tcp连接传文件,也可以通过22端口的ssh来进行文件传递,但你也可以通过下列命令改变它的端口:

rsync –port 8730 otherhost::
或者
rsync -e ‘ssh -p 2002′ otherhost:

Q:我如何通过rsync只复制目录结构,忽略掉文件呢?
A:rsync -av –include ‘*/’ –exclude ‘*’ source-dir dest-dir

Q:为什么我总会出现”Read-only file system”的错误呢?
A:看看是否忘了设”read only = no”了

Q:为什么我会出现‘@ERROR: invalid gid’的错误呢?
A:rsync使用时默认是用uid=nobody;gid=nobody来运行的,如果你的系统不存在nobody组的话,就会出现这样的错误,可以试试gid =

nogroup或者其它

Q:绑定端口873失败是怎么回事?
A:如果你不是以root权限运行这一守护进程的话,因为1024端口以下是特权端口,会出现这样的错误。你可以用–port参数来改变。

Q:为什么我认证失败?
A:从你的命令行看来:

你用的是:
> bash$ rsync -a 144.16.251.213::test test
> Password:
> @ERROR: auth failed on module test
>
> I dont understand this. Can somebody explain as to how to acomplish this.
> All suggestions are welcome.

应该是没有以你的用户名登陆导致的问题,试试rsync -a max@144.16.251.213::test test

四、一些可借鉴的脚本

这里这些脚本都是rsync网站上的例子:

1、每隔七天将数据往中心服务器做增量备份

#!/bin/sh

# This script does personal backups to a rsync backup server. You will end up
# with a 7 day rotating incremental backup. The incrementals will go
# into subdirectories named after the day of the week, and the current
# full backup goes into a directory called “current”
# tridge@linuxcare.com

# directory to backup
BDIR=/home/$USER

# excludes file – this contains a wildcard pattern per line of files to exclude
EXCLUDES=$HOME/cron/excludes

# the name of the backup machine
BSERVER=owl

# your password on the backup server
export RSYNC_PASSWORD=XXXXXX
########################################################################

BACKUPDIR=`date +%A`
OPTS=”–force –ignore-errors –delete-excluded –exclude-from=$EXCLUDES
      –delete –backup –backup-dir=/$BACKUPDIR -a”

export PATH=$PATH:/bin:/usr/bin:/usr/local/bin

# the following line clears the last weeks incremental directory
[ -d $HOME/emptydir ] || mkdir $HOME/emptydir
rsync –delete -a $HOME/emptydir/ $BSERVER::$USER/$BACKUPDIR/
rmdir $HOME/emptydir

# now the actual transfer
rsync $OPTS $BDIR $BSERVER::$USER/current

2、备份至一个空闲的硬盘

#!/bin/sh

export PATH=/usr/local/bin:/usr/bin:/bin

LIST=”rootfs usr data data2″

for d in $LIST; do
    mount /backup/$d
    rsync -ax –exclude fstab –delete /$d/ /backup/$d/
    umount /backup/$d
done

DAY=`date “+%A”`
   
rsync -a –delete /usr/local/apache /data2/backups/$DAY
rsync -a –delete /data/solid /data2/backups/$DAY

3、对vger.rutgers.edu的cvs树进行镜像

#!/bin/bash

cd /var/www/cvs/vger/
PATH=/usr/local/bin:/usr/freeware/bin:/usr/bin:/bin

RUN=`lps x | grep rsync | grep -v grep | wc -l`
if [ "$RUN" -gt 0 ]; then
    echo already running
    exit 1
fi

rsync -az vger.rutgers.edu::cvs/CVSROOT/ChangeLog $HOME/ChangeLog

sum1=`sum $HOME/ChangeLog`
sum2=`sum /var/www/cvs/vger/CVSROOT/ChangeLog`

if [ "$sum1" = "$sum2" ]; then
    echo nothing to do
    exit 0
fi

rsync -az –delete –force vger.rutgers.edu::cvs/ /var/www/cvs/vger/
exit 0

4、利用find的一种巧妙方式

rsync -avR remote:’`find /home -name “*.[ch]“`’ /tmp/

可以用这种方法列出需要备份的文件列表——这种方法似乎比较少人用到。

五、参考资料:

1、http://rsync.samba.org/
2、rsync examples
3、rsync FAQ

什么是GMT,什么是UTC

Posted by 曹宇伟 on 七月 22nd, 2005

什么是GMT,什么是UTC

0.时标
时标意指一种将时间分配到事件的制度。现时有两类时间标准广泛被采用。一种是基于天文学,另一种则以原子振动的频率作为依据。
1.视太阳时
视太阳时是一种源于太阳所见位置的时间标准。日晷可直接显示视太阳时。
2.UT0

由于地球轨道并非圆形,其运行速度又随着地球与太阳的距离改变而出现变化,因此视太阳时欠缺均匀性。视太阳日的长度同时亦受到地球自转轴相对轨道面的倾斜度所影响。为着要纠正上述的不均匀性,天文学家计算地球非圆形轨迹与极轴倾斜对视太阳时的效应。平太阳时就是指经修订后的视太阳时。在格林尼治子午线上的平太阳时称为世界时(UT0),又叫格林尼治平时(GMT)。
3.UT1

UT1 与 UT2 是两种较 UT0 均匀的时标。随着较为精确的时钟面世,天文学家发现在不同地点量度的世界时出现差别。这种差别是由于地轴摆动而引起的。各地天文台详细测量了地轴摆动的影响后,制定了一种称为 UT1 的新时标将这种影响删除。
4.UT2

在时钟的精确度进一步改进后,又发现 UT1 具有周期性变化。这种变化是由地球自转率的季节性变动引起的。上述影响经修正后,得到一种更加均匀的时标称为 UT2。
5.国际原子时(TAI):
1967年的第13届国际度量衡会议上通过了一项决议,采纳以下定义代替秒的天文定义:一秒为铯-133原子基态两个超精细能级间跃迁辐射9,192,631,770周所持续的时间。国际原子时是根据以上秒的定义的一种国际参照时标,属国际单位制(SI)。
国际原子时标是一种连续性时标,由1958年1月1日0时0分0秒起,以日、时、分、秒计算。原子时标的准确度为每日数纳秒,而世界时的准确度则只为数毫秒。
6.协调世界时(UTC):

一种称为协调世界时的折衷时标于1972年面世。为了确保协调世界时与世界时(UT1)相差不会超过0.9秒,有需要时便会在协调世界时内加上正或负闰秒。因此协调世界时与国际原子时(TAI)之间会出现若干整数秒的差别。位于巴黎的国际地球自转事务中央局(IERS)负责决定何时加入闰秒。

FreeBSD下mount总结

Posted by 曹宇伟 on 七月 19th, 2005

FreeBSD下mount总结

13 : 50 FreeBSD下Mount总结!

1.mount FAT/FAT32分区:(C盘为例)
mount -t msdos /dev/ad0s1 /mnt

mount_msdos /dev/ad0s1 /mnt for 4.x
mount_msdosfs /dev/ad0s1 /mnt for 5.x2.mout Windows的扩展分区(FAT/FAT32):
命令和1一样,只是要记住:扩展分区从s5开始,例如mount D盘,可用:
mount -t msdos /dev/ad0s5 /mnt
mount_msdos /dev/ad0s5 /mnt for 4.x
mount_msdosfs /dev/ad0s5 /mnt for 5.x
3.mount NTFS分区:(C盘为例)
mount -t ntfs /dev/ad0s1 /mnt

mount_ntfs /dev/ad0s1 /mnt
[注意]1.chinese/gbfs 的 ntfs 似乎有问题,不建议玩家级用户使用
注意2.:要让mount上的windows 分区(或CD-ROM)显示中文,需要升级你的ports,再安装gbfs:
#cd /usr/ports/chinese/gbfs
#make install clean
然后编译内核,注释掉
options CD9660
options MSDOS
注意3.在5.1-current上不用安装gbfs,用:
mount_msdosfs -L zh_CN.GB18030 /dev/ad0sX /mnt
命令就可以支持FAT32分区上的中文文件名,当然,locale可以不用18030,zh_CN.eucCN, zh_CN.GBK都可以!
4.mount Linux Ext2fs/Ext3fs:

在内核里面加入options EXT2FS,编译内核。
mount 的时候用mount_ext2fs 命令即可,ext3fs的mount也用mount_ext2fs

5.mount 普通数据光盘:

mount_cd9660 /dev/acd0 /cdrom

6.mount ISO 文件
在5.x中如下
mdconfig -a -t vnode -f abc.iso -u 1
mount_cd9660 /dev/md1 /cdrom
4.8的版本
vnconfig /dev/vn0 /home/xiaoche/a.iso
mount -t cd9660 /dev/vn0 /mnt
umount /mnt
vnconfig -u /dev/vn0
7.mount CD、VCD、DVD

播放CD、VCD、DVD不用先mount上。
如果你一定要mount上,可以这样:#mount _cd9660 -s 0 /dev/acd0 /cdrom

8.mount 软盘:
1.Format:
# /usr/sbin/fdformat -f 1440 /dev/fd0
2. Run disklabel:
# /sbin/disklabel -B -r -w /dev/fd0 fd1440
3.Create New FS:
# /sbin/newfs_msdos /dev/fd0
4.Mount & Use
#mount_msdosfs /dev/fd0 /mnt

9.mount usb

确保内核中有如下项
device scbus
device da
device cd
在GENERIC中默认都有,如果没有,请编译内核。
大多数U盘用的是FAT 文件系统,所以用
mount -t msdos /dev/da0 /mnt
挂载
10.mount ZIP软盘: OneZ 兄提供#mount_msdosfs /dev/afd0s4 /mnt/zip

学习《FreeBSD技术内幕》

Posted by 曹宇伟 on 十一月 2nd, 2004

一下睡到十二点多,洗漱完之后,又懒得洗衣服了,怕是洗了,今天也干不了,还是到了星期天再洗。
今天复习《FreeBSD技术内幕》。

FreeBSD#shutdown -p now     //关闭系统,并关闭电源。-h选项只会关系系统,然后提示按任意键重启系统。
FreeBSD#shutdown -k now     //将所有系统逐出系统,禁止除root以外的用户登录但是保留多用户模式,并有网络支持。
FreeBSD#shutdown        //进入单用户模式(无网络支持)。exit后重返多用户模式。

即将关闭系统的前5分钟,会创建一个名为/var/run/nologin文件,该文件会禁止一切用户的进一步登录。文件内容为shutdown命令发布的广播信息。
halt和reboot命令虽然也有关闭和重启系统的功能,但它们都不运行rc.shutdown脚本,不推荐使用。(我的个人观点:即然存在了,就有它存在的道理,作者没有说,但我想还是可以用的,他也只是说不推荐、不建议……有时候,我们发现,我们站在“悬崖”边上!)

只有当我们进行高级任务(比如更改shell变量设置别名)以及进行shell编程时不同的shell之间的差异才能表现出来。(bash是我最喜欢用的shell——所有的linux发行版上默认的shell。)

man -k keyword           //一个需要发挥个人想象力的命令,呵呵
man -f command          //输出命令、程序的简短介绍。
ls -G               //彩色文件条目输出。
rm -p               //安全删除
rm -w              //恢复文件


Copyright © 2007 花开的地方. All rights reserved.