正在筛选分类:FreeBSD 下的文章 清除筛选 ✕
2013
09
09
09:58

FreeBSD下查看各软件版本命令

查看FreeBSD版本: uname -a

root# uname -a

FreeBSD power 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Jul 19 02:36:49 UTC 2010 root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64

查看apache版本: apachectl -v

root#apachectl -v

Server version: Apache/2.2.15 (FreeBSD)

Server built: Nov 26 2010 16:07:59

查看php版本:php -v

root#php -v

 

Copyright (c) 1997-2010 The PHP Group

Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies

with Zend Optimizer v3.3.0, Copyright (c) 1998-2007, by Zend Technologies

查看php模块:php -m

 

查看mysql版本:mysql -V(大写V哦)

root#mysql -V

mysql Ver 14.14 Distrib 5.1.53, for portbld-freebsd8.1 (amd64) using 5.2

2013
08
06
16:10

freebsd卸载及重新安装程序

以php5-pcre为例:

cd /usr/ports/devel/php5-pcre

make deinstall rmconfig clean

make build

make install

make clean

apachectl gracefull

 

 

完整删除软件

进入 cd /var/db/pkg

找到你要删除的软件

pkg_delete nginx-0.5.33

也可以使用如[pkg_delete p5-D* ]通配符,一次删除多个软件

2013
08
06
16:09

FreeBSD与Linux下date取日期的方法

今天日期(CST格式):

FreeBSD:

test# date

2011年 03月 22日 星期二 09:27:47 CST

Debian:

[root@shaobo ~]# date

2011年 03月 22日 星期二 09:27:47 CST

 

今天日期(数字格式):

FreeBSD:

test# date +%Y%m%d

20110322

Debian:

[root@shaobo ~]# date +%Y%m%d

20110322

 

昨天日期(数字格式):

FreeBSD:

test# date -v -1d +%Y%m%d

20110321

Debian:

[root@shaobo ~]# date +%Y%m%d –date=’1 days ago’

20110321

[root@shaobo ~]# date –date=’yesterday’ +%Y%m%d

20110321

 

前天日期(数字格式):

FreeBSD:

test# date -v -2d +%Y%m%d

20110320

Debian:

[root@shaobo ~]# date +%Y%m%d –date=’2 days ago’

20110320

 

明天日期:

FreeBSD:

test# date -v +1d +%Y%m%d

20110323

Debian:

[root@shaobo ~]# date +%Y%m%d –date=’tomorrow’

20110323

[root@shaobo ~]# date -d “1 day” “+%Y%m%d”

20110323

 

后天日期:

FreeBSD:

test# date -v +2d +%Y%m%d

20110324

Debian:

[root@shaobo ~]# date -d “2 day” “+%Y%m%d”

20110324

 

date +%s 可以得到UNIX的时间戳;

[root@shaobo ~]# date +%s

1300758867

[root@shaobo ~]# vi utc.sh

#!/bin/sh

date -d ‘1970-01-01 UTC ‘$1′ seconds’ +”%Y%m%d”

[root@shaobo ~]# chmod +x utc.sh

[root@shaobo ~]# ./utc.sh 1300758867

20110322

2013
08
06
15:29

FreeBSD crontab的用法

使用权限 : 所有使用者

使用方式 :

crontab [ -u user ] file

crontab [ -u user ] { -l | -r | -e }

说明 :

crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

参数 :

crontab-e: 执行文字编辑器来设定时程表,FREEBSD内定的文字编辑器是 VI,如果你想用别的文字编辑器,可以编辑/root/.cshrc文件setenv  EDITOR  vi 改为setenv  EDITOR  ee

crontab-r: 删除目前的时程表

crontab-l: 列出目前的时程表

crontab file [-u user]-用指定的文件替代目前的crontab。

 

 

时程表的格式如下 :

f1            f2                   f3                f4                  f5                program

分钟    小时    月份中的第几日   月份    星期中的第几天   要执行的程序。

 

当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推

当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推

当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推

当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其馀类推

使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。

Linux中,个人用户的crontab放在/var/spool/cron下

FreeBSD中,个人用户的crontab放在/var/cron/tabs下

 

二者都有/etc/crontab文件,在这个文件中执行crontab定时任务要加入执行用户。

 

重启crontab使生效

freebsd下:/etc/rc.d/cron restart

linux下:/etc/init.d/crond restart

 

2013
07
26
08:46

FreeBSD下Mount总结

一、mount FAT/FAT32分区(C盘为例)

mount -t msdos /dev/ad0s1 /mnt

mount_msdos /dev/ad0s1 /mnt     #for 4.xmount_msdosfs /dev/ad0s1 /mnt   #for 5.x

二、mout Windows的扩展分区(FAT/FAT32)

命令和“一”一样,只是要记住:扩展分区从s5开始,例如mount D盘,可用:

mount -t msdos /dev/ad0s5 /mntmount_msdos /dev/ad0s5 /mnt     #for 4.xmount_msdosfs /dev/ad0s5 /mnt   #for 5.x

三、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都可以!

四、mount Linux Ext2fs/Ext3fs

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

五、mount 普通数据光盘

mount_cd9660 /dev/acd0 /cdrom

六、mount ISO 文件

在5.x中如下

mdconfig -a -t vnode -f abc.iso -u 1mount_cd9660 /dev/md1 /cdrom

4.8的版本

vnconfig /dev/vn0 /home/xiaoche/a.isomount -t cd9660 /dev/vn0 /mntumount /mntvnconfig -u /dev/vn0

七、mount CD、VCD、DVD

播放CD、VCD、DVD不用先mount上。如果你一定要mount上,可以这样:

#mount_cd9660 -s 0 /dev/acd0 /cdrom

八、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

九、mount usb

确保内核中有如下项:

device scbusdevice dadevice cd

在GENERIC中默认都有,如果没有,请编译内核。大多数U盘用的是FAT文件系统,所以用以下命令挂载:

mount -t msdos /dev/da0 /mnt

十、mount ZIP软盘

#mount_msdosfs /dev/afd0s4 /mnt/zip
2013
07
26
08:40

FreeBSD 中 vmstat 命令详解

命令輸出的例子:

% vmstat procs      memory      page                   disk   faults         cpu r b w     avm    fre   flt  re  pi  po    fr  sr ad0   in   sy   cs us sy id 1 0 0    185M   212M    49   0   0   0    46   0   0 1132  830  363  0  0 99

参数说明
procs

r: 在运行的进程数
b: 在等待io的进程数(等待i/o,paging等等)
w: 可以进入运行队列但被替换的进程
memory

以”K”为单位,包括虚拟内存和真实内存,正在运行或最近20秒在运行的进程所用的虚拟内存将被视为”active”。

avm: 活动的虚拟内存
free: 空闲的内存
page

统计错误页和活动页,每5秒平均一下,以秒为单位给出数值。

flt: 错误页总数
re: 回收的页面
pi: 进入页面数
po: 出页面数
fr: 空余的页面数
sr: 每秒通过时钟算法扫描的页面
disk

显示每秒的磁盘操作。磁盘名字的前两个字母加数字,默认只显示两个磁盘,如果有多的,可以加”-n”来增加数字或在命令行下把磁盘名都填上。

faults

显示每秒的中断数。

in: 设备中断
sy: 系统中断
cy: CPU交换
cpu

表示CPU的使用状态。

cs: 用户进程使用的时间
sy: 系统进程使用的时间
id: CPU空闲的时间
数值说明
如果”r”经常大于4,且”id”经常少于40,表示cpu的负荷很重。
如果”pi”,”po”长期不等于”0″,表示内存不足。
如果”disk”经常不等于”0″,且在”b”中的队列大于3,表示”io”性能不好。

2013
06
10
08:42

FreeBSD vmstat详解

top是给Linux设计的。在FreeBSD VM里面的Free概念和其他OS完全不同,使用top查看Free内存对于FreeBSD来说可以说没什么意义。正确的方法是看vmstat。

 # vmstat  procs   memory          page                       disk   faults     cpu  r b w   avm    fre      flt  re  pi   po   fr   sr ad0    in    sy   cs    us  sy id  0 2 1   270512   20316  30   0   0    0    26   5  1223   1589  98   593   1   1  99

最好使用vmstat t [n]命令,例如 vmstat 5 10,表示在t(5)秒时间内进行n(10)次采样。如果只使用vmstat,无法反映真正的系统情况。

procs:
r–>在运行的进程数
b–>在等待io的进程数(等待i/o,paging等等)
w–>可以进入运行队列但被替换的进程
memoy(以kb为单位,包括虚拟内核和真实内存,正在运行或最近20秒在运行的进程所用的虚拟内存将被视为active)
avm–>活动的虚拟内存
free–>空闲的内存
pages(统计错误页和活动页,每5秒平均一下,以秒为单位给出数值)
flt–>错误页总数
re–>回收的页面
pi–>进入页面数
po–>出页面数
fr–>空余的页面数
sr–>每秒通过时钟算法扫描的页面
disk 显示每秒的磁盘操作(磁盘名字的前两个字母加数字,默认只显示两个磁盘,如果有多的,可以加-n来增加数字或在命令行下把磁盘名都填上。)

fault 显示每秒的中断数
in–>设备中断
sy–>系统中断
cs–>cpu交换(上下文切换)
cpu 表示cpu的使用状态
cs–>用户进程使用的时间
sy–>系统进程使用的时间
id–>cpu空闲的时间

如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。
如果pi,po 长期不等于0,表示内存不足。
如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。

以下是一个繁忙批量插入MySQL数据(大概每隔20秒可以插入50万多条数据)的vmstat例子:

 procs      memory      page                    disks     faults         cpu r b w     avm    fre   flt  re  pi  po    fr  sr da0 da1   in   sy   cs us sy id 1 0 63  23302M   803M   845   0   0   0     0   0   0   0   17  124  499  6  0 94 1 0 63  23302M   796M   837   0   0   0     2   0   1   0   18  158  505  6  0 94 1 0 63  23302M   790M   833   0   0   0     6   0  76   0  159  143  910  6  0 94 1 0 63  23302M   784M   868   0   0   0    16   0   8   0   34  156  550  6  0 94 2 0 63  23456M   709M  8317   2   0   0  2383   0  95   0  295 5504 1930  8  1 91 1 0 63  21975M  1281M 18909   3   0   0 94840   0 620   0 1893 64333 7822 10  4 87 1 0 63  21975M  1281M   415   0   0   0   342   0   1   0   29  611  566  6  0 94 1 0 63  22093M   978M 43503   0   0   0  5140   0 2187   0 4225  582 16279  6  2 92

循环插入到了后面,随着表越来越大,系统调用和上下文切换越来越频繁:

 procs      memory      page                    disks     faults         cpu r b w     avm    fre   flt  re  pi  po    fr  sr da0 da1   in   sy   cs us sy id 1 0 63  23233M   536M 28219   0   0   0   352 51252 869   0 1864 14542 11015  2  3 95 1 0 63  23349M   834M 12457   0   0   0     4 51247 2078   0 3945  179 14926  6  2 92 2 0 63  27343M  3130M  9295   0   0   0  2708   0   2      0   73 6988 1377   7  1 92 ....中间比较正常,因为插入时间比较久 1 0 63  28788M  2934M 25760   0   0   0  5860   0   620   8 5529 42712 12924 11  2 86 0 0 63  25963M  3081M  4379   0   0   0 24049   0   3445  15 11274 97350 31798  2  7 91 0 0 63  33689M  1801M   388   0   0   0  4492   0 4403  15 8780 135421 35502  2  5 93

不熟悉mysql内部机制,但是很明显,随着表越来越大,表插入速度越来越慢,因为系统调用和上下文切换越来越频繁了,浪费了很多CPU时间。
到了mysql表里有六千万多条数据时,每插入五十万条记录,已经要耗时100s,整个mysql数据库变得很繁忙,一些几万数据的插入也慢慢不能及时处理。

以下是一个拷贝4G文件到远程NFS的vmstat例子:

 procs      memory      page                    disks     faults         cpu r b w     avm    fre   flt  re  pi  po    fr  sr da0 da1   in   sy   cs us sy id 2 0 63  19731M  2400M 24415   0   0   0 70077   0  14   0  591 3915 1770 12  1 87 0 0 63  16352M  3594M   443   0   0   0 154948   0 2471   0 5067 17602 19448  1  2 96 0 0 63  16352M  3594M     0   0   0   0     0   0 772   0 1590  134 6577  0  0 100 0 0 63  16352M  3594M     0   0   0   0     0   0 856   0 1750  164 7135  0  0 100 0 0 63  16361M  3594M  1112   0   0   0  1030   0 400   0  815 1248 3620  0  0 100 0 0 63  16361M  3594M     0   0   0   0     0   0   0   0   15  116  488  0  0 100 0 0 63  16352M  3594M   329   0   0   0   352   0 2186   0 4275  595 15809  0  2 98 0 0 63  16352M  3594M     0   0   0   0     0   0 270   0  532  134 3186  0  0 100 0 0 63  16352M  3594M     0   0   0   0     0   0 185   0  368  164 2062  0  0 100

 

最后稳定下来,状态良好的vmstat例子:

 procs      memory      page                    disks     faults         cpu r b w     avm    fre   flt  re  pi  po    fr  sr da0 da1   in   sy   cs us sy id 0 0 63  16292M  3564M     0   0   0   0     0   0   0   0   12  142  472  0  0 100

 

2013
06
07
08:10

freebsd同步时间

# ntpdate cn.pool.ntp.org

 

这样时间就准了。

cn.poolntp.org 是中国的时间服务器。

 

如想每天晚上23点同步一次时间

# ee /etc/crontab

在最后加入

 

#Synchronise My Server clock

#minute hour mday month wday who command

0 23 * * * root /usr/sbin/ntpdate cn.pool.ntp.org > /dev/null

 

保存退出,就可以了。

2013
06
06
17:09

freebsd 下vsftpd安装错误

===> Deinstalling for ftp/vsftpd

===> vsftpd-ssl not installed, skipping

===> Installing for vsftpd-ssl-3.0.2

/usr/bin/env PKG_PREFIX=/usr/local /bin/sh /usr/ports/ftp/vsftpd/pkg-install vsftpd-ssl-3.0.2 PRE-INSTALL

pw: no such user `ftp’

pw: user ‘ftp’ already exists

Failed to add user ftp as gid 14

*** Error code 1

Stop in /usr/ports/ftp/vsftpd.

*** Error code 1

Stop in /usr/ports/ftp/vsftpd.

 

遇到这个问题后,搞了一天,才得到解决,也不知道是不是对所有人都实用。解决方法如下:

直接删除ee /etc/password 和 /etc/master.passwd手动删除ftp用户,然后

pwd_mkdb /etc/master.passwd更新一下ok

再cd /usr/ports/ftp/vsftpd && make install clean

2013
02
28
14:18

Freebsd8.2 32位ports安装php5.2+fpm+mysql5.1+nginx+Zend

一、安装软件前的准备:

系统的安装:让机房最小化安装32位freebsd8.2系统。

ports的安装:机房装好系统后,远程登录,自己在线安装ports

命令:

sysinstall->Configure->Distributions->ports->FTP->China->OK

修改系统密码:passwd回车

二、手动安装nginx+php

(1) 进入系统后,准备cvs更新:

1. cd /usr/ports/net/cvsup-without-gui

# make install clean

2. cp /usr/share/examples/cvsup/ports-supfile /etc/ports-supfile

3. # ee /etc/ports-supfile

将其中的#*default host=CHANGE_THIS.FreeBSD.org一行改为:

*default host=cvsup4.FreeBSDchina.org

{也可以指定更新版本日期,例如加上:*default date=2009.10.05.00.00.00

(这个可以省略)

}

4. 更新ports

/usr/local/bin/cvsup -g -L 2 /etc/ports-supfile

2) 安装mysql

#cd /usr/ports/databases/mysql51-server

#make WITH_CHARSET=gbk WITH_XCHARSET=all WITH_PROC_SCOPE_PTH=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes SKIP_DNS_CHECK=yes WITHOUT_INNODB=yes install clean

#cp /usr/local/share/mysql/my-large.cnf /usr/local/etc/my.cnf ##mysql的优化参数,也可以手动修改

#rehash

# mysql_install_db –user=mysql ##初始化mysql

#/usr/local/bin/mysqld_safe & ##启动mysql

#/usr/local/bin/mysqladmin -u root password ‘newpass’

##设置root密码,newpass是你需要设置的密码

关闭mysql可以使用mysqladmin -uroot -p shutdown

mysqladmin -uroot -p password ‘新密码’ 回车后输入旧密码

mysql -uroot -p #登陆mysql monitor.

3) 安装php

# cd /usr/ports/lang/php52装的是5.2版本,后装php5-extensions的时候对应的要cd /usr/ports/lang/php52-extensions

#make config ##配置编译参数

[X] CLI Build CLI version

[X] CGI Build CGI version

[ ] APACHE Build Apache module

[ ] DEBUG Enable debug

[X] SUHOSIN Enable Suhosin protection system

[X] MULTIBYTE Enable zend multibyte support

[ ] IPV6 Enable ipv6 support

[ ] REDIRECT Enable force-cgi-redirect support (CGI only)

[ ] DISCARD Enable discard-path support (CGI only)

[X] FASTCGI Enable fastcgi support (CGI only)

[X] FPM Build FPM version //php5.2 FPM依赖FASTCGI

[X] PATHINFO Enable path-info-check support (CGI only)

#make install clean

# cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini

4)升级libtool

#cd /usr/ports/devel/libtool/ && make reinstall clean

 

5) 安装php52-extensions

#cd /usr/ports/lang/php52-extensions //5.2版本的php必须对应装5.2版本的扩展

#make config

Options for php5-extensions 1.1

————————————————-

[X] CURL CURL support

[ ] FTP FTP support//咱们不要

[X] GD e in

[X] GETTEXT

[X] MBSTRING multibyte string support

[X] MCRYPT Encryption support

[X] MYSQL

[X] MYSQLi

[ ] PCRE Perl Compatible Regular Expression support

[ ] POSIX //去掉.

[ ] SQLITE //去掉.

[X] ZIP ZIP support

[X] ZLIB

# make install clean

不同以前版本,安装完php52-extensions发现很多扩展并没有安装,手动挨个去安装吧,包括:mysql、mysqli、gd、mbsting、curl,其中,安装gd扩展耗时较长,下载依赖类库较多,多次弹出选择框。

# cd /usr/ports/databases/php52-mysql

# make install clean

# cd /usr/ports/databases/php52-mysqli

# make install clean

# cd /usr/ports/graphics/php52-gd

# make install clean

# cd /usr/ports/converters/php52-mbstring

# make install clean

# cd /usr/ports/ftp/php52-curl

# make install clean

 

6) 安装Zend Optimizer

 

#cd /usr/ports/devel/ZendOptimizer/

 

#make #不要安装,只需要下载解包

 

#cd /usr/ports/devel/ZendOptimizer/work/ZendOptimizer-*

 

#./install-tty ##会出现一个文字的安装界面,只是最后一步,不要选择apache就可以了

6)        安装nginx

#cd /usr/ports/www/nginx/

#make install

 

配置nginx

在index.html前面添加一个index.php

 

location / {

root   /usr/local/www/nginx; #虚拟目录名

index   index.html index.htm;

}

#location ~ \.php$ {

#    fastcgi_pass    127.0.0.1:9000;

#    fastcgi_index   index.php;

#   fastcgi_param     SCRIPT_FILENAME     /scripts$fastcgi_script.name;

#    include     fastcgi_params;

#}

将前面的#去掉,修改为

location ~ \.php$ {

fastcgi_pass    127.0.0.1:9000;

fastcgi_index   index.php;

fastcgi_param CRIPT_FILENAME     /usr/local/www/nginx$fastcgi_script_name;

include     fastcgi_params;

}

/usr/local/sbin/php-fpm  //手动启动php-fpm

/usr/local/sbin/nginx  // 手动启动nginx

7)添加开机自启动:

在/etc/rc.conf中加入下面三行内容:

mysql_enable=”YES”

nginx_enable=”YES”

php_fpm_enable=”YES”