<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 262,  comments - 221,  trackbacks - 0

    【1.which命令】


    which命令用于在系統變量PATH下所指定的路徑中查找文件,因為PATH下一般存放的是可執行文件(二進制文件),所以which命令通常用來查找可執行文件。

    由于不同的用戶其PATH變量的設置不同,所以不同的用戶執行同樣的which命令,得到的結果有可能不同。

    Example 1:以root用戶身份執行which ifconfig
    [root@localhost ~]# which ifconfig
    /sbin/ifconfig
    [root@localhost ~]
    # echo $PATH
    /usr/sbin:/u01/app/oracle/product/
    10.2.0/db_1/bin:/u01/app/oracle/product/10.2.0/db_1/bin:/u01/app/oracle/product/10.2.0
    /db_1/Apache/Apache/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

    Example 2:以paul用戶身份執行which ifconfig
    [paul@localhost ~]$ which ifconfig
    /usr/bin/which: no ifconfig in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/paul/bin)
    [paul@localhost ~]$ echo $PATH
    /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/paul/bin
    [paul@localhost ~]$

    可以看到,由于root用戶和paul用戶的PATH變量的設置不同,而ifconfig命令由僅存在于sbin目錄下,所以paul用戶執行which ifconfig時找不到該命令

    【2.whereis和locate命令】

    和which命令不同,whereis和locate命令可以搜索除了PATH變量指定路徑下的其它目錄和文件。先看下面的例子:

    Example 1:使用root用戶身份查找名為mount的文件
    [root@localhost ~]# whereis mount
    mount: /bin/mount /sbin/mount.cifs /sbin/mount.vmhgfs /sbin/mount.smbfs /sbin/mount.smb /usr/share/man/man8/mount
    .8.gz /usr/share/man/man2/mount.2
    .gz
    You have new mail in /var/spool/mail/root
    [root@localhost ~]
    # whereis -b mount
    mount: /bin/mount /sbin/mount.cifs /sbin/mount.vmhgfs /sbin/mount.smbfs /sbin/mount.smb
    [root@localhost ~]#

    Example 2:使用paul用戶身份查找名為mount的文件
    [paul@localhost ~]$ whereis mount
    mount: /bin/mount /sbin/mount.cifs /sbin/mount.vmhgfs /sbin/mount.smbfs /sbin/mount.smb /usr/share/man/man8/mount
    .8.gz /usr/share/man/man2/mount.2
    .gz
    [paul@localhost ~]
    $ whereis -b mount
    mount: /bin/mount /sbin/mount.cifs /sbin/mount.vmhgfs /sbin/mount.smbfs /sbin/mount.smb
    [paul@localhost ~]$

    我們看到,不論是以root身份還是以paul身份,whereis命令都可以找到名為mount的命令,而且搜索的結果中既包含了位于PATH變量指定的路徑下,也包含了其它不在PATH變量中指定路徑下的文件。

    其次我們看到如果加上-b參數,搜索結果會不一樣。這是因為-b參數是用于搜索二進制文件的(即可執行文件)。所以我們也可以用-b參數來縮小搜索結果范圍

    Example 3:使用locate命令來查找mount文件
    [root@localhost~]#locate mount
    warning: locate: could not open database: /var/lib/slocate/slocate.db: No such file or directory
    warning: You need to run the 'updatedb' command (as root) to create the database.
    Please have a look at /etc/updatedb.conf to enable the daily cron job.

    很奇怪,系統居然提升我們找不到一個名為/var/lib/slocate/slocate.db的東東,而且要我們先執行一個updatedb的命令!這是為什么?

    原因是因為locate命令的查找機制不是直接從硬盤中逐個搜索,比較文件。而是去搜索一個類似于“目錄索引”的文件,該文件就像書的目錄一樣指向硬盤上的各個文件。

    那么該索引文件又是哪里來的?答案就是通過updatedb創建,該命令會讀取/etc/updatedb.conf文件,確定該索引文件的創建,更新機制。見下圖
    [root@localhost ~]# cat /etc/updatedb.conf
    # To enable the updatedb in cron
    , set DAILY_UPDATE to yes
    DAILY_UPDATE=no

    如果我們把no改成yes,那么Linux就會每天更新一次該索引文件(其實就是前面提到的那個db文件)。如果我們不更新呢?那么會出現下面兩種可能
     ①已刪除的過時文件會被搜索到
     ②新創建的文件不能被搜索到

    這一切都是因為索引文件過時導致的,所以我們可以設置DAILY_UPDATE=yes

    【3.find命令】


    find命令和wheris命令以及locate命令,它是老老實實地去硬盤上找文件,所以速度比起前兩者來說慢了很多。不過find命令有很多非常好用的參數。下面列出來:

     ①-mtime n:  列出在n天之前的“一天之內”被更動過的文件
     ②-mtime +n:列出在n天之前(不含n天本身)被更動過的文件
     ③-mtime -n:列出n天之內(含n天本身)被更動過的文件
     ④-newer file:列出比文件file還要新的文件名
     ⑤-user name:列出屬于該用戶的文件
     ⑥-group name:列出屬于該用戶組的文件
     ⑦-nouser:列出不屬于/etc/passwd中定義的用戶的文件
     ⑧-nogroup:列出不屬于/etc/group中定義的用戶組的文件
     ⑨-name filename:列出文件名為指定名稱的所有文件
     ⑩-size +/- size:搜索比指定size還要大/小的文件。c表示byte,K表示Kb
     ⑾-type type:搜索指定類型文件。普通文件(f),配置文件(b,c),目錄(d),鏈接文件(l),socket(s),管道(p)
     ⑿-exec command:在搜索的結果上執行指定的命令
     ⒀-print:將搜索的結果顯示在屏幕上

    <-----(+n)--------n-----(-n)-----當前時間

    如我們想找出24小說被改動過的文件
    [root@localhost ~]# find / -mtime 0

    參數0是什么意思呢?其實0表示當前時間,那么命令的意思就是當前時間的24小時內。

    Example 1:找出3天內被更動過的文件
    [root@localhost ~]# find -mtime -3

    我們看到find命令可以不用指定路徑,而僅僅指定搜索的時間起始點。我們同樣也可以指定查找的路徑

    Example 2:找出paul用戶home目錄下4天前被更動的文件
    [root@localhost ~]# find /home/paul -mtime +4
    /home/paul/.bash_profile
    /home/paul/.gtkrc
    /home/paul/.emacs
    /home/paul/.zshrc
    /home/paul/.bash_logout
    /home/paul/.bashrc

    Example 3:找出/home目錄下屬于paul用戶的文件
    [root@localhost ~]# find /home -user paul
    /home/paul
    /home/paul/.bash_profile
    /home/paul/.gtkrc
    /home/paul/.emacs
    /home/paul/.zshrc
    /home/paul/.bash_logout
    /home/paul/.bash_history
    /home/paul/.bashrc
    [root@localhost ~]#

    通過該命令我們可以輕松地找出所有我們想要的某個特定用戶創建或擁有的文件。如果我們對某些文件比較懷疑(不明用戶的文件),我們可以使用-nouser/-nogroup參數來搜索這些可疑文件
    [root@localhost ~]# find / -nouser
    find: /proc/
    4369/task/4369/fd/4: 沒有那個文件或目錄
    [root@localhost ~]#

    Example 4:找出名為passwd的文件
    [root@localhost ~]# find / -name passwd
    /etc/pam.d/passwd
    /etc/passwd

    Example 5:找出大于1M的文件
    [root@localhost ~]# find / -size +1000k
    /sbin/lvm.static
    /etc/gconf/schemas/metacity.schemas
    /etc/gconf/schemas/apps_nautilus_preferences.schemas
    /etc/gconf/schemas/gnome-terminal.schemas
    /usr/sbin/winbindd
    /usr/X11R6/lib/X11/doc/PostScript/XKBlib.ps
    /usr/X11R6/lib/X11/doc/PostScript/dtprint_fspec.ps
    /usr/X11R6/lib/libOSMesa.so
    .4.0

    Example 6:找出類型為socket的文件
    [root@localhost ~]# find /var -type s
    /var/run/iiim/.iiimp-unix/
    9010
    /var/run/dbus/system_bus_socket
    /var/run/acpid.socket
    /var/tmp/.oracle/sEXTPROC1
    /var/tmp/.oracle/s#
    6145.2
    /var/tmp/.oracle/s#
    6145.1
    [root@localhost ~]#

    Example 7:找出/home目錄下用戶paul的文件并顯示詳細屬性
    [root@localhost ~]# find /home -user paul -exec ls -l {} \;
    總用量 0
    -rw-r--r--  
    1 paul paul 191 11月 22 23:19 /home/paul/.bash_profile
    -rw-r--r--  
    1 paul paul 120 11月 22 23:19 /home/paul/.gtkrc
    -rw-r--r--  
    1 paul paul 383 11月 22 23:19 /home/paul/.emacs
    -rw-r--r--  
    1 paul paul 658 11月 22 23:19 /home/paul/.zshrc
    -rw-r--r--  
    1 paul paul 304 11月 22 23:19 /home/paul/.bash_logout
    -rw-------  
    1 paul paul 300 12月 23 23:37 /home/paul/.bash_history
    -rw-r--r--  
    1 paul paul 124 11月 22 23:19 /home/paul/.bashrc
    [root@localhost ~]#

    上面的例子中,我們使用-exec參數,將搜索的結果放到{}中(其實這個位置就是平時我們使用ls命令的目錄參數的位置嘛),至于\;則是轉義字符,用來表示命令已經結束。由于;有特殊意義所以需要加斜杠來轉義。

    Example 8:使用通配符查找所有包含config的文件
    [root@localhost ~]# find / -name *config -exec ls -l {} \;
    -rwxr-xr-x  1 root root 9824 2004-09-27  /sbin/vconfig
    -rwxr-xr-x  
    1 root root 570048 2004-12-20  /sbin/ldconfig
    -rwxr-xr-x  
    1 root root 56204 2004-09-30  /sbin/ifconfig
    -rwxr-xr-x  
    1 root root 23600 2004-11-30  /sbin/iwconfig
    -rwxr-xr-x  
    1 root root 41136 2004-10-29  /sbin/chkconfig
    -rwxr-xr-x  
    1 root root 6608 2004-09-30  /sbin/plipconfig
    -rw-r--r--  
    1 root root 1196 2004-10-21  /etc/X11/xdm/xdm-config
    總用量 
    0


    -------------------------------------------------------------
    生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
    posted on 2008-12-22 22:12 Paul Lin 閱讀(812) 評論(0)  編輯  收藏 所屬分類: Unix / Linux
    <2008年12月>
    30123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    常用鏈接

    留言簿(21)

    隨筆分類

    隨筆檔案

    BlogJava熱點博客

    好友博客

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 九九免费精品视频在这里 | 免费人成大片在线观看播放| 久久国产精品免费看| 午夜亚洲国产成人不卡在线| 亚洲人成电影青青在线播放| 中文字字幕在线高清免费电影| 午夜小视频免费观看| 亚洲人成亚洲精品| 国产激情久久久久影院老熟女免费 | 亚洲伊人久久大香线蕉啊| 中文字幕免费观看视频| 日韩精品视频免费网址| 亚洲人成在线中文字幕| 一区二区三区福利视频免费观看| 亚洲伊人久久成综合人影院| 亚洲а∨精品天堂在线| 114一级毛片免费| 久久亚洲精品中文字幕| 在线看片免费人成视频久网下载| 免费在线观看日韩| 亚洲欧美日韩久久精品| 国产成人精品久久免费动漫| 亚洲AV人人澡人人爽人人夜夜| 一个人看的免费高清视频日本| 国产国产人免费视频成69大陆| 亚洲情A成黄在线观看动漫软件| 最近中文字幕2019高清免费| 国产精品国产亚洲精品看不卡| 国产高潮流白浆喷水免费A片 | 免费一级毛片在级播放| 亚洲国产精品无码久久九九大片| 美女视频黄的全免费视频网站| 亚洲第一区视频在线观看| 最近的中文字幕大全免费8| 亚洲av不卡一区二区三区| 中文无码成人免费视频在线观看 | 国产精品亚洲综合五月天| 免费v片在线观看视频网站| 97久久精品亚洲中文字幕无码| 男的把j放进女人下面视频免费| 久久久久亚洲av成人无码电影|