FreeBSD查看带宽占用情况,CPU,硬盘IO 虚拟内存等命令

systat 能实时查看各种信息
systat -pigs 默认值CPU
systat -iostat 硬盘IO
systat -swap 交换分区
systat -mbufs 网络缓冲区
systat -vmstat 虚拟内存
systat -netstat 网络
systat -icmp ICMP协议
systat -ip IP协议
systat -tcp TCP协议
systat -ifstat 网卡

显示PCI总线设备信息
pciconf -lv
显示内核加载的模块
kldstat -v
显示指定模块
kldstat -m ipfilter
即插即用设备
pnpinfo

显示设备占用的IRQ和内存地址
devinfo -u
cpu
sysctl -a|grep cpu
sysctl -a|grep sched 查看使用的调度器,我编译的是ULE

查看真实内存
dmesg | grep memory
grep “^real memory” /var/run/dmesg.boot
虚拟内存
vmstat # 最好使用vmstat t [n]命令,例如 vmstat 5 5,表示在T(5)秒时间内进行N(5)次采样,或者干脆vmstat 1让系统每秒钟执行一次。

硬盘
gstat
systat -iostat
iostat

网卡
ifconfig
systat -ifstat
网络
netstat
netstat -m 查看网络资源使用情况
netstat -rn 查看路由表
1.不看unix domain socket
$ netstat -f inet
2. -an 可显示IP地址,一般使用方式,可配合grep,像linux中的netstart -anpt | grep :80
$ netstat -an -f inet
3. 查看listen port的program,FreeBSD的netstat沒有 -p 这个选项
$ sockstat -l
sockstat
tcpdump
trafshow
systat -mbufs
systat -icmp
systat -ip
systat -tcp

只是看流量的话,用systat -netstat

cli为何物?

cli是什么意思?本来是知道是什么意思的,但今天早上看到这个词竟然想不起来了。汗个。

CLI是Command Line Interface的缩写,即命令行界面。

像咱们的Linux服务器大部份都没装GUI的,全是命令行界面呐。

Perl健忘录

perl -lne 的作用
-l: line-ending handling Automatically adds or removes '\n' (处理行结束符,自动加上 \n 换行或者删除 \n 换行)

In effect(作用效果):
chomp()s everything on input 自动 chomp 输入分隔号
A godsend for one-liners

perl    [ -sTtuUWX ]
[ -hv ] [ -V[:configvar] ]
[ -cw ] [ -d[t][:debugger] ] [ -D[number/list] ]
[ -pna ] [ -Fpattern ] [ -l[octal] ] [ -0[octal/hexadecimal] ]
[ -Idir ] [ -m[-]module ] [ -M[-]'module...' ] [ -f ]
[ -C [number/list] ]
[ -P ]
[ -S ]
[ -x[dir] ]
[ -i[extension] ]
[ [-e|-E] 'command' ] [ -- ] [ programfile ] [ argument ]...

-n
代表遍历文件的内容,使 Perl 隐式地循环遍历指定的文件,并只打印规定的行。

-e
代表执行 perl 命令,一般 -e 后面接 ‘command’ 要执行的命令了,参数的顺序有时候也要注意的,我现在认为 -e 一般紧接着要执行的命令,所以 -e 作为最后一个参数放在那里。

-p
使 Perl 隐式地循环遍历指定的文件,同时打印所有的行。

-P
使要运行的脚本在 Perl 编译之前通过 C 预处理程序。

请注意:-p 开关和 -n 开关的使用。当您想显式打印数据时,使用 -n 开关。-p 开关隐式地将 print $_ 语句插入到 -n 开关所产生的循环中。因此,-p 开关更适用于对文件进行的完全处理,而 -n 开关更适用于选择性文件处理,这样的处理只需打印特定数据。

我现在喜欢使用 -l 参数,用来给每一个输出加 \n. 例如

$ perl -le 'print "Hello World!"'

常用的 Perl 单行实例

继续阅读“Perl健忘录”

FreeBSD 8.1上安装Vim

1、安装 axel 优化 ports 速度

FreeBSD 中的 ports 安装工具默认下载程序用的是 fetch,下载时经常会出现龟速现象,为了提高 ports 安装速度,推荐替换为 axel 或者 wget,当然具体还得配置下 make.conf 文件。

1.1 使用 ports 安装 axel

cd /usr/ports/ftp/axel
make install

1.2 编辑make.conf配置文件

vi /etc/make.conf # 系统缺省安装以后没有 /etc/make.conf,自己创建一个。####加入以下内容####

FETCH_CMD = axel
FETCH_BEFORE_ARGS = -n 10 -a
FETCH_AFTER_ARGS =
DISABLE_SIZE = yes

MASTER_SITE_BACKUP?=\
http://mirrors.ustc.edu.cn/freebsd-ports/distfiles/${DIST_SUBDIR}/ \
ftp://ftp.cn.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=${MASTER_SITE_BACKUP}

“?=” 表示如果没有赋值过,就赋值等号后面的值。

Assign the value to the variable if it is not already defined. 如果尚未定义该值,则将其分配给该变量。

参考 https://man.openbsd.org/make#VARIABLE_ASSIGNMENTS

Makefile一共提供了四个赋值运算符 (=、:=、?=、+=),它们的区别请看StackOverflow

1.3 portsnap 常用参数有以下三个

fetch 获取数据
extract 释放全部 ports
update 更新 ports

使用 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系统以及解压到/usr下面了,以后就不用 extract 了,用 update 更新。

portsnap fetch update

portsnap 第一次运行 extract 命令时,可能需要一段时间,以后更新使用 update 的时候,速度就快很多了。

如果写在 cron 可以用

portsnap cron update

这样定时更新就不用你要安装软件的时候更新了,节省时间。

2、安装 Vim

查找 vim 在 ports 的路径,这个好像在 Port 里边有个数据库树,存储各种软件的所在位置。

查找 vim 在 ports 的哪个目录位置

whereis vim
#或
cd /usr/ports/
make search name=vim
cd /usr/ports/editors/vim
make -DWITHOUT_X11 install clean
or
make WITHOUT_X11=yes install clean

-DWITHOUT_X11 选项作用是:不安装图形化界面的依赖包,只安装字符界面相关的包,这样子速度很快,我是用默认安装的 Ports 可能下载源也慢,肯能大概安装了4个小时很纳闷,后来终于发现添加 -DWINTOUT_X11 选项后 一会就安装好了。 PS:为啥我的还这么慢呢,都刷了20分钟了。

下载 vim patches 文件:
这里批量下载命令:从 北京理工大学开源软件镜像服务 当中下载:

rsync -vaHz --delete rsync://mirror.bit.edu.cn/pub/vim/patches/ ./

然后把这些文件 cp 到 /usr/ports/disfile/vim 目录中。

3、用 portmaster的方式安装

cd /usr/ports/
portmaster -GD --no-confirm editors/vim-console

-G //阻止make config,也就是使用默认选项
-D 升級或移除ports的時候不要將用不到的distfiles砍掉
--no-confirm //在将要执行升级或者安装之前,不询问用户,直接执行

PS:不使用图形界面的建议安装 vim-console,而非 vim,用 ports 安装 vim 默认是带 X 支持的,会附带安装上很多的 X 支持包。

VIM 配置:

root@JavasBoy.pts/0 ~ # cat .vimrc
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set noswapfile                  " Don't use swapfile
set nobackup                    " Don't create annoying backup files
set number
set cindent

" TAB setting
set expandtab               " replace  with spaces
"set noexpandtab				" 不自动把table转换为空格
set tabstop=4
set softtabstop=4
set shiftwidth=4
autocmd FileType yaml set expandtab

set nocompatible            " 设定 gvim 运行在增强模式下
set backspace=indent,eol,start
                            " 不设定的话在插入状态无法用退格键和 Delete
                            " 键删除回车符

set autoindent
set ruler
" Colorscheme
syntax on
set t_Co=256

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
" 设置命令行和状态栏
 
set cmdheight=1             " 设定命令行的行数为 1
set laststatus=2            " 显示状态栏 (默认值为 1, 无法显示状态栏)
set statusline=%F%m%r\ \|\ %{&ff},%{\"[\".(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\",B\":\"\").\"]\ \"},%Y\ \|%=\ %l/%L,%c\ \|\ %f
                            " 设置在状态行显示的信息如下:
                            " %f    当前的文件名
                            " %F    当前全路径文件名
                            " %m    当前文件修改状态
                            " %r    当前文件是否只读
                            " %Y    当前文件类型
                            " %{&fileformat}
                            "       当前文件编码
                            " %{&fileencoding}
                            "       中文编码
                            " %b    当前光标处字符的 ASCII 码值
                            " %B    当前光标处字符的十六进制值
                            " %l    当前光标行号
                            " %c    当前光标列号
                            " %V    当前光标虚拟列号 (根据字符所占字节数计算)
                            " %p    当前行占总行数的百分比
                            " %%    百分号
                            " %L    当前文件总行数
 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
" 显示空白字符
"set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣
set listchars=eol:¬,tab:»·,trail:~,extends:>,precedes:<,space:␣

FreeBSD下的Vim默认安装路径为

/usr/local/share/vim/vim7*

在 FreeBSD 10.0 中 VIM 全局配置文件是放在

/usr/local/share/vim/vimrc

vim 7.4.900 vimrc localtion is

/usr/local/etc/vim/vimrc

这个文件中,每个用户的配置文件就是在~/.vimrc,一般我喜欢设置全局的。

让你在 FreeBSD 下用的更顺手。
https://wiki.freebsdchina.org/howto/c/config_your_csh

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
" 设置命令行和状态栏
 
set cmdheight=1             " 设定命令行的行数为 1
set laststatus=2            " 显示状态栏 (默认值为 1, 无法显示状态栏)
set statusline=%F%m%r\ \|\ %{&ff},%{\"[\".(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\",B\":\"\").\"]\ \"},%Y\ \|%=\ %l/%L,%c\ \|\ %f
                            " 设置在状态行显示的信息如下:
                            " %f    当前的文件名
                            " %F    当前全路径文件名
                            " %m    当前文件修改状态
                            " %r    当前文件是否只读
                            " %Y    当前文件类型
                            " %{&fileformat}
                            "       当前文件编码
                            " %{&fileencoding}
                            "       中文编码
                            " %b    当前光标处字符的 ASCII 码值
                            " %B    当前光标处字符的十六进制值
                            " %l    当前光标行号
                            " %c    当前光标列号
                            " %V    当前光标虚拟列号 (根据字符所占字节数计算)
                            " %p    当前行占总行数的百分比
                            " %%    百分号
                            " %L    当前文件总行数
 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
" 显示空白字符
set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣