• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Benjamin

            靜以修身,儉以養德,非澹薄無以明志,非寧靜無以致遠。
            隨筆 - 397, 文章 - 0, 評論 - 196, 引用 - 0
            數據加載中……

            linux---redhat開發整理(一)

            一、ssh服務的開啟:
            首先用setup命令,打開System service菜單,看看有沒有sshd,如果沒有就要安裝了,如果有按空格鍵選中它。
            /etc/init.d/sshd status   查看狀態       /etc/init.d/sshd start    開啟  /etc/init.d/sshd stop  停止
            vi /etc/ssh/sshd_config 找到#Port 22,標識默認使用22端口,修改為:Port 22XX (自己設定的端口)然后重啟服務進程
            查看/etc/ssh/sshd_config文件的PermitRootLogin值,如果是no,則需要修改為yes,并重啟sshd服務,只有sshd服務開啟才能用putty。

            二、防火墻相關的命令:
            在redhat下,需要在setup中打開fileware(防火墻)才可以使用以下命令切記(默認這個是不開啟的)
            關閉/etc/rc.d/init.d/iptables stop                            開啟/etc/rc.d/init.d/iptables start

            查看當前配置:iptables -L          關閉防火墻:chkconfig --level 2345 iptables off           service iptables stop
            1) 重啟后生效
            開啟: chkconfig iptables on
            關閉: chkconfig iptables off
            2) 即時生效,重啟后失效
            開啟: service iptables start
            關閉: service iptables stop
            需要說明的是對于Linux下的其它服務都可以用以上命令執行開啟和關閉操作。
            在開啟了防火墻時,做如下設置,開啟相關端口,
            修改/etc/sysconfig/iptables 文件,添加以下內容:
            -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
            -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT


            三、FTP相關:在redhat5上,有gssftp和vsftp,gssftp是Redhat linux企業版自帶的FTP工具。包含在/etc/xinetd/gssftp下。提供krb5驗證機制。
            vsftp也是FTP服務器軟件,功能比gssftp完備。也是推薦使用的FTP服務器軟件。它是獨立守護程序。
            vsftpd的rpm包在redhat的光盤上應該可以找到,用rpm -ivh來安裝rpm包。
            主要配置文件是:/etc/vsftpd/vsftpd
              /etc/vsftpd.ftpusers /etc/vsftpd.user_list 主要用于用戶的訪問控制。
              建議將userlist_deny=YES。更改完配置service vsftpd rest
            vsftp連接時的"500 OOPS:cannot change directory:/root"錯誤,解決方法:
             sestatus -b | grep ftp      確切地說,只是查看了SELinux中ftp的狀態。setsebool -P ftpd_disable_trans on      或者 setsebool -P ftp_home_dir on
            重啟vsftpd: service vsftpd restart

            gssftp的路徑:etc/xinetd.d/gssftp,將disable設置為no且server_args設置為 -l,即可
              啟用。gssftp也是RedHat企業版自帶的ftp工具。
              
              # default: off
              # description: The kerberized FTP server accepts FTP connections \
              #              that can be authenticated with Kerberos 5.
              service ftp
              {
                      disable = no
                      flags           = REUSE
                      socket_type     = stream
                      wait            = no
                      user            = root
                      server          = /usr/kerberos/sbin/ftpd
                      server_args     = -l
                      #server_args    = -l -a
                      log_on_failure  += USERID
              }
              去掉-a的目的是因為好多ftp客戶端不支持KRB5驗證機制,disable=no開啟,service xinetd restart
            但是gssftp不夠安全。

            四、gcc的安裝:有了下面的六個包,gcc-4.1.2才算安裝完成,最好按照下面的順序來安裝。
            rpm -ivh cpp-4.1.2-42.el5.i386.rpm 
            rpm -ihv kernel-headers-2.6.18-92.el5.i386.rpm 
            rpm -ivh glibc-headers-2.5-24.i386.rpm
            rpm -ivh glibc-devel-2.5-24.i386.rpm
            rpm -ivh libgomp-4.1.2-42.el5.i386.rpm
            rpm -ivh gcc-4.1.2-42.el5.i386.rpm
            rpm -ihv libstdc++-devel-4.1.2-42.el5.i386.rpm
            rpm -ihv gcc-c++-4.1.2-42.el5.i386.rpm
            如果已經安裝了,但是沒有成功,建議用rpm的強制命令,在上述命令后面加上參數--force --nodeps卸載用rpm -e *.rpm;
            上面的7個包,在Redhat5上是可以找到,在Redhat4上能找到幾個就裝幾個,我在Redhat4上只找到了6個,Redhat5上面7包都有,
            安裝時如果加了--force --nodeps,則順序無所謂。

            gcc下使用masm=intel,出現的還是AT&T的匯編代碼,就是gcc安裝不完整,最好重新安裝一遍gcc。

            五、rpm相關:
            rpm是Red Hat針對自己的系統提出了一個 較好的辦法來管理成千上百的軟件。在系統中安裝了rpm管理系統
            以后,只要是符合rpm文件標準的打包的程式都能方便的安裝,升級,卸載 ,因此非常多linux都使用rpm系統。
            由于rpm的源程式能在別的系統上進行編譯, 所以有可能在別的系統上也使用rpm 。

            rpm包的文件名中包含了這個軟件包的版本信息,操作系統信息,硬件需求等等。
            比如mypackage-1.1-2TL.i386.rpm,其中mypackage是在系統中登記的軟件包的名字
            1.1是軟件的版本號,2是發行號,TL表示用于TL操作系統,還可能是RH等。i386表示
            用于intel x86平臺,還可能是sparc等

            查看是否安裝了rpm包,用rpm -qa|grep rpm包名,或者rpm -qa;
            rpm-V命令用來驗證一個軟件包 ,rpm -Va(v是大寫) 驗證所有已安裝的軟件包,可以顯示已刪除的文件信息;
            rpm -qf 文件名,顯示文件屬于那個rpm包;i 表示info,獲得軟件包的信息;l 表示list,獲得文件列表;a 表示all,在所有包中執行查詢;
            f 表示file,根據文件進行相關的查詢; p 表示package,根據軟件包進行查詢

            rpm -Vf 文件名,顯示rpm包中所有關于文件名的信息;
            如果新的 RPM,但不知道它是做什么的,可以鍵入如下命令:rpm -qip koules-1.2-2.i386.rpm ,獲取關于一個軟件包的版本,用途等相關信息;
            rpm -qlp .rpm,顯示rpm包在系統里安裝了什么文件;rpm -ql 包名,可以知道rpm包中的文件安裝到那里去;
            不安裝不過獲取rpm包中的文件用用工具rpm2cpio和cpio
            rpm2cpio xxx.rpm | cpio -vi
            rpm2cpio xxx.rpm | cpio -idmv
            rpm2cpio xxx.rpm | cpio --extract --make-directories
            參數i和extract相同,表示提取文件。v表示指示執行進程 d和make-directory相同,表示根據包中文件原來的路徑建立目錄 m表示保持文件的更新時間。


            安裝.src.rpm軟件包的方法:這類軟件包是包含了原始碼的rpm包,在安裝時需要進行編譯。這類軟件包有兩種安裝方法:
            方法一:
            1.執行rpm -i your-package.src.rpm
            2. cd /usr/src/redhat/SPECS
            3. rpmbuild -bp your-package.specs 一個和你的軟件包同名的specs文件
            4. cd /usr/src/redhat/BUILD/your-package/ 一個和你的軟件包同名的目錄
            5. ./configure 這一步和編譯普通的源碼軟件相同,能加上參數
            6. make
            7. make install
            方法二:
            1.執行rpm -i you-package.src.rpm
            2. cd /usr/src/redhat/SPECS
            3. rpmbuild -bb your-package.specs 一個和你的軟件包同名的specs文件
            這時,在/usr/src/redhat/RPM/i386/ (根據具體包的不同,也可能是i686,noarch等等)
            在這個目錄下,有一個新的rpm包,這個是編譯好的二進制文件。 執行rpm -i new-package.rpm即可安裝完成。

            六、gdb7.2的編譯,目前gdb7.2尚未有rpm包,只有tar包,解壓縮,到壓縮目錄下執行./configure ;mke;make install
            cofigure無須參數,make時可能發生如下的錯誤提示和解決方法
            錯誤提示no termcap library found,解決方法如下:
            [root@localhost /]# rpm -qa |grep ncurses
            ncurses-5.5-24.20060715
            ncurses-devel-5.5-24.20060715
            對應的rpm為ncurses-5.5-24.20060715.i386和ncurses-devel-5.5-24.20060715.i386,可以在系統盤上的Server目錄下可以找到。
            然后在重新configure、make、make install。
            安裝好的gdb7.2后,打開gdb的界面如下
            [root@localhost /]# gdb
            GNU gdb (GDB) 7.2
            Copyright (C) 2010 Free Software Foundation, Inc.
            License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
            This is free software: you are free to change and redistribute it.
            There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
            and "show warranty" for details.
            This GDB was configured as "i686-pc-linux-gnu".
            For bug reporting instructions, please see:
            <http://www.gnu.org/software/gdb/bugs/>.
            (gdb)
            上面的這個編譯問題在AMD的平臺上出現的頻率大些
            在編譯器要確保安裝 ncurses和flex,如果都安裝了,還是在make時報錯誤,建議將定義編譯路徑和將路徑加到環境變量中去,如:
            export PATH=$PATH:/usr/local/gdb7.2/bin
            ./configure --prefix=/usr/local/gdb7.2(如果是全新安裝,不用設置路徑,直接configure就可以)
            make
            make install

            gdb7.2安裝時出現錯誤:/usr/bin/install: cannot stat `libinproctrace.so': No such file or directory
            解決方法:進入到gdb/gdbserver/Makefile,找到 if [ x$IPA_DEPFILES != x ]; then \
            將其改為if [ x${IPA_DEPFILES} != x ]; then \或if [ x"$(IPA_DEPFILES)" != x ]; then \
            然后重新make install即可,也可以修改Makefile.in,修改方法和上面的一樣,重新make、make install
            安裝完后,如果gdb的版本不是7.2的,重啟一次系統就可以,這樣的編譯錯誤一般出現在新裝系統中。

            一般在gdb中查看STL,會出現以下信息One of the arguments you tried to pass to operator [ ] could not be converted to what the function wants.
            如果gdb要在調試中查看STL,必須下個腳本, http://sourceware.org/gdb/wiki/STLSupport?action=AttachFile&do=view&target=stl-views-1.0.3.gdb
            下載后將文件保持在用戶(如root)目錄,命名為.gdbinit,如果還是不能查看,則可以打開gdb,source gdbinit文件即可。
            查看時使用pvector, plist, pmap, pset, pdequeue, pstack, pqueue, ppqueue, pbitset, pstring, pwstring 命令

            如果想在如何目錄下用gdb命令,必須將:/usr/local/gdb7.2/bin加到環境變量中去
            export PATH=$PATH:/usr/local/gdb7.2/bin只是臨時環境變量,當次登陸有用,機器重啟或下次登陸就不起作用

            永久環境變量的用法:vi /etc/profile
            在里面加入:
            export PATH=$PATH:/usr/local/gdb7.2/bin,這個對所有的用戶都有效
            或者在每個用戶下的.bashrc
            文件中加入export PATH=$PATH:/usr/local/gdb7.2/bin,但是這兩種重啟或注銷才起作用

            七、linux下c檢查內存泄漏的簡單方法
            先#include <mcheck.h>
            在需要檢查內存泄漏的代碼開始處加入
            mtrace();
            在需要檢查內存泄漏的代碼結束處加入
            muntrace();
            修改完成。
            在bash中,設置環境變量MALLOC_TRACE,例如:
            export MALLOC_TRACE=/tmp/mtrace
            然后執行你的程序。
            mtrace a.out /tmp/mtrace (mtrace 程序的目標文件 $MALLOC_TRACE)

            Memory not freed:

            -----------------

            Address Size Caller

            0x09b08378 0xa at /XXX/a.c:6

            0x09b08388 0x10 at /XXX/a.c:7

            可以看到,會顯示未釋放動態空間的代碼具體位置
            如果mtrace不可用安裝glibc-utils的安裝包,要和libc的版本號一樣(通過rpm -q glibc來獲取glibc的版本號).
            安裝glibc-utils,需要安裝gd、libXpm兩個依賴包。這三者的版本號不一定都一致
            gd-2.0.5-11.e16.x86-64.rpm
            glibc-utils-2.12-1.32.e16.x86-64.rpm
            libXpm-3.5.10-2.e16.x86-64.rpm
            建議用yum install  glibc-utils來安裝(對于redhat或cenos)

            這個方法如今不是很有效,建議大家還是用Valgrind 。
            www.valgrind.org下載最新版,解壓縮tar –jxvf valgrind-3.2.3.tar.bz2
            切到解壓縮路徑cd valgrind-3.2.3 ./configure、 Make;make install
            我們就要用如下方法調用: #valgrind --leak-check=full --show-reachable=yes --trace-children= yes   ./a.out
            a.out是可執行文件。主要參數說明:
             --log-fd=N 默認情況下,輸出信息是到標準錯誤stderr,也可以通過—log-fd=8,輸出到描述符為8的文件

                      --log-file=filename將輸出的信息寫入到filename.PID的文件里,PID是運行程序的進行ID。可以通過--log-file exactly=filename指定就輸出到filename文件。

                      --log-file-qualifier=<VAR>,取得環境變量的值來做為輸出信息的文件名。如—log-file-qualifier=$FILENAME。

                      --log-socket=IP:PORT 也可以把輸出信息發送到網絡中指定的IP:PORT去

                      --error-limit=no 對錯誤報告的個數據進行限制,默認情況不做限制

                      --tool=<toolname> [default: memcheck]

            --tool=memcheck:要求用memcheck這個工具對程序進行分析

                 --leak-ckeck=yes 要求對leak給出詳細信息

                 --trace-children=<yes|no> [default: no]跟蹤到子進程里去,默認請況不跟蹤

                 --xml=<yes|no> [default: no]將信息以xml格式輸出,只有memcheck可用

                 --gen-suppressions=<yes|no|all> [default: no]如果為yes,valgrind會在每發現一個錯誤便停下讓用戶做選擇是繼續還是退

            更多選項請參看: http://www.valgrind.org/docs/manual/manual-core.html可以把一些默認選項編輯在 ~/.valgrindrc文件里。

            這里使用valgrind的memcheck和callgrind兩個工具的用法,其實valgrind還有幾個工具:“cachegrind”,用于檢查緩存使用的;“helgrind”用于檢測多線程競爭資源的,等等。



            八、bind9的安裝編譯,和大部分的linux上的安裝程序一樣,也是configure、make、make install,不過要注意
            configure的參數--prefix=/usr/local/bind  --enable-threads --without-openssl,prefix是路徑。
            通過dig命令直接生成named.root---------------cd /usr/local/bind/var;dig @a.root-servers.net . ns>named.root
            判斷bind是否在chroot下工作:
            找named對應的進行id號
            # ps -fCnamed
            UID        PID  PPID  C STIME TTY          TIME CMD
            named     1729     1  0 Nov27 ?        00:00:04 /usr/sbin/named -u named -t /var/named/chroot
            相應的id的root
            # ls -l /proc/1729/root
            lrwxrwxrwx  1 named named 0 Nov 29 10:21 /proc/1729/root -> /var/named/chroot
            # ls -l /proc/1729/root/
            total 24
            drwxr-xr--    2 root named 4096 Nov  1 05:30 dev
            drwxr-x---    2 root named 4096 Nov  1 05:30 etc
            dr-xr-xr-x  157 root root     0 Nov 27 07:32 proc
            drwxr-x---    5 root named 4096 Nov  1 05:30 var
            看到沒有,bind9的chroot是/var/named/chroot,它的root下面有dev etc prov var這些常用的,很熟悉的
            目錄。。。
            # lsof -p 1729
            COMMAND  PID  USER   FD   TYPE     DEVICE    SIZE    NODE NAME
            named   1729 named  cwd    DIR        8,5    4096 2916360 /var/named/chroot/var/named
            named   1729 named  rtd    DIR        8,5    4096 2916356 /var/named/chroot
            named   1729 named  txt    REG        8,2  287084  764733 /usr/sbin/named
            named   1729 named  mem    REG        8,2   97120 1192403 /lib/libnsl-2.3.4.so
            named   1729 named  mem    REG        8,2  107800 1192395 /lib/tls/libpthread-2.3.4.so
            named   1729 named  mem    REG        8,2   82944  764756 /usr/lib/libgssapi_krb5.so.2.2
            named   1729 named  mem    REG        8,2   63624  764741 /usr/lib/libz.so.1.2.1.2
            named   1729 named  mem    REG        8,2    7004 1192400 /lib/libcom_err.so.2.1
            named   1729 named  mem    REG        8,2   81120 1192397 /lib/libresolv-2.3.4.so
            named   1729 named  mem    REG        8,2   47404 1191410 /lib/libnss_files-2.3.4.so
            named   1729 named  mem    REG        8,2   16732 1192394 /lib/libdl-2.3.4.so
            named   1729 named  mem    REG        8,2   25460  758093 /usr/lib/libisccc.so.0.1.0
            named   1729 named  mem    REG        8,2 1529008 1192392 /lib/tls/libc-2.3.4.so
            named   1729 named  mem    REG        8,2   57252  758097 /usr/lib/libisccfg.so.0.0.11
            named   1729 named  mem    REG        8,2   59684  758101 /usr/lib/liblwres.so.1.1.2
            named   1729 named  mem    REG        8,2  941024 1192401 /lib/libcrypto.so.0.9.7a
            named   1729 named  mem    REG        8,2  112168 1192347 /lib/ld-2.3.4.so
            named   1729 named  mem    REG        8,2  415188  764755 /usr/lib/libkrb5.so.3.2
            named   1729 named  mem    REG        8,2  136016  761815 /usr/lib/libk5crypto.so.3.0
            named   1729 named  mem    REG        8,2 1055504  758085 /usr/lib/libdns.so.16.0.0
            named   1729 named  mem    REG        8,2  224764  758089 /usr/lib/libisc.so.7.1.5
            named   1729 named    0u   CHR        1,3            2494 /dev/null
            named   1729 named    1u   CHR        1,3            2494 /dev/null
            named   1729 named    2u   CHR        1,3            2494 /dev/null
            named   1729 named    3u  unix 0xec796880          313580 socket
            named   1729 named    4u   CHR        1,3            2494 /dev/null
            named   1729 named    5r  FIFO        0,7          313587 pipe
            named   1729 named    7w  FIFO        0,7          313587 pipe
            named   1729 named    8r   CHR        1,8         2916369 /var/named/chroot/dev/random
            named   1729 named   20u  IPv4     313593             UDP localhost.localdomain:domain
            named   1729 named   21u  IPv4     313594             TCP localhost.localdomain:domain (LISTEN)
            named   1729 named   22u  IPv4     313595             UDP mail.xxxer.com:domain
            named   1729 named   23u  IPv4     313596             TCP mail.xxxer.com:domain (LISTEN)
            named   1729 named   24u  IPv4     313597             UDP *:32964
            named   1729 named   25u  IPv6     313598             UDP *:32965
            named   1729 named   26u  IPv4     313599             TCP localhost.localdomain:rndc (LISTEN)
            對比一下ldd的結果:
            #ldd /usr/sbin/named
                    liblwres.so.1 => /usr/lib/liblwres.so.1 (0x00da7000)
                    libdns.so.16 => /usr/lib/libdns.so.16 (0x00846000)
                    libisccfg.so.0 => /usr/lib/libisccfg.so.0 (0x00cee000)
                    libcrypto.so.4 => /lib/libcrypto.so.4 (0x00230000)
                    libisccc.so.0 => /usr/lib/libisccc.so.0 (0x00726000)
                    libisc.so.7 => /usr/lib/libisc.so.7 (0x00c66000)
                    libnsl.so.1 => /lib/libnsl.so.1 (0x00324000)
                    libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00f19000)
                    libc.so.6 => /lib/tls/libc.so.6 (0x0033a000)
                    libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x001b0000)
                    libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00111000)
                    libcom_err.so.2 => /lib/libcom_err.so.2 (0x00bb7000)
                    libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00d6f000)
                    libresolv.so.2 => /lib/libresolv.so.2 (0x005ab000)
                    libdl.so.2 => /lib/libdl.so.2 (0x00c44000)
                    libz.so.1 => /usr/lib/libz.so.1 (0x00176000)
                    /lib/ld-linux.so.2 (0x00498000)
             
            然后再strace -f /usr/sbin/named 看看,,

            九、通過core文件找到程序崩潰的地方
            gdb exe文件路徑 core文件路徑(都要絕對路徑)
            然后直接run;如果在gdb的調試過程中出現了core文件,可以直接敲bt,如果還看不到,在敲where,有時只能看到函數,至于是哪一行
            要我們自己去定位;

            十、查看當前操作系統內核信息:uname -a 
                    查看當前操作系統發行版信息:cat /etc/issue
                    查看cpu型號:cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
                    查看物理cpu顆數:cat /proc/cpuinfo | grep physical | uniq -c
                    查看cpu運行模式: getconf LONG_BIT   結果是32表示運行在32模式下
                    查看cpu是否支持64bit:cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l  結果大于0, 說明支持64bit計算. lm指long mode, 支持lm則是64bit        
                    查看cpu信息概要:lscpu或者cat /proc/cpuinfo


                # head -n 1 /etc/issue   # 查看操作系統版本
                 # cat /proc/cpuinfo      # 查看CPU信息    
                 # hostname               # 查看計算機名
                 # lspci -tv              # 列出所有PCI設備
                 # lsusb -tv              # 列出所有USB設備
                 # lsmod                  # 列出加載的內核模塊
                 # env                    # 查看環境變量
                 # free -m                # 查看內存使用量和交換區使用量
                 # df -h                  # 查看各分區使用情況
                 # du -sh <目錄名>        # 查看指定目錄的大小
                 # grep MemTotal /proc/meminfo   # 查看內存總量
                 # grep MemFree /proc/meminfo    # 查看空閑內存量
                 # uptime                 # 查看系統運行時間、用戶數、負載
                 # cat /proc/loadavg      # 查看系統負載

                 # mount | column -t      # 查看掛接的分區狀態
                 # fdisk -l               # 查看所有分區
                 # swapon -s              # 查看所有交換分區
                 # hdparm -i /dev/hda     # 查看磁盤參數(僅適用于IDE設備)
                 # dmesg | grep IDE       # 查看啟動時IDE設備檢測狀況
                 # ifconfig               # 查看所有網絡接口的屬性
                 # iptables -L            # 查看防火墻設置
                 # route -n               # 查看路由表
                 # netstat -lntp          # 查看所有監聽端口
                 # netstat -antp          # 查看所有已經建立的連接
                 # netstat -s             # 查看網絡統計信息
                 
                 # ps -ef                 # 查看所有進程
                 # top                    # 實時顯示進程狀態
                 
                 # chkconfig --list       # 列出所有系統服務
                 # chkconfig --list | grep on    # 列出所有啟動的系統服務
             
                 # rpm -qa                # 查看所有安裝的軟件包
             
                 # w # 查看活動用戶      # id <用戶名> # 查看指定用戶信息      # last # 查看用戶登錄日志      # cut -d: -f1 /etc/passwd # 查看系統所有用戶      # cut -d: -f1 /etc/group # 查看系統所有組      # crontab -l # 查看當前用戶的計劃任務








            十一、其他:
            讓程序在后臺運行的命令:nohup忽略 hangup 信號(當用戶注銷(logout)或者網絡斷開時,終端會收到 HUP(hangup)信號從而關閉其所有子進程),執行此命令會在屏幕上打印出pid,命令格式nohup 應用程序路徑&;setsid使進程成為不接受 HUP 信號的終端的進程,用法setsid 應用程序路徑;(應用程序&)可以使進程不在當前終端上,所以同樣不收hup信號的干擾;
            disown [-ar] [-h] [jobspec ...]適用于已經執行的程序,用disown -h jobspec 來使某個作業忽略HUP信號;用disown -ah 來使所有的作業都忽略HUP信號;用disown -rh 來使正在運行的作業忽略HUP信號,用過 disown 之后,會將把目標作業從作業列表中移除,我們將不能再使用jobs來查看它,但是依然能夠用ps -ef查找到它。操作對象是作業,在運行命令時在結尾加了"&"來使它成為一個作業并在后臺運行,可通過jobs命令來得到所有作業的列表,如果并沒有把當前命令作為作業來運行,用CTRL-z(將當前進程掛起)才能得到它的作業號,再用bg jobspec 來將它放入后臺并繼續運行;

            時間同步: ntpdate 域名或Ip都可以
            時間設置:date --set “07/07/06 10:19" (月/日/年時:分:秒)


            /etc/init.d/nscd restart      //清除DNS緩存

            軟鏈接:ln -s source dist  這個命令相當dist是source的快捷方式,一般source要使用絕對路徑。
            硬鏈接:ln source dist 相當于dest是source的一個鏡像或拷貝

            遠程拷貝:scp -P 端口 用戶名@ip:文件絕對路徑(遠端) 目標路徑(本地);如果是文件夾,加上-r參數,-p和-r都是可選的參數
            遠程上傳: 命令比類似,不同的是,本地文件路徑在前,遠端路徑在后



            進程信息查看命令:
            所打開的文件
            獲取方法1:
            # ls -l /proc/$PID/fd/

            獲取方法2:
            # lsof -p $PID

            內存分配表
            獲取方法:
            # lcat /proc/$PID/maps

            堆棧
            獲取方法:
            # pstack $PID

            所發出的系統調用
            獲取方法:
            # strace -p $PID

            所發出的庫函數調用
            獲取方法:
            # ltrace -p $PID

            進程繼承關系
            獲取方法:
            ps -eo user,pid,ppid,%cpu,%mem,vsz,rss,tty,stat,start,time,wchan,command --forest

            運行時dumpcore
            獲取方法:
            # gcore $PID 

            讓程序后臺啟動:
            1、如果程序或命令沒有輸出到屏幕,用 “命令 &”,如果用(命令 &),則進程無法通過jobs來查看,必須用ps -ef|grep,也可以躲過HUP信號;
            2、nohup :nohup 的用途就是讓提交的命令忽略 hangup 信號,如果有輸出,而在命令的最后加上&;
            (當用戶注銷(logout)或者網絡斷開時,終端會收到 HUP(hangup)信號從而關閉其所有子進程),
            3、setsid :可使進程不接收hangup,使用方法:setsid + 程序的啟動命令
            4、disown:disown -h jobspec 來使某個作業忽略HUP信號;disown -ah 來使所有的作業都忽略HUP信號;
             disown -rh 來使正在運行的作業忽略HUP信號。 使用此命令后須用ps -ef來查找;一般的使用方法是在這個命令后加&
            5、screen:提供了 ANSI/VT100 的終端模擬器,使它能夠在一個真實終端下運行多個全屏的偽終端。
            screen -dmS session name 來建立一個處于斷開模式下的會話(并指定其會話名);screen -list 來列出所有會話。
            screen -r session name 來重新連接指定會話。 用快捷鍵CTRL-a d 來暫時斷開當前會話。

             

            history:查看操作系統上的(命令的)歷史記錄,需要記住的是這里查看的只是登錄終端的記錄,并非所有終端的記錄;
            HISTTIMEFORMAT='%F %T: ';history,可在查看歷史記錄同時查看操作時間 


            vim在redhat上面的安裝:
             wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
            ./configure --prefix=/usr/local --enable-multibyte --with-features=big --disable-selinux 
            make;make install
            安裝首先要安裝ncurses-devel-5.5-24.20060715.x86_64.rpm
            否則無法安裝成功

            axel是類似迅雷的多線程下載工具

            posted on 2010-09-02 22:34 Benjamin 閱讀(4077) 評論(0)  編輯 收藏 引用 所屬分類: linux

            久久91精品久久91综合| 99精品国产免费久久久久久下载| 91精品国产9l久久久久| 国产精品99久久不卡| 久久婷婷五月综合色奶水99啪| 亚洲精品无码久久一线| 久久国产精品-久久精品| 伊人久久大香线蕉成人| 欧美精品一区二区精品久久| 国产精品成人久久久| 伊人久久大香线蕉影院95| 精品国产乱码久久久久软件| 色综合色天天久久婷婷基地| 久久久久久精品免费看SSS| 国内精品欧美久久精品| 91久久精一区二区三区大全| 欧美亚洲国产精品久久久久| 国产精品免费久久久久久久久 | 久久久久久精品成人免费图片| 狠狠色丁香婷婷久久综合不卡| 中文字幕人妻色偷偷久久| 国产精品久久久久乳精品爆| 国内精品久久九九国产精品| 亚洲国产精品久久久天堂| 久久久久人妻一区二区三区| 看全色黄大色大片免费久久久| 国产L精品国产亚洲区久久| 国内精品久久久久| 国产午夜久久影院| 狠色狠色狠狠色综合久久| 久久亚洲国产成人精品性色| 久久久久国产精品嫩草影院| 久久综合久久美利坚合众国| 久久WWW免费人成—看片| 韩国三级中文字幕hd久久精品| 久久精品男人影院| 91久久香蕉国产熟女线看| 国产成人久久精品麻豆一区| 久久精品一区二区影院 | 久久精品国产亚洲AV蜜臀色欲| 亚洲色欲久久久久综合网|