在FreeBSD 系统下安装 VIM 文本编辑器

如何在FreeBSD系统的命令行下安装 VIM文本编辑器呢?如何才能在能有图形界面的FreeBSD 系统里安装 VIM文本编辑器?
$nbsp;
首先要更新port tree,输入下面的命令:

1
portsnap fetch update

$nbsp;
接着开始安装vim,输入命令:

1
2
cd /usr/ports/editors/vim
make WITHOUT_X11=yes install clean

$nbsp;
配置vim
输入命令:

1
cp /usr/local/share/vim/vim72/vimrc_example.vim /usr/local/share/vimrc

创建你自己的vimrc 文件,输入命令:

1
vi ~/.vimrc

添加下面的内容:

1
2
3
4
5
6
set nocompatible
filetype on
filetype indent on
filetype plugin on
set laststatus=2
syntax on

之后保存退出,即可。
$nbsp;
更多参考:
1. Linux 下 vi/vim 文本编辑器超详细使用指南
2. 29个最基本的 vim /vi 命令
3. vim 命令大全 / vi 命令大全

Linux/Unix:通过linux find命令删除查找到的文件

linux find何在linux操作系统或是类unix系统下使用linux find命令去查找文件并且将查找到的所有文件都删除呢?有时候我们不仅需要查找到文件还需要将其删除,但是传统的linux rm命令并不支持搜索功能,这个时候我们可以使用find命令去搜索特定目录下文件然后将文件删除。你可以将find命令和rm 命令结合起来去实现这个操作。
查找并删除文件
我们可以使用下面的命令来查找并删除文件:
find [directory] [patern] [action]
其中,
directory:指定要查找的目录
patern: 指定要查找的模式比如:*.jpg
action:  指定对查找的文件执行什么操作
为了删除多个文件名包含*.jpg 文件,使用下面的命令

find . -name  "*.jpg" -exec rm -rf {} \;

或者

find . -type f -name "*.jpg" -exec rm -f {} \;

上面的两个命令唯一的区别是第一个命令可以删除目录,而第二命令只能删除文件。
其中,
-name: 文件名匹配
-exec rm -rf {} \;: 删除所有匹配到模式的文件
-type f: 只匹配普通文件(不包括目录文件)
find命令实例:
1.查找当前目录下所有的包含*.bak的文件并删除它们
# find . -type f -name “*.bak” -exec rm -f {}\;
2.查找根目录下所有core文件并删除
# find / -name core -exec rm -f {} \;
3.查找当前目录下的所有包含*.bak的文件并删除所有查找到文件,删除是需要用户确认
#find . -type f -name “*.bak” -exec rm -i {} \;
命令输出:

[root@devops test]# find . -type f -name "*.bak" -exec rm -i {} \;
rm:是否删除普通空文件 "./t1.bak"?y
rm:是否删除普通空文件 "./t4.bak"?y
rm:是否删除普通空文件 "./t6.bak"?y

更多参考:
1.其它关于Linux find 命令的用法
2. find man帮助
3. Linux 删除文件

FreeBSD 日志分析和监控工具Logwatch安装

在FreeBSD操作系统下如何查看和监控系统日志并且将生成的关键数据汇总通过email发到邮箱里呢?你可以使用一个叫Logwatch的日志分析工具,这个工具是一个可以定制化的工具,它可以将存储在/var/log目录下的文件做分析,并根据你的要求生成报告。Logwatch 是一个非常强大系统日志分析工具和报告生成工具。
在FreeBSD上安装Logwatch 工具

#portsnap fetch update
#cd /usr/ports/sysutils/logwatch
#make install clean

或者可以通过pkg命令安装二进制包

#pkg install sysutils/logwatch

配置logwatch 日志分析器
默认的配置文件在/usr/local/etc/logwatch/defaults/logwatch.conf.

# vi /usr/local/etc/logwatch/defaults/logwatch.conf

下一步需要设置MailTo变量来通过email来获取报告,输入下面的命令:

MailTo=osetc@sina.com

设置Print 为No:

Print=No

如果设为“yes”,报告会发到屏幕上,而不会通过邮件发到上面设置的邮箱里。

Linux/unix:通过watch命令实时动态查看命令的运行结果

watch是一个非常强大的而且我会经常使用的命令,运行watch <命令>默认将会每2秒钟重复执行一次该命令。这 样的话我们就可以很好的去查看当前运行的命令的进度,实时查看内存或者磁盘的使用情况,可以监控/proc下的 各种不同的进程。
参数:
-n 指定时间间隔
-d 高亮显示变化的区域
下面是几个简单的例子:
内存使用情况:
$watch free
linux_watch_cmd
Raid 构建过程:

1
2
3
4
5
6
Every 2.0s: cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda[2] sdb[1]
976758841 blocks super 1.2 [2/1] [_U]
[==================&gt;..] recovery = 92.4% (902988416/976758841) finish=102.3min
speed=12012K/sec

监控磁盘使用情况:
$watch du -h

1
2
3
4
5
6
Every 2.0s: df -h 2013
Filesystem Size Used Avail Use% Mounted on
/dev/xvda 95G 29G 65G 31% /
none 202M 208K 202M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1007M 0 1007M 0% /run/shm

Linux ls 命令: 按文件大小显示各个文件

在linux或类unix系统下,如何使用ls命令并按文件的大小对特定目录下的文件排序呢?
首先我们来说一下“ls”命令,该命令是linux和类unix系统下的用来显示目录内容的。如果命令后面不跟任何的参数,当前目录的内容会直接显示在屏幕上。默认情况下,如果即没有的-cftuvSUX,也没有–sort参数传给ls命令,输出结果将会按字母的排列顺序来显示。
默认输出(按字母顺序排序)
输入下面的命令:

1
2
3
$ ls
$ ls *.log
$ ls *.cfg

命令输出:
linux_ls1
按大小排序显示
需要传递-s 或–sort=size参数:

1
2
3
4
$ls -s
$ls --sort=size
$ls --sort=size *.log
$ls -s *.cfg

命令输出:
linux_ls2
你将会看到最大的文件将会显示在最上面。 下面的命令将会以相反的顺序显示文件:

1
2
3
$ls -l -S | sort -k 5 -n

$ls -lSr

命令输出:
linux_ls3

linux/unix:man命令的高级用法

对于一个linux新手来说,可能会经常使用man命令来获取帮助信息。 通过whatis命令可以查看一些man的页面信息。但是你会注意到man页面里有很多相同的命令名。比如,当我运行 whatis echo:
输出如下:
echo                 (1)  – display a line of text
echo                 (3x)  – curses input options
echo [builtins]      (1)  – bash built-in commands, see bash(1)
echo [cbreak]        (3x)  – curses input options
echo [curs_inopts]   (3x)  – curses input options
echo [halfdelay]     (3x)  – curses input options
echo [intrflush]     (3x)  – curses input options
echo [keypad]        (3x)  – curses input options
echo [meta]          (3x)  – curses input options
echo [nocbreak]      (3x)  – curses input options
echo [nodelay]       (3x)  – curses input options
那么我们如何查看这些重复的man页面信息呢?(1),(3x)这些有代表什么意思呢?
所有的man页面信息被划分成不同的区域。通常情况下,linux或类Unix系统有8到9个区域。标准的区域信息包含以下几个部分:
Section #1 : User Commands
Section #2 : System Calls
Section #3 : C Library Functions
Section #4 : Devices and Special Files
Section #5 : File Formats and Conventions
Section #6 : Games et. Al.
Section #7 : Miscellanea
Section #8 : System Administration tools and Deamons
对于一些linux系统发布商可能会在特定的区域里定制一些信息。
命令后大括号里的数字是什么意思呢?
echo (1)里的echo是命令名字,1是命令的man页面的区域。
示例:查看man页面的特定区域的信息

1
man 区域数 命令名

读取echo(1)命令的帮助信息:

1
$man 1 echo

对于更多的关于man命令的用法,可以使用下面的命令:

1
man man

1
man 1 man

如何清除squid proxy 缓存以及重新创建缓存目录

在linux系统或者unix系统里,如何清除squid缓存,以及怎么重新创建缓存目录呢?
可以通过下面的方法来来删除或清空缓存并重新创建缓存目录。
步骤#1:查找Squid缓存的目录位置

1
#grep cache_dir  /etc/squid/squid.conf

命令输出:

1
cache_dir ufs /var/spool/squid 110 17 25

步骤#2:以空缓存目录的方式,重启Squid服务  

1
2
3
#squid -k shutdown
#rm -rf /cache/
#rm -rf /var/spool/squid/

重新创建缓存目录

1
#squid -z

命令输出:

1
2
3
4
5
2013/08/30 08:14:29| Making directories in /var/spool/squid/00
2013/08/30 08:14:29| Making directories in /var/spool/squid/01
2013/08/30 08:14:29| Making directories in /var/spool/squid/02
2013/08/30 08:14:30| Making directories in /var/spool/squid/03
2013/08/30 08:14:30| Making directories in /var/spool/squid/04

重启squid服务:

1
#squid

1
#service squid start

命令输出:

1
Starting squid:                                            [  OK  ]

步骤#3:验证Squid是否正在运行

1
2
3
# netstat -tulpn | grep :3128
# tail -f /var/log/squid/access.log
# tail -f /var/log/squid/cache.log

Linux/Unix:ls命令的输出如何按更新日期排序

如果目录有大量的文件,我们想把通过ls命令查看到目录里的最新文件或者最后更改的文件,那么该如何去做呢?
你需要使用ls命令的“-t”选项。-t选项会把ls命令的输出按最后更改时间来排序。也就是说,最后修改的文件会显示在最前面。打开一个终端,输入下面的命令。
命令参数
ls -t
ls -lt | less
ls -lt  /root | less
命令输出:

1
2
3
4
5
6
7
8
total 19256
drwxr-xr-x. 2 root root     4096 Dec 17  2012 grub
-rw-r--r--. 1 root root 13057907 Dec 17  2012 initramfs-2.6.32-279.el6.x86_64.img
drwxr-xr-x. 3 root root     4096 Dec 17  2012 efi
-rw-r--r--. 1 root root   179157 Jun 22  2012 symvers-2.6.32-279.el6.x86_64.gz
-rw-r--r--. 1 root root   101820 Jun 22  2012 config-2.6.32-279.el6.x86_64
-rw-r--r--. 1 root root  2341856 Jun 22  2012 System.map-2.6.32-279.el6.x86_64
-rwxr-xr-x. 1 root root  3986608 Jun 22  2012 vmlinuz-2.6.32-279.el6.x86_64

使用“-r”选项可以按相反的顺序来显示:
ls -tr
ls -ltr
ls -ltr /boot/ | less
命令输出:

1
2
3
4
5
6
7
-rwxr-xr-x. 1 root root  3986608 Jun 22  2012 vmlinuz-2.6.32-279.el6.x86_64
-rw-r--r--. 1 root root  2341856 Jun 22  2012 System.map-2.6.32-279.el6.x86_64
-rw-r--r--. 1 root root   101820 Jun 22  2012 config-2.6.32-279.el6.x86_64
-rw-r--r--. 1 root root   179157 Jun 22  2012 symvers-2.6.32-279.el6.x86_64.gz
drwxr-xr-x. 3 root root     4096 Dec 17  2012 efi
-rw-r--r--. 1 root root 13057907 Dec 17  2012 initramfs-2.6.32-279.el6.x86_64.img
drwxr-xr-x. 2 root root     4096 Dec 17  2012 grub

在使用上面选项的时候,一定要加上-A(显示除了. 和.. 的文件或目录)或 -a(显示所有的文件)
ls -Altr /boot/ | less
ls -alt /boot/ | less

FreeBSD 9.1:如何加载内核模块

于正在使用Free BSD新手,如何通过命令行来加载drm内核呢?
你可以使用“kldload”命令,该命令会加载file.ko(内核模块或者设备驱动)到内核里。
命令格式:
kidload 模块名
kidload 模块名1 模块名2
kidload [选项] 模块名
当指定多个模块名后,系统尝试着加载所有指定的模块,另外模块的扩展名.ko是可以忽略不加的,它不会影响kldload命令的加载操作。
内核目录:
/boot/kernel

1
2
# ls -l /boot/kernel/
# ls -l /boot/kernel/ | more

示例:

1
2
# kldload gor
# kldload drm

查看所有已加载的模块,可输入:

1
# kldstat

删除或者卸载已加载的模块:

1
# kldunload drm

Linux/Unix:通过dd命令创建1GB的二进制镜像大文件

linux/unix/BSD系统下,如何通过shell命令来快速创建1GB或者10GB的image镜像文件呢?
我们可以用”dd”命令来创建image文件。首先, 要确保系统中有足够的磁盘空间来通过”dd”去创建image文件:

1
$df -H

创建1MB大小的文件(1024kb),输入下面的shell命令:

1
$ dd if=/dev/zero of=osetc.com.img bs=1024 count=0 seek=1024

 
创建10MB大小的文件,输入shell命令:

1
$ dd if=/dev/zero of=osetc.com.img bs=1024 count=0 seek=$[1024*10]

 
创建100MB大小的image文件,我们可以输入下面的命令:

1
$ dd if=/dev/zero of=osetc.com.img bs=1024 count=0 seek=$[1024*100]

 
快速产生10GB的文件:

1
$ dd if=/dev/zero of=osetc.com.img bs=1000 count=0 seek=$[1000*1000*10]

 
以上shell命令的输出类似于下面:

1
2
3
4
[root@osetc.com ~]# dd if=/dev/zero of=osetc.com.img bs=1024 count=0 seek=$[1024*10]
0+0 records in
0+0 records out
0 bytes (0 B) copied, 1.1595e-05 s, 0.0 kB/s

 
下面来验证下我们生产的文件大小:

1
2
3
4
5
6
[root@osetc.com ~]# dd if=/dev/zero of=osetc.com.img bs=1024 count=0 seek=1024
0+0 records in
0+0 records out
0 bytes (0 B) copied, 8.803e-06 s, 0.0 kB/s
[root@osetc.com ~]# ls -lh
-rw-r--r-- 1 root root 1.0M Jul 23 22:11 osetc.com.img