2012年12月31日星期一

linux 如何退出vi编辑器?


linux 如何退出vi编辑器?


先按esc,然后输入 :q! ,存盘退出输入 :wq 

 包括那个冒号。

CentOS上搭建Nginx + Mono 运行 asp.net


CentOS上搭建Nginx + Mono 运行 asp.net

安装步骤:

一、获取开源相关程序:

1、利用CentOS Linux系统自带的yum命令安装、升级所需的程序库:
sudo -s
LANG=C
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel bison pkgconfig glib2-devel gettext make
2、下载程序源码包:
Nginx安装包:下载地址:http://nginx.org/en/download.html
mkdir -p /down
cd /down
wget http://nginx.org/download/nginx-1.1.11.tar.gz

Mono下载:官网:http://download.mono-project.com/sources/mono/(请下载最新版)
wget http://download.mono-project.com/sources/mono/mono-2.10.7.tar.bz2
libgdiplus下载:http://download.mono-project.com/sources/libgdiplus/(请下载最新版)
wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.tar.bz2
 xsp下载:http://download.mono-project.com/sources/xsp/(请下载最新版)
wget http://download.mono-project.com/sources/xsp/xsp-2.10.2.tar.bz2
pcre下载(Nginx所需的pcre库):ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/(请下最新版)
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.21.tar.gz

二、安装编译Nginx:

1、安装安装Nginx所需的pcre库:
复制代码
cd /down
tar zxvf pcre-8.21.tar.gz
cd pcre-8.21/
./configure
make && make install
cd ../
复制代码
2、创建www用户和组
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
mkdir -p /data0/web
chmod +w /data0/web
chown -R www:www /data0/web
3、安装Nginx
tar zxvf nginx-1.1.11.tar.gz
cd nginx-1.1.11/
./configure --user=www --group=www --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
cd ../

4、开放80端口:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
启动nginx 
/opt/nginx/sbin/nginx
在浏览器上输入访问地址 http://192.168.1.1(根据个人本机地址页定),正常会看到默认nginx页面

三、安装编译Mono

1、安装libgdiplus:
复制代码
cd /down

tar -jxvf libgdiplus-2.10.tar.bz2
cd libgdiplus-2.10
./configure --prefix=/opt/mono 
make && make install
echo "/opt/mono/lib" > /etc/ld.so.conf.d/mono.conf
ldconfig 
复制代码
2、安装Mono:
复制代码
tar –jxvf mono-2.10.7.tar.bz2
cd mono-2.10.7
./configure --prefix=/opt/mono
make && make install //此处时间较长

echo export PKG_CONFIG_PATH=/opt/mono/lib/pkgconfig:$PKG_CONFIG_PATH>>~/.bash_profile
echo export LD_LIBRARY_PATH=/opt/mono/lib:$LD_LIBRARY_PATH>>~/.bash_profile
echo export PATH=/opt/mono/bin:$PATH>>~/.bash_profile
source ~/.bash_profile
复制代码
 输入 mono -V 如有mono版本信息,则安装成功. 
3、安装XSP:
cd /down
tar –jxvf xsp-2.10.2.tar.bz2
./configure --prefix=/opt/mono
make && make install

四、配置Nginx

vi /opt/nginx/conf/nginx.conf
复制代码
server {
         listen   80;
         server_name  localhost;
         location / {
                 root /data0/web;
                 index index.html index.htm;
                 fastcgi_index Default.aspx;
                 fastcgi_pass 127.0.0.1:9000;
                 include fastcgi_params;
         }
 }
复制代码

五、配置fastcgi_params增加下面两行:

vi /opt/nginx/conf/fastcgi_params
fastcgi_param  PATH_INFO          "";
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

六、启动:

1、重启nginx:
/opt/nginx/sbin/nginx -s reload
2、启动 fastcgi_mono服务器
fastcgi-mono-server2 /applications=/:/data0/web /socket=tcp:127.0.0.1:9000 &

七、测试:

新建一个asp.net web项目上传至 /data0/web目录下,测试运行。

linux下如何查看80端口占用情况?是被哪个进程占用?


linux下如何查看80端口占用情况?是被哪个进程占用?
查询端口是否被占用,被哪个进程占用有两种方式:1、netstat -anl | grep "80" ;2、lsof -i:80

查看Linux下端口占用情况的命令


查看Linux下端口占用情况的命令
本站原创 [基于 署名-非商业使用-相同方式分享 2.5 协议,转载须注明链接]
文中所述内容已经被管理员在CentOS与Debian系统中验证通过

在使用Linux系统的过程中,有时候会遇到端口被占用而导致服务无法启动的情况。比如HTTP使用80端口,但当启动Apache时,却发现此端口正在使用。
这种情况大多数是由于软件冲突、或者默认端口设置不正确导致的,此时需要查看究竟哪个进程占用了端口,来决定进一步的处理方法。

查看端口占用情况的命令:lsof -i

1[root@www ~]# lsof -i
2 
3COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
4nginx 2333 root 6u IPv4 6242 TCP *:http (LISTEN)
5nginx 2334 www 6u IPv4 6242 TCP *:http (LISTEN)
6sshd 2349 root 3u IPv6 6283 TCP *:ndmp (LISTEN)
7sshd 2349 root 4u IPv6 6286 TCP *:ssh (LISTEN)
这里返回了Linux当前所有打开端口的占用情况。第一段是进程,最后一列是侦听的协议、侦听的IP与端口号、状态。如果端口号是已知的常用服务(如80、21等),则会直接显示协议名称,如http、ftp、ssh等。

查看某一端口的占用情况: lsof -i:端口号

1[root@www ~]# lsof -i:21
2 
3COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
4pure-ftpd 2651 root 4u IPv4 7047 TCP *:ftp (LISTEN)
5pure-ftpd 2651 root 5u IPv6 7048 TCP *:ftp (LISTEN)
这里显示出21号端口正在被pure-ftpd使用,状态是listen。

结束占用端口的进程:killall 进程名

虽然我们不建议用这种本末倒置的方法来解决冲突问题,但某些情况下还是可以直接结束掉占用进程的(比如重启Apache时进程没有完全退出,导致重启失败)
1[root@www ~]# killall pure-ftpd
这样,所有的pure-ftpd进程都会被结束掉。

期待2013,终于可以少还点贷款了 。

如何查看Linux版本号


如何查看Linux版本号

每次都要Google一下,才能知道,如何查看Linux版本号,包括内核版本号和发行版本号,干脆在这里记录下来,下次就不要满世界去找了。
首先,要分清内核版本号和发行版本号的区别。因为所有linux都是使用 kernel.org上来的内核来作为发行版的基础的,所以内核版本号的高低大致能体现该linux版本的新旧。 而发行版本的版本号完全是各发行商自己定义的,不能用来和其它发行版本的版本号进行比较,比如SuSE的11.0不能和Red Hat的9.0比,也不能和Ubuntu的7.10比,没有可比性。发行版本号只是各个厂商为了区别自己的产品而编的号。
查看内核版本号的方法是:
打开一个terminal,执行命令uname -r
执行命令 uname -a 可以看到更多内核版本号的信息。
查看发行版本号的方法是:
用命令找到/etc目录下的issue文件或release文件。 ls /etc/*issue* 或 ls /etc/*release*
然后直接用cat命令查看文件内容就知道版本号了:
比如在Ubuntu linux 10.04 上cat /etc/lsb-release得到的结果为:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04.1 LTS"
说明版本号为10.04,版本别名是lucid

linux 查找目录或文件

linux 查找目录或文件



查找目录:find /(查找范围) -name '查找关键字' -type d
查找文件:find /(查找范围) -name 查找关键字 -print


如果需要更进一步的了解,可以参看Linux的命令详解。
这里摘抄如下:

·find path -option [ -print ] [ -exec -ok command ] {} /;
#-print 将查找到的文件输出到标准输出
#-exec command {} /;     -----将查到的文件执行command操作,{} 和 /;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
====================================================
-name filename             #查找名为filename的文件
-perm                       #按执行权限来查找
-user   username            #按文件属主来查找
-group groupname            #按组来查找
-mtime -n +n               #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime   -n +n              #按文件访问时间来查
-perm                        #按执行权限来查找
-user   username            #按文件属主来查找
-group groupname            #按组来查找
-mtime -n +n               #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime   -n +n              #按文件访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime   -n +n              #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup                    #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                     #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2              找文件,-n指n天以内,+n指n天以前
-ctime   -n +n              #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup                    #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                     #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2              #查更改时间比f1新但比f2旧的文件
-type    b/d/c/p/l/f        #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size     n[c]              #查长度为n块[或n字节]的文件
-depth                      #使查找在进入子目录前先行查找完本目录
-fstype                     #查更改时间比f1新但比f2旧的文件
-type    b/d/c/p/l/f        #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size     n[c]              #查长度为n块[或n字节]的文件
-depth                      #使查找在进入子目录前先行查找完本目录
-fstype                     #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                      #查文件时不跨越文件系统mount点
-follow                     #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                   #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                      #查文件时不跨越文件系统mount点
-follow                     #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                       #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune                      #忽略某个目录
====================================================
$find ~ -name "*.txt" -print    #在$HOME中查.txt文件并显示
$find .   -name "*.txt" -print
$find .   -name "[A-Z]*" -pri26nbsp;   #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune                              #忽略某个目录
=====================================================
$find ~ -name "*.txt" -print    #在$HOME中查.txt文件并显示
$find .   -name "*.txt" -print
$find .   -name "[A-Z]*" -print #查以大写字母开头的文件
$find /etc -name "host*" -print #查以host开头的文件
$find . -name "[a-z][a-z][0--9][0--9].txt"   -print #查以两个小写字母和两个数字开头的txt文件
$find . -perm 755 -print
$find . -perm -007 -exec ls -l {} /; #查所有用户都可读写执行的文件同-perm 777
$find . -type d -print
$find . ! -type d -print
$find . -type l -print
$find . -size +1000000c -print       #查长度大于1Mb的文件
$find . -size 100c        -print      # 查长度为100c的文件
$find . -size +10 -print             #查长度超过期作废10块的文件(1块=512字节)
$cd /
$find etc home apps   -depth -print | cpio -ivcdC65536 -o /dev/rmt0
$find /etc -name "passwd*" -exec grep "cnscn" {} /; #看是否存在cnscn用户
$find . -name "yao*" | xargs file
$find . -name "yao*" | xargs echo   "" > /tmp/core.log
$find . -name "yao*" | xargs chmod o-w
======================================================
find -name april*                      在当前目录下查找以april开始的文件
find -name april* fprint file        在当前目录下查找以april开始的文件,并把结果输出到file中
find -name ap* -o -name may* 查找以ap或may开头的文件
find /mnt -name tom.txt -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find /mnt -name t.txt ! -ftype vfat   在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find /tmp -name wa* -type l           在/tmp下查找名为wa开头且类型为符号链接的文件
find /home -mtime -2                 在/home下查最近两天内改动过的文件
find /home   -atime -1                  查1天之内被存取过的文件
find /home -mmin   +60                  在/home下查60分钟前改动过的文件
find /home -amin +30                  查最近30分钟前被存取过的文件
find /home -newer tmp.txt             在/home下查更新时间比tmp.txt近的文件或目录
find /home -anewer tmp.txt            在/home下查存取时间比tmp.txt近的文件或目录
find /home -used -2                  列出文件或目录被改动过之后,在2日内被存取过的文件或目录
find /home -user cnscn                列出/home目录内属于用户cnscn的文件或目录
find /home -uid +501                 列出/home目录内用户的识别码大于501的文件或目录
find /home -group cnscn              列出/home内组为cnscn的文件或目录
find /home -gid 501                   列出/home内组id为501的文件或目录
find /home -nouser                    列出/home内不属于本地用户的文件或目录
find /home -nogroup                   列出/home内不属于本地组的文件或目录
find /home   -name tmp.txt   -maxdepth 4 列出/home内的tmp.txt 查时深度最多为3层
find /home -name tmp.txt -mindepth 3 从第2层开始查
find /home -empty                     查找大小为0的文件或空目录
find /home -size +512k               查大于512k的文件
find /home -size -512k               查小于512k的文件
find /home -links +2                 查硬连接数大于2的文件或目录
find /home -perm 0700                查权限为700的文件或目录
find /tmp -name tmp.txt -exec cat {} /;
find /tmp -name tmp.txt -ok rm {} /;
find   / -amin   -10       # 查找在系统中最后10分钟访问的文件
find   / -atime -2         # 查找在系统中最后48小时访问的文件
find   / -empty              # 查找在系统中为空的文件或者文件夹
find   / -group cat        # 查找在系统中属于 groupcat的文件
find   / -mmin -5         # 查找在系统中最后5分钟里修改过的文件
find   / -mtime -1        #查找在系统中最后24小时里修改过的文件
find   / -nouser             #查找在系统中属于作废用户的文件
find   / -user   fred       #查找在系统中属于FRED这个用户的文件

查当前目录下的所有普通文件
--------------------------------------------------------------------------------
# find . -type f -exec ls -l {} /;
-rw-r--r--    1 root     root        34928 2003-02-25 ./conf/httpd.conf
-rw-r--r--    1 root     root        12959 2003-02-25 ./conf/magic
-rw-r--r--    1 root     root          180 2003-02-25 ./conf.d/README
查当前目录下的所有普通文件,并在- e x e c选项中使用ls -l命令将它们列出

=================================================
在/ l o g s目录中查找更改时间在5日以前的文件并删除它们:
$ find logs -type f -mtime +5 -exec -ok rm {} /;

=================================================
查询当天修改过的文件
[root@book class]# find ./ -mtime -1 -type f -exec ls -l {} /;

=================================================
查询文件并询问是否要显示
[root@book class]# find ./ -mtime -1 -type f -ok ls -l {} /;
< ls ... ./classDB.inc.php > ? y
-rw-r--r--    1 cnscn    cnscn       13709 1月 12 12:22 ./classDB.inc.php
[root@book class]# find ./ -mtime -1 -type f -ok ls -l {} /;
< ls ... ./classDB.inc.php > ? n
[root@book class]#
=================================================
查询并交给awk去处理
[root@book class]# who | awk '{print $1"/t"$2}'
cnscn   pts/0
=================================================
awk---grep---sed
[root@book class]# df -k | awk '{print $1}' | grep -v 'none' | sed s"///dev////g"
文件系统
sda2
sda1
[root@book class]# df -k | awk '{print $1}' | grep -v 'none'
文件系统
/dev/sda2
/dev/sda1


1)在/tmp中查找所有的*.h,并在这些文件中查找“SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名
A) find /tmp -name "*.h" | xargs -n50 grep SYSCALL_VECTOR
B) grep SYSCALL_VECTOR /tmp/*.h | cut   -d':' -f1| uniq > filename
C) find /tmp -name "*.h" -exec grep "SYSCALL_VECTOR" {} /; -print

2)find / -name filename -exec rm -rf {} /;
find / -name filename -ok rm -rf {} /;

3)比如要查找磁盘中大于3M的文件:
find . -size +3000k -exec ls -ld {} ;

4)将find出来的东西拷到另一个地方
find *.c -exec cp '{}' /tmp ';'
如果有特殊文件,可以用cpio,也可以用这样的语法:
find dir -name filename -print | cpio -pdv newdir

6)查找2004-11-30 16:36:37时更改过的文件
# A=`find ./ -name "*php"` | ls -l --full-time $A 2>/dev/null | grep "2004-11-30 16:36:37"