发布新日志

  • linux程序常见安装、卸载方法

    2011-12-21 11:58:26

    Linux常见的安装为tar,zip,gz,rpm,deb,bin等。我们可以简单的分为三类.

    熬头:打包或压缩文件tar,zip,gz等,一般解压后即可,或解压后运行sh文件;

    第二:对应的有管理东西的deb,rpm等,凡是的这类安装文件可以通过第三方的命令行或UI来简单的安装,例如Ubuntu中的apt来安装

    deb,Redhat中的yum来安装rpm;

    第三:像.bin类,其实就是把sh和zip打包为bin,或把sh和rpm打包为bin等,当在命令交运行bin安装文件时,其实就是bin里面的sh来解

    压bin中的zip或安装rpm的过程

    1. rpm安装,更新与卸载

    RPM包,这种软件包就像windows的EXE安装文件同样,各种文件已编译好,并打了包,哪个文件该放到哪个文件夹,都指定好了,

    安装很是利便,在图形界面里你只需要双击就能自己主动安装。但是有一点儿不好,就是包的依赖瓜葛,这个会烦死人的

    A. rpm安装

    1) 找到相应的软件包,比如soft.version.rpm,下载到本机某个目录;

    2) 打开1个终端,su 成root用户;

    3) cd soft.version.rpm地点的目录;

    4) 输入rpm -ivh soft.version.rpm

    B。rpm更新

    #rpm -Uvh soft.version.rpm

    C。rpm卸载

    1) 查找欲卸载的软件包 rpm -qa | grep ×XXX×

    2) 例如找到软件mysql-4.1.22-2.el4_8.4 ,执行rpm -e mysql-4.1.22-2.el4_8.4

    注重:查询软件的安装目录,用命令 rpm -ql mysql-4.1.22-2.el4_8.4

    2. 以.bin结尾的安装包

    bin类似rpm包安装,也比力简单

    bin安装

    1) 打开1个SHELL,即终端

    2) 用CD 命令进入源代码压缩包地点的目录

    3) 给文件加之可执行属性:chmod +x ******.bin(中心是字母x,小写)

    4) 执行命令:./******.bin 或 直接执行 sh ******.bin

    bin卸载

    把安装时中选择的安装目录删除就OK

    3. tar.gz(bz或bz2等)结尾的源代码包

    这种软件包里面都是源程序,没有编译过,需要编译后才气安装

    源代码安装

    1) 打开1个SHELL,即终端

    2) 用CD 命令进入源代码压缩包地点的目录

    3) 根据压缩包类型解压缩文件(*代表压缩包名称)

    tar -zxvf ****.tar.gz

    tar -jxvf ****.tar.bz(或bz2)

    4) 用CD命令进入解压缩后的目录

    5) 输入编译文件命令:./configure(有的压缩包已编译过,这一步可以省去)

    6) 然后是命令:make

    7) 再是安装文件命令:make install

    注重:我们可以通过./configure --help 来查看配置软件的功能;大多软件是提供./configure 配置软件的功能的;少数的也没有,

    如果没有的就不用./configure ;直接make;make install 就好了;./configure 比力重要的1个参数是 --prefix ,用--prefix 参

    数,我们可以指定软件安装目录

    源代码卸载

    1) 打开1个SHELL,即终端

    2) 用CD 命令进入编译后的软件目录,即安装时的目录

    3) 执行反安装命令:make uninstall

    4. yum安装

    yum是rpm的管理东西,管理1个软件库,可以很好的解决依赖瓜葛

    1) yum安装

    yum install -y 软件名

    2) yum更新

    yum update -y软件名

    3) yum卸载

    yum remove -y 软件名

    yum erase -y 软件名

    5apt-get安装

    apt-get是deb的管理东西,类似yum

    apt-get install package 安装包

    apt-get reinstall package重新安装包

    apt-get upgrade 更新已安装的包

    apt-cache rdepends package 是查看该包被哪些包依赖

    apt-cache depends package 了解使用依赖

    apt-get clean &&apt-get autoclean 清算无用的包

    apt-cache show package 获取包的相关信息,如说明、巨细、版本等

    apt-get remove package 删除包

    apt-get purge package删除包,包孕删除配置文件等

    ---end----

  • windows下通过vnc图形界面登陆linux

    2011-12-17 13:51:18

    键入下面的命令来检查vnc客户端和服务器是否已经安装在你的系统中:

    操作命令:

    rpm -q vnc vnc-server

    显示内容

    vnc-4.0-0.beta4.3.2

    vnc-server-4.0-0.beta4.3.2

    显示如上内容就可以不用安装了,否则要安装相应的软件,一般vnc-server是默认安装的,只需要安装vncrpm包就可以了,简单的一条命令就解决了:yum -y install vnc

    要把vnc配置成一项系统服务,把你的用户名称加入到下面的配置文件中:

    操作命令:

    vi /etc/sysconfig/vncservers

    显示内容

    # The VNCSERVERS variable is a list of display:user pairs.

    #

    # Uncomment the line below to start a VNC server on display :1

    # as my 'myusername' (adjust this to your own).   You will also

    # need to set a VNC password; run 'man vncpasswd' to see how

    # to do that.

    #

    # DO NOT RUN THIS SERVICE if your local area network is

    # untrusted!   For a secure way of using VNC, see

    # URL:http://www.uk.research.att.com/vnc/sshvnc.html

                                                                                                  

    # VNCSERVERS="1:myusername"

    VNCSERVERS="1:root"

    在启动vnc服务之前,用vncpasswd这个命令来创建一个vnc的口令

    注意这将同时在你的home目录下,创建一个隐藏的目录.vnc,其中有一个文件passwd保存着你的vnc口令.

    操作命令:

    vncpasswd

    显示

    Password:

    Verify:

    继续操作

    ls -d .vnc

    .vnc

    ls .vnc

    passwd

    现在来启动vnc服务

    service vncserver start

    察看一下.vnc这个目录的内容,应该类似于下面的东西.

    CODE:

    [tchung@tchung101 tchung]$ cd .vnc

    [tchung@tchung101 .vnc]$ ls

    passwd   tchung101:1.log   tchung101:1.pid   xstartup

    [tchung@tchung101 .vnc]$

    编辑/root/.vnc/xstartup的脚本,注意到下面红色的部分的注释

    注:.vnc是隐藏文件夹

    将这两行标记成红色的内容前面的注释符号去掉,否则你将只能得到一个什么都没有的灰屏。

    #!/bin/sh                                                                                              

    # Uncomment the following two lines for normal desktop:

    unset SESSION_MANAGER

    exec /etc/X11/xinit/xinitrc

                                                                                                   

    [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

    [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

    xsetroot -solid grey

    vncconfig -iconic &

    xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

    twm &

    因为已经修改了启动脚本,现在来重新启动vncserver.

    service vncserver restart

    照下面使用客户端的vncviewer命令.就会出现图形界面了

    vncviewer localhost:1

    VNC Viewer Free Edition 4.1.2 for X - built Mar 24 2009 19:53:14

    Copyright (C) 2002-2005 RealVNC Ltd.

    See http://www.realvnc.com for information on VNC.

    X connection to localhost:11.0 broken (explicit kill or server shutdown).

    如果出现如上界面,那么Xming没有打开

    安装Xming
    需要在本地Windows上运行一个X Server。选择有很多:Cygwin下的X Server恐怕是最著名的,但是为了这么一个小小的事情去安装一个“相对巨大”的Cygwin,似乎有些夸张;除了Cygwin,还有两个著名的商业软 件可以选用,Xwin32和Xmanager,上学期IC实验用的就是Xmanager,感觉很流畅很好用,不过,虽然Xmanager可以试用,但是终 究还是商业软件;还有一个选择,就是这里要讲的,开源软件Xming。

    Xming是一个配置简单而功能强大的开源X Server,可以运行在M$的XP/2003/Vista操作系统下。
    Xming的主页http://www.straightrunning.com/XmingNotes/
    Xming的SourceForge页面http://sourceforge.net/projects/xming/

    从SourceForge下载Xming-setup.exe,在本地安装。

    注意:安装这个Xming-mesa才可以,我安装Xming最后无法实现目标。
    第一次运行时使用开始菜单里面的XLaunch来启动,产生一个初始的配置文件。对于简单的使用来说,不需要任何特殊的配置,一切使用默认即可。Xming的具体配置和使用可以参考Xming的Manual
    启动完成后,在托盘区会出现一个“X”形状的图标,这表示Xming已经在运行了,将鼠标悬停上去,能看到当前使用的“Display number”。

    使用SSH,不需要作特别设置

    使用putty需要在Connection->SSH->X11下,勾选Enable X11 forwarding,在X display location处填写:localhost:0.

    注:以上操作都是在禁止的远程控制的机器的防火墙的情况下的



    windows下通过vnc图形界面登陆linux(转)

    VNC是由AT&T试验室开发,是一款优秀的远程控制工具软件,后来以GPL授权的形式开源。经过几年的发展,现在的VNC已经不单指某个软件,而是一类软件的通称。下面介绍Linux下常用的两个VNC软件。

    VNC的原理就是不停的对窗口界面截屏,再将图像传输给客户端,同时VNC服务器端接管服务器端的键盘、鼠标控制权,客户端可以通过服务器端操纵键盘鼠标。比较类似Windows下的pcAnywhere

     

    一、Windows 端设置

    先讲Windows端是因为,下述的两个VNC可以用同一个客户端连接。

    Windows平台上,客户端我选择了RealVNCRealVNC包括了一整套的服务器端与客户端,如果只安装客户端是不需要注册码的,其客户端程序名为vncviewer.exe,这是个绿色软件,你可以从安装目录下拷贝到其他电脑中运行。

     

    二、VINO

    VINOGnome中集成的一个VNC软件,安装Gnome环境时默认安装,点击系统”-“首选项”-“远程桌面就打开了其配置窗口。



    选中允许其他人查看您的桌面VINO就会启动服务器端进程vino-server,同时它监听TCP 5900端口。如果不选中允许其他用户控制您的桌面,客户端则只能观看不能操纵。

    VINO的模式与下面介绍的XVNC有很大不同,我觉得VINO其实是“Windows下的远程协助,因为客户端显示的桌面与Linux端本地显示器中显示的桌面一样,如果你操纵客户端中的鼠标,Linux的显示器也能看到鼠标在跑。如果你在Windows下安装过VNC服务器端,效果就是这个样。

    另外,VINO的带宽占用真是变态,就算是一进桌面什么都不打开无操作的情况下,带宽也要占到4-5Mbps(桌面1280×1024,色彩24),如果有操作会占到8-12Mbps

    所以,VINO不适合做为服务器的日常远程管理,比较适合做为Linux下的远程协助和远程教学,也就是说你遇到一个问题,求助高手,而高手可以手把手的教你,你可以直接观看屏幕学习,或者做故障重现,你在本地做故障或Bug重现,而工程师可以远程观看。

     

    三、XVNC

    XVNC就是大家所熟悉的vncvncserver,是由RealVNC公司开发的开源版的VNC软件。

     

    1、安装XVNC

    安装Linux时,可以从安装包中选中。若没有安装,可以从安装盘中找到。

    服务器的组件名叫 vnc-server。请执行rpm -q vnc-server 这个指令。

    它的输出应该是package vnc-server is not installed 或类似vnc-server-4.0-11.el4

    假如服务器未被安装,请用这个指令来安装它:yum install vnc-server

     

    2、启动vncserver

    在终端中输入:

    vncserver :1 -geometry 1280x1024 –depth 24  注::11号窗口,-geometry指窗口分辨率,-depth指色彩数

    也可以简单的指定:

    vncserver :1  注:使用RealVNC的客户端,窗口分辨率与色彩数可以在客户端指定

    当你第一次启动vncserver时,会要求指定密码,该密码是VNC客户端连接时要输入。

    窗口可以从0开始指定,如果Linux本地端已经启用图形环境,则必须从1开始指定,因为窗口0X11占用。

     

    3、配置xstartup

    XVNC默认采用twm做为图形环境,如果你安装了KDEGnome也可以启动。

    vi ~/.vnc/xstartup

    显示如下内容:

    #!/bin/sh

     

    # Uncomment the following two lines for normal desktop:

    # unset SESSION_MANAGER

    # exec /etc/X11/xinit/xinitrc

     

    [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

    [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

    xsetroot -solid grey

    vncconfig -iconic &

    xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

    twm &

     

    最后一行twm &表示启动twm,修改成gnome-session &启动Gnome,修改成startkde &启动KDE

    如果Linux本地端已经启用GnomeKDE图形环境,当VNC客户端连接服务器后,可能会只显示灰屏,没有正常启用图形环境。查看~/.vnc下的日志时会提示错误:You are already running a session manager

    这时需要去掉xstartup文件中的

    # unset SESSION_MANAGER

    # exec /etc/X11/xinit/xinitrc

    这两行前的#,再重启vncserver。如果Linux本地端是init 3模式,则不需要修改这两行。

    vnc客户端连接服务器时显示的界面是英文的,主要是中文环境还没有装入,而且没有中文输入法。在# exec /etc/X11/xinit/xinitrc行后添加下面内容:

    export .UTF-8  注:启用中文环境

    scim –d  注:加载scim输入法

     

    4、关闭vncserver

    vncserver –kill :1  注:关闭窗口1,以此类推关闭窗口2就为:2

    当所有窗口都关闭vncserver服务就关闭了。

     

    5、客户端使用

    XVNC不仅支持vncview等客户端程序,还支持浏览器控制。

    浏览器直接输入地址http://IP:5800,就会启动Java客户端连接。

    窗口0占用TCP 5900端口(VNC客户端)TCP 5800端口(浏览器)

    窗口1占用TCP 5901端口(VNC客户端)TCP 5801端口(浏览器)

    窗口23以此类推。

     

    6、开机自启动vncserver

    上面的操作都是要先登录Linux端,然后手动启动vncserver服务后,才能使用VNC连接。如果你想开机自启动vncserver服务,必须这样做。

    先按上面的步骤启动一次vncserver,确保密码和xstartup文件都建立了。

    然后,vi /etc/sysconfig/vncservers,添加如下内容:

    VNCSERVERS="1:root 2:zhang 3:li"  注:123代表窗口,比如root用户用窗口1zhang用户用窗口2,这里的用户是指Linux中的正规的用户帐户

    VNCSERVERARGS[1]="-geometry 640x480 –depth 24"  注:为root用户指定分辨率和色彩数,这里的[1]指上面的“1:root”

    VNCSERVERARGS[2]="-geometry 640x480 –depth 16"  注:为zhang用户指定分辨率和色彩数

    VNCSERVERARGS[3]="-geometry 800x600"

    注:上面的这三行可以不添加,由vnc客户端自行控制分辨率和色彩。上面的rootzhangli用户必须确保密码和xstartup文件都建立了,你可以分别登录先执行一次vncserver :1

    最后,执行/sbin/chkconfig vncserver on指令。

     

    7、安全

    XVNC的数据传输都是明文的,因涉及服务器的管理,使用明文是不可接受的。

    我们可以使用SSH加密VNC数据。

    首先,开启Linux端的SSH服务。

    第二,在Windows端下载一个SSH telnet工具。推荐的有PuTTySecureCRT

    第三,启用SSH隧道。下面以SecureCRT为例,PuTTy操作类似。

    先建立一个连接到Linux端的普通SSH会话。

    在该会话选项中端口转发中,添加本地端口转发属性


    见右图中,在本地中输入一个端口,这里选择了5901,也可以选择5801或其他端口,只要不与本地的服务相冲突,这个本地端口与Linuxvncserver监听的窗口端口无关,在远程中输入5901,这个端口是Linux端的vncserver监听的端口,这里是启动窗口1,如果启动窗口2则这里要输入5902。确定。

    设置完后,在SecureCRT中启动与LinuxSSH会话,正确登录Linux后。打开vncviewer


    VNC服务器中输入:localhost:5901(这里的端口就是上面指定的本地端口,而非Linux端的端口),因为这里要连接的是本地的SecureCRT启动的SSH隧道。在VNC运行过程中SecureCRT不能关闭。

    这样,在Linux端的防火墙就可以只开放SSH端口,关闭掉有关VNC的所有端口。
  • Linux程序自启动设置方法

    2011-10-12 11:33:01

    方法1:51Testing软件测试网^"T*Rmk~a f
    由于Linux版本的不同:自动启动的shell脚本放置的位置和名称也不相同,在redhat、红旗等版本的Linux中启动脚本放在/etc/rc.d目录中,名称是:rc.local
    SuSE版本的Linux启动脚本是放在/etc/init.d目录中,名称 boot.local.51Testing软件测试网E { N5FF51Testing软件测试网?9B/oak

    例如:apache、mysql自动启动
    wMk;O S115295在红旗、radhat等Linux中如下:51Testing软件测试网-rw!Jq5k/@
    #cd /etc/rc.d
    +pM6vV-HC-k115295#vi rc.local
    ]9B;t Ek!z2Ckb9ou115295在rc.local加入:51Testing软件测试网F&e.Ld"XA ~N
    /usr/local/apache/bin/apachectl start
    "?/Z1rQ G+a115295/usr/local/mysql/bin/mysqld_safe --user=mysql &

    "I ]v;M[`k115295

    |U2P&PSuSE中如下
    ~t/E(N)W!fE9\#{[d115295#cd /etc/init.d51Testing软件测试网yl:]^ B5p |
    #vi boot.local51Testing软件测试网 uzUqfh0z
    在boot.local加入:
    *VH_x-b115295/usr/local/apache/bin/apachectl start51Testing软件测试网!z)}-Z9iLq BT
    /usr/local/mysql/bin/mysqld_safe --user=mysql &
    51Testing软件测试网(_;Y9c5Nr#z q;U

    8w$@`4Q^*m B115295方法2:
    (\%_d;N Bb2X&l4d9p115295将apache注册为系统
    服务51Testing软件测试网 axG(LbA*R$xX
    首先将apachectl命令拷贝至/etc/rc.d/init.d目录下,改名为httpd51Testing软件测试网8b {/UPra^ f
    使用编辑器打开httpd文件,并在第一行#!/bin/sh下增加两行文字如下51Testing软件测试网YG?\bU
    # chkconfig: 35 70 3051Testing软件测试网`/Z X/ex8_/@{"n$x,H8D
    # description: Apache51Testing软件测试网:R,G4`&^B5L
    接着注册该服务51Testing软件测试网 m2J.m:h:Ec1Xk!l/Y[
    chkconfig --add httpd
    1o;`!u ~f115295一切OK了,启动服务51Testing软件测试网\x[^%sj8a
    service httpd start
    .M ]t]+g&J3d;u115295其中所增加的第二行中三个数字第一个表示在运行级别3和5下启动apache,第二、三是关于启动和停止的优先级配置,无关紧要。
    *J;lF-Gs115295重新启动系统后可以启动的过程中看到Starting httpd..... [OK]的信息,这样就完成设置过程。
    51Testing软件测试网/{i^cf,G[

    %C*Jb-I)kE1152953、我最习惯的设置服务自动启动的方式是在rc.local里加类似一下的脚本:
    9T+cjO!gpV11529551Testing软件测试网"m,H}Xc5s
    #sshd
    )k7y?4i E.X5Q115295/usr/local/sbin/sshd
    51Testing软件测试网3{0k.y%e0?+N/Cm8X MK-^

    51Testing软件测试网YCb6SxoF a.X*?

    #proftpd51Testing软件测试网3E f E7W1m U
    /usr/local/sbin/proftpd
    51Testing软件测试网 b)r+E9{,A\1OUZI

    ;UUb(N9F115295#apache51Testing软件测试网1W Mp xm}/S
    /home/apache/bin/apachectl start
    51Testing软件测试网6h|!n;Ve

    \/a?D sgP115295#mysql51Testing软件测试网WJ;`H3o7o8fO#E o
    /home/mysql/bin/safe_mysqld --port=3306 &

    G z/T+N9e7ga115295

    zCm*I.dl mn115295#start oracle8i listener first51Testing软件测试网+w8E Y`h#k$\
    su - oracle -c 'lsnrctl start'
    51Testing软件测试网o3GCW2uk?/cd

    x w![@(\9Z;Q1S115295#start oracle8i51Testing软件测试网.m8~,K C#w3N
    su - oracle -c 'dbstart'

  • Linux压缩文件的读取

    2011-10-12 10:57:35

    ·   *.Z       compress 程序压缩的档案;

    ·   *.bz2     bzip2 程序压缩的档案;

    ·   *.gz      gzip 程序压缩的档案;

    ·   *.tar     tar 程序打包的数据,并没有压缩过;

    ·   *.tar.gz tar 程序打包的档案,其中并且经过 gzip 的压缩!

    ·   *.zip     zip 程序压缩文件

    ·   *.rar     rar 程序压缩文件

    Compress压缩文件

    [root@test /root]# cp /etc/man.config /root
    [root@test /root]# compress man.config //
    压缩man.config这个文件

    [root@test /root]# compress -d man.config.Z //-d
    解压缩这个文件
    [root@test /root]# uncompress man.config.Z //
    解压缩这个文件

    当你以 compress 压缩之后,如果没有下达其它的参数,那么原本的档案就会被后来的 *.Z 所取代

    Gzip压缩文件和zcat

    [root@test /root]# gzip [-d#] filename <==压缩与解压缩
    [root@test /root]# zcat filename.gz     <==
    读取压缩档内容
    参数说明:
    -d
    :解压缩的参数!

    -r :递归处理,将指定目录下的所有文件及子目录一并处理
    -#
    :压缩等级, 1 最不好, 9 最好, 6 是默认值!

    [root@test /root]# gzip man.config   //会产生 man.config.gz 这个档案

    [root@test /root]# zcat man.config.gz //会读取出 man.config 的内容

    [root@test /root]# gzip -d man.config.gz
    [root@test /root]# gunzip man.config.gz
    解压缩,产生 man.config 这个档案

    [root@test /root]# gzip -9 man.config //以最大压缩比压缩 testing 这个档案!

    [root@test /root]# gzip -r filename.gz file1 file2 file3 /usr/work/school
    //
    file1file2 file3、以及 /usr/work/school 目录的内容(假设这个目录存在)压缩起来,然后放入 filename.bz2 文件中

    Bzip2压缩文件和bzcat

    [root@test /root]# bzip2 [-dz] filename <==压缩解压缩指令
    [root@test /root]# bzcat filename.bz2 <==
    读取压缩文件内容指令
    参数说明:
    -d
    :解压缩的意思!

    -z
    :压缩的意思!

    范例:
    同样的,我们以刚刚拷贝过来的 /root/man.config 这个档案为例

    [root@test /root]# bzip2 –z man.config
    [root@test /root]# bzcat man.config.bz2
    [root@test /root]# bzip2 –d man.config.bz2
    [root@test /root]# bunzip2 man.config.bz2

    [root@test /root]# bzip2 filename.bz2 file1 file2 file3 /usr/work/school

    //file1file2 file3、以及 /usr/work/school 目录的内容(假设这个目录存在)压缩起来,然后放入 filename.bz2 文件中

    Tar压缩文件

    [root@test /root]# tar [-zxcvfpP] filename
    [root@test /root]#
    tar -N 'yyyy/mm/dd' /path -zcvf target.tar.gz source
    参数说明:
    -z
    :是否同时具有 gzip 的属性?

    -x
    :解开一个压缩档案的参数指令!

    -t
    :查看 tarfile 里面的档案!

    -c
    :建立一个压缩档案的参数指令

    -v
    :压缩的过程中显示档案!

    -f
    :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!

       例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成

       『 tar -zcvPf tfile sfile』才对喔!

    -p
    :使用原档案的原来属性(属性不会依据使用者而变)

    -P
    :可以使用绝对路径

    -N
    :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的档案中!

    --exclude FILE
    :在压缩的过程中,不要将 FILE 打包!

    范例:
    [root@test /root]# tar -cvf directory.tar directory

    //只将目录整合打包成一个档案

    [root@test /root]# tar -zcvf directory.tar.gz directory
    除了将目录打包外,同时以 gzip 压缩

    [root@test /root]# tar -zcvf filename.tar.gz /home/test/*
    /home/test/ 这个目录下的档案全部打包并压缩成为一个 filename.tar.gz 的档案

    [root@test /root]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩

    [root@test /root]# tar -xvf directory.tar
    tar 的封包,请注意,由于没有 gzip (.tar 而非 .tar.gz) 的作用,所以只要使用 –xvf 即可!不需要加上 z ,否则会显示有问题!

    [root@test /root]# tar -zxvf directory.tar.gz
    这个就是有加上 gzip 的压缩的结果!所以需要加上 –z 呦!

    [root@test /root]# tar –ztvf directory.tar.gz
    这个 t 可以用来查看 tar 里面的档案信息呢!而不需要将他解开!

    [root@test /root]# tar -zcvPf home.tar.gz /home
    则建立起来的压缩档内档案为绝对路径
    请注意,使用这个 P 的参数时,不要将 P 加在 f 后面,因为

    f
    之后要立即接档名才行喔!

    [root@test /root]# tar -N '2002/06/25' -zcvf home.tar.gz /home
    上面是说 在 /home 这个目录中,比 2002/06/25 日还要新的档案才会被打包进入 home.tar.gz 这个档案中!

    [root@test /root]# tar -zcvf host.tar.gz / --exclude /mnt --exclude /proc
    上面是说,将根目录的所有数据都打包进 host.tar.gz 这个档案中,但是 /mnt /proc 则不打包!

    [root@test /root]# tar -cvf - /home | tar -xvf -
    上面的意思是『将 /home 打包之后,直接解压缩在 /root 底下!』嘿嘿!不需要再建立一次中间档案!不过,使用上面的语法最好使用『绝对路径』,比较不会有问题!这个方式适合不想要建立中间档案时!

    Zipunzip压缩文件

    [root@test /root]# zip -r myfile.zip ./* //将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,r表示递归压缩子目录下所有文件.

    [root@test /root]# zip -d myfile.zip smart.txt //删除压缩文件中smart.txt文件

    [root@test /root]# zip -m myfile.zip ./rpm_info.txt //向压缩文件中myfile.zip中添加rpm_info.txt文件

    [root@test /root]# unzip -o -d /home/sunny myfile.zip //myfile.zip文件解压到 /home/sunny/

    Rar压缩文件

    现在网上多数压缩包是rar格式的,所以需要一个rar工具。

    首先在http://www.rarlab.com/download.htm下载RAR 3.60 beta 6 for Linux

    我解压到/opt下,会自动建立rar目录。这个工具无需编译可以直接使用。

    $HOME目录下建立bin目录。

    bin目录中建立一个链接。ln -s /opt/rar/rar rar

    就可以用rar工具压缩和解压.rar文件了。不过此工具是命令方式的,和在DOS下的RAR操作是一样的。

    bash脚本例子,排除指定目录app:
    DATE=`date +"%Y-%m-%d-%H%M%S"`
    tar -czvf /root/chinawidth_bak/realese/chinawidth.war_$DATE.tar.gz chinawidth.war --exclude=chinawidth.war/app
  • 解决linux打开文件数1024限制的解决办法

    2011-10-12 09:10:24

    linux为redhat服务器版本(非个人版),必须设置的内容
    ----------------------------------------------------------------------------
    1、/etc/pam.d/login 添加
    session required     /lib/security/pam_limits.so
    注意看这个文件的注释
    2. /etc/security/limits.conf 添加
    www          –    nofile       1006154
    www 是一个用户,如果是想所有用户生效的话换成 * ,设置的数值与硬件配置有关,别设置太大了。
    -----------------------------------------------------------------------------
     
     
    3. 修改 /etc/rc.local   添加
    echo 8061540 > /proc/sys/fs/file-max
    做完3个步骤,就可以了。
    补充说明:
    /proc/sys/fs/file-max
    该文件指定了可以分配的文件句柄的最大数目。如果用户得到的错误消息声明由于打开文件数已经达到了最大值,从而他们不能打开更多文件,则可能需要增加该值。可将这个值设置成有任意多个文件,并且能通过将一个新数字值写入该文件来更改该值。
    缺省设置:4096
    /proc/sys/fs/file-nr
    该文件与 file-max 相关,它有三个值:
    已分配文件句柄的数目
    已使用文件句柄的数目
    文件句柄的最大数目
    该文件是只读的,仅用于显示信息。
    关于“打开文件数”限制
    Linux系统上对每一个用户可使用的系统资源都是有限制的,这是多用户系统必然要采用的一种资源管理手段,试想假如没有这种机制,那么任何一个普通用户写一个死循环程序,用不了多久系统就要“拒绝服务”了。
    今 天我遇到了tomcat日志报的错误信息”too many open files”,第一意识就想到了是ulimit控制的”open files“限制。然而问题来了。我在/etc/profile里加入了 ulimit -n 4096保存之后,普通用户登录的时候均会收到一条错误信息ulimit: open files: cannot modify limit: Operation not permitted。然后普通用户的open files限制还是默认值1024。
    然后开始在互联网上搜索关于ulimit的信息。互联网果然方便,信息铺天盖地。大家也可以搜一下试一下。其中我了解到两个以前不知道的相关内容。
    第一个是内核参数 fs.file-max  ,影射为 /proc/sys/fs/file-max
    第二个是配置文件 /etc/security/limits.conf
    其 中大部分的信息中提到 将 /proc/sys/fs/file-max的值设置为4096和ulimit -n 4096是相同的效果。对此我很怀疑,为什么呢?首先ulimit 是一个普通用户也可以使用的命令,而fs.file-max只有root有权设置。其次,很明显fs.file-max是一个全局的设置,而ulimit 是一个局部的设置,很明显的是不相同的。
    带着疑虑,又在网上搜索了许久,未果(实际上是我搜索的关键字不够准确)。
    最后终于在内核文档/usr/src/linux/Documentation/sysctl/fs.txt里找到下面一段话:
    file-max & file-nr:
    The kernel allocates file handles dynamically, but as yet it doesn’t free them again. The value in file-max denotes the maximum number of file-handles that the Linux kernel will allocate. When you get lots of error messages about running out of file handles, you might want to increase this limit.
    The three values in file-nr denote the number of allocated file handles, the number of unused file handles and the maximum number of file handles. When the allocated file handles come close to the maximum, but the number of unused file handles is significantly greater than 0, you’ve encountered a peak in your usage of file handles and you don’t need to increase the maximum.
    这两段话的大致意思是:
    内核动态地分配和释放“file handles”(句柄)。file-max的值是内核所能分配到的最大句柄数。当你收到大量关于句柄用完的错误信息时,你可以需要增加这个值以打破老的限制。
    file- nr中的三个值的含意分别是:系统已经分配出去(正在使用)的句柄数,没有用到的句柄数和所有分配到的最大句柄数。当分配出去的句柄数接近 最大句柄数,而“无用的句柄数”大于零时,表明你遇到了一个“句柄”使用高峰,这意为着你不需要增加file-max的值。
    看完这段话,相信大家都明白了。file-max是系统全局的可用句柄数。根据我后来又翻查的信息,以及对多个系统的查看求证,这个参数的默认值是跟内存大小有关系的,增加物理内存以后重启机器,这个值会增大。大约1G内存10万个句柄的线性关系。
    再 回过头来看这两段话,不知道你意识到了没有,文中只提到了file-max的增加,而没有提到了该值的减少。那些在操作ulimit时同时操 作了file-max的哥们儿,估计无一例外地将file-max设置成了4096或者2048。但以似乎也没有因此而导致系统无法打开文件或者建议连 接。(实际上,我将file-max的值设备成256,然后使用shell编 写用vi打开500个文件角本运行,并没有得到任何错误信息,查看file- nr的值,系统当前分配的句柄值已经远超过了后面的最大值。所以我猜想对于file-max的任何减少的操作都是毫无意义的,姑且不去管他。实践中需要减 少file-max的时候总是不多见的。 )实事证明我犯了一个致命的错误。我测试的 时候使用的是root用户,而当我再次使用普通用户测试的时候,预料中的错误信息出现了:”Too many open files in system”。可见,file-max的减少对系统也是影响力的。前面的结论“所以我猜想对于file-max的任何减少的操作都是毫无意义的”是错误 的。
    然后便是/etc/security/limits.conf文件,这个文件很简单,一看就能明白。
    于是我按照注释中描述的格式两个两行:
    *  soft  nofile  4096
    *  hard  nofile  4096
    恐 怖的是,网上居然有人说改了这个设置是需要重启系统的!实在是让人想不通啊,鼎鼎大名的UNIX系统,怎么可能因为这么小小的一个改动就需要 重启系统呢?结果当我再次以普通用户登录的时候,那个”ulimit: open files: cannot modify limit: Operation not permitted”提示没有了,查看ulimit -n,果然已经变成了4096。
    linux lsof 修改句柄限制(转)
    在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。
    对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有点捉襟见肘了。如果单个进程打开的文件句柄数量超过了系统定义的值,就会提到“too many files open”的错误提示。如何知道当前进程打开了多少个文件句柄呢?下面一段小脚本可以帮你查看:
    lsof -n |awk ‘{print $2}’|sort|uniq -c |sort -nr|more
    在系统访问高峰时间以root用户执行上面的脚本,可能出现的结果如下:
    # lsof -n|awk ‘{print $2}’|sort|uniq -c |sort -nr|more
    131 24204
    57 24244
    57 24231
    56 24264
    其中第一行是打开的文件句柄数量,第二行是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。
    ps -aef|grep 24204
    mysql 24204 24162 99 16:15 ? 00:24:25 /usr/sbin/mysqld
    哦,原来是mysql进程打开最多文件句柄数量。但是他目前只打开了131个文件句柄数量,远远底于系统默认值1024。
    但是如果系统并发特别大,尤其是squid服务器,很有可能会超过1024。这时候就必须要调整系统参数,以适应应用变化。Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令:
    ulimit -HSn 4096
    以 上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响 应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后。
Open Toolbar