系統(tǒng)之家 - 系統(tǒng)光盤下載網(wǎng)站!

當(dāng)前位置:系統(tǒng)之家 > 系統(tǒng)教程 > Linux xargs命令

Linux系統(tǒng)xargs命令的用法

時(shí)間:2015-09-09 14:37:23 作者:zhijie 來源:系統(tǒng)之家 1. 掃描二維碼隨時(shí)看資訊 2. 請(qǐng)使用手機(jī)瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20150909/57279.html 手機(jī)查看 評(píng)論

  在Linux系統(tǒng)中使用xargs命令可以解決不少問題,特別是xargs命令配合find命令使用,能夠發(fā)揮出更加驚人的效果。本文就來為大家介紹一下Linux系統(tǒng)xargs命令的用法。

Linux系統(tǒng)xargs命令的用法

  在使用find命令的-exec選項(xiàng)處理匹配到的文件時(shí), find命令將所有匹配到的文件一起傳遞給exec執(zhí)行。但有些系統(tǒng)對(duì)能夠傳遞給exec的命令長(zhǎng)度有限制,這樣在find命令運(yùn)行幾分鐘之后,就會(huì)出現(xiàn)溢出錯(cuò)誤。錯(cuò)誤信息通常是“參數(shù)列太長(zhǎng)”或“參數(shù)列溢出”。這就是xargs命令的用處所在,特別是與find命令一起使用。

  find命令把匹配到的文件傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是全部,不像-exec選項(xiàng)那樣。這樣它可以先處理最先獲取的一部分文件,然后是下一批,并如此繼續(xù)下去。

  在有些系統(tǒng)中,使用-exec選項(xiàng)會(huì)為處理每一個(gè)匹配到的文件而發(fā)起一個(gè)相應(yīng)的進(jìn)程,并非將匹配到的文件全部作為參數(shù)一次執(zhí)行;這樣在有些情況下就會(huì)出現(xiàn)進(jìn)程過多,系統(tǒng)性能下降的問題,因而效率不高;

  而使用xargs命令則只有一個(gè)進(jìn)程。另外,在使用xargs命令時(shí),究竟是一次獲取所有的參數(shù),還是分批取得參數(shù),以及每一次獲取參數(shù)的數(shù)目都會(huì)根據(jù)該命令的選項(xiàng)及系統(tǒng)內(nèi)核中相應(yīng)的可調(diào)參數(shù)來確定。

  可以查看xargs的返回狀態(tài)來判斷是什么問題:

  #cut -d: -f1 《 /etc/passwd|sort|xargs echo

  xargs exits with the following status:

  0 if it succeeds

  123 if any invocation of the command exited with status 1-125

  124 if the command exited with status 255

  125 if the command is killed by a signal

  126 if the command cannot be run

  127 if the command is not found

  1 if some other error occurred.

  Exit codes greater than 128 are used by the shell to indicate(指出)that a program died due to a fatal signal.

  來看看xargs命令是如何同find命令一起使用的,并給出一些例子。

 。1.)用grep命令在當(dāng)前目錄下的所有普通文件中搜索hostnames這個(gè)詞:

  find 。 -name \* -type f -print | xargs grep -i “hostname”

  find 。 -type f -print | xargs grep -i “hostname”

  find 。 -name “*”-type f -print | xargs grep -i “hostname”【三者相同】

  注意:在上面的例子中, \用來取消find命令中的*在shell中的特殊含義。

 。2.)查看所有以jdk開頭文件的文件類型

  # find 。 -name “jdk*” -type f -print | xargs file

  。/jdk1.6.0_25.tar.gz: gzip compressed data, from Unix, last modified: Wed Jun 29 14:03:13 2011

  。/jdk.sh: Bourne-Again shell script text executable

  。/jdk-6u5-linux-x64.bin: Bourne shell script text executable

  (3.)在整個(gè)系統(tǒng)中查找內(nèi)存信息轉(zhuǎn)儲(chǔ)文件(core dump),然后把結(jié)果保存到/tmp/core.log 文件中

  #find / -name “core” -print|xargs echo “” 》 /tmp/core.log

 。4.)在當(dāng)前目錄下查找所有用戶具有讀、寫和執(zhí)行權(quán)限的文件,并收回相應(yīng)的寫權(quán)限:

  #find 。 -perm 777 -print | xargs chmod o-w

 。5.)查找查找2011-11-11 03:41:54時(shí)更改過的jdk文件

  #find 。/ -name “jdk*”

  。/jdk1.6.0_25.tar.gz

  。/jdk.sh

  。/jdk-6u5-linux-x64.bin

  #find 。/ -name “jdk*”|xargs ls -l --full-time2》/dev/null

  -rwxr-xr-x 1 root root 63724381 2011-11-11 03:41:55.000000000 +0800 。/jdk-6u5-linux-x64.bin

  -rw-r--r-- 1 root root 421 2011-10-28 17:15:31.000000000 +0800 。/jdk.sh

  -rw-r--r-- 1 root root 102897638 2011-11-11 03:41:54.000000000 +0800 。/jdk1.6.0_25.tar.gz

  # find 。/ -name “jdk*”|xargs ls -l --full-time2》/dev/null|grep “2011-11-11 03:41:54”

  -rw-r--r-- 1 root root 102897638 2011-11-11 03:41:54.000000000 +0800 。/jdk1.6.0_25.tar.gz

 。6)還有一個(gè)用法就是在殺遠(yuǎn)程主機(jī)的進(jìn)程的時(shí)候,顯示的信息會(huì)在本地顯示。

  ssh 192.168.30.137 “ps -ef |grep httpd|awk ‘{print $2}’|xargskill -9”

  以上就是Linux系統(tǒng)xargs命令的用法了,可以看到xargs命令很豐富,但是大部分都離不開和find命令搭配使用。

標(biāo)簽 命令

發(fā)表評(píng)論

0

沒有更多評(píng)論了

評(píng)論就這些咯,讓大家也知道你的獨(dú)特見解

立即評(píng)論

以上留言僅代表用戶個(gè)人觀點(diǎn),不代表系統(tǒng)之家立場(chǎng)

其他版本軟件

熱門教程

人氣教程排行

Linux系統(tǒng)推薦

掃碼關(guān)注
掃碼關(guān)注

掃碼關(guān)注 官方交流群 軟件收錄