亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 求助 [打印本頁]

作者: princeduan    時(shí)間: 2012-01-29 18:32
標(biāo)題: 求助
本帖最后由 princeduan 于 2012-01-30 20:12 編輯

  1. #! /bin/sh

  2. PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/contrib/bin

  3. #awinfo.sh ?<output directory>?
  4. BASEDIR=${BASEDIR:-/home/nbc01/pfm}
  5. EXECDIR=${EXECDIR:-/home0500/ms/user/ms/unei/shell}
  6. NEXECDIR=${NEXECDIR:-/home0500/ms/user/ms/unei/exec}
  7. DEBUG=${DEBUG:-''}

  8. #1.debugging function
  9. run () {
  10.        if [ ”${DEBUG}” ]; then
  11.            echo $@
  12.         else
  13.                eval $@ > /dev/null 2>&1         
  14. fi
  15. }

  16. #2.logging function
  17. logging () {
  18. FILE=$1
  19. shift
  20. CMD=S@

  21. if [ ! "${CMD}" -o !"${FILE}" ]; then
  22.     return
  23. fi

  24. cat << _EOT_ >> ${FILE}
  25. `date +'%Y/%m/%d %H:%M:%S'`
  26. -----
  27. `eval ${CMD}`
  28. -----
  29. _EOT_
  30. }

  31. #$1: output directory
  32. case $# in
  33.     1)
  34.         BASEDIR=$1
  35.     ;;
  36.     0)
  37.         # use default basedir
  38.     ;;
  39.     *)
  40.         echo "usage: awinfo.sh [output directory]" 1>&2
  41.         exit 1
  42.     ;;
  43. esac

  44. #3.local commands

  45. if [ ${EXECDIR} -a -d ${EXECDIR} ]; then
  46.     PS_CMD=${EXECDIR}/ps.pl
  47. fi
  48. if [ ${NEXECDIR} -a -d ${NEXECDIR} ]; then
  49.     SEGSZ_CMD=${NEXECDIR}/getsegsz
  50. fi

  51. #4.get current date and time
  52. set `date +'%Y%m%d %H:%M'`
  53. DATE=$1
  54. HOURE=$2

  55. #5.logging files name
  56. OUTPUT_SWAPINFO=swapinfo.out
  57. OUTPUT_PS=ps.out
  58. OUTPUT_SEGSZ=getsegsz.out
  59. OUTPUT_VMSTAT=vmstat.out
  60. OUTPUT_BDF=bdf.out
  61. OUTPUT_NETSTAT=netstat.out

  62. #6.logging directory
  63. DIR=${BASEDIR}/${DATE}

  64. if [ "${BASEDIR}" -a ! -d "${BASEDIR}" ]; then
  65.     mkdir ${BASEDIR}
  66. fi

  67. if [ "${DIR}" -a ! -d "${DIR}" ]; then
  68.     mkdir ${DIR}
  69. fi

  70. #7.get some information
  71. logging ${DIR}/${OUTPUT_SWAPINFO}            swapinfo -tm

  72. if [ ${PS_CMD} -a -x ${PS_CMD} ]; then
  73. logging ${DIR}/${OUTPUT_PS}                  $PS_CMD
  74. fi

  75. if [ ${SEGSZ_CMD} -a -x ${SEGSZ_CMD} ]; then
  76. logging ${DIR}/${OUTPUT_SEGSZ}               $SEGSZ_CMD
  77. fi

  78. logging ${DIR}/${OUTPUT_VMSTAT}              vmstat -S

  79. if [ ! -f ${DIR}/${OUTPUT_BDF} ]; then
  80. logging ${DIR}/${OUTPUT_BDF}                 bdf
  81. fi

  82. logging ${DIR}/${OUTPUT_NETSTAT}             netstat -i

  83. #8.archiving other days log

  84. for d in ${BASEDIR}/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
  85. do
  86.     if [ "$a9ur7n9vt" = "${DIR}" ]; then
  87.         continue
  88.     elif [ -d "$a9ur7n9vt" ]; then
  89.          dpfx=`dirname $a9ur7n9vt`
  90.          dsfx=`basename $a9ur7n9vt`
  91.          cd ${dpfx}
  92.          run tar cvf ${dsfx}.tar $dsfx}
  93.          run gzip -f9 ${dsfx}.tar
  94.          run rm -rf ${dsfx}
  95.          find ${BASEDIR} -mtime +60 -exec rm {} \;
  96.      fi
  97. done
復(fù)制代碼
終于完成了。我分成了8個(gè)段落,懇求高手能分段進(jìn)行說明,簡(jiǎn)答幾句話也可以。
補(bǔ)充說明,這個(gè)shell腳本是通過crontab自動(dòng)執(zhí)行的。DEBUG這個(gè)參數(shù)究竟做什么用?
先謝謝了!
作者: jason680    時(shí)間: 2012-01-29 20:10
回復(fù) 1# princeduan

置頂文
shell基礎(chǔ)十二篇
shell 十三問?
作者: princeduan    時(shí)間: 2012-01-29 21:04
感謝回復(fù),不過沒有看到類似的說明。
能否幫忙簡(jiǎn)單解釋一下?
作者: zooyo    時(shí)間: 2012-01-29 21:18
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: princeduan    時(shí)間: 2012-01-29 21:35
DEBUG=${DEBUG:-''}
這句中賦值方式怎么解釋?是不是知道這個(gè)就好辦了?
作者: jason680    時(shí)間: 2012-01-29 22:01
本帖最后由 jason680 于 2012-01-29 22:05 編輯

回復(fù) 3# princeduan


1. PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/contrib/bin
2. DEBUG=${DEBUG:-''}
1.沒問題, 2有問題....
請(qǐng)看 shell 十三問, 8) $(( )) 與 $( ) 還有${ } 差在哪?

if [”${DEBUG}”]; then
明顯語法錯(cuò)誤,請(qǐng)先練好基礎(chǔ)
shell基礎(chǔ)十二篇, shell基礎(chǔ)學(xué)習(xí)第十七篇-條件測(cè)試

eval $@ > /dev/null 2​​>&1
shell 十三問 , 11) > 與 < 差在哪?
eval ==> http://blog.chinaunix.net/space. ... =blog&id=105530   


作者: princeduan    時(shí)間: 2012-01-29 22:10
if [”${DEBUG}”]; then
明顯語法錯(cuò)誤,請(qǐng)先練好基礎(chǔ)


這個(gè)是從服務(wù)器抄下來的,應(yīng)該是正常工作的。
作者: zooyo    時(shí)間: 2012-01-30 10:27
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: wsxedcer    時(shí)間: 2012-01-30 10:32
本帖最后由 wsxedcer 于 2012-01-30 11:00 編輯

我擦,是我錯(cuò)了
  1. #!/bin/sh

  2. PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/contrib/bin
  3. DEBUG=${DEBUG:-''}
  4. #debugging function
  5. run () {
  6.        if [ "${DEBUG}" ]; then
  7.            echo $@
  8.         else
  9.                eval $@ > /dev/null 2>&1
  10. fi
  11. }
復(fù)制代碼
DEBUG=${DEBUG:-''}  定義DEBUG的值,若 $DEBUG 沒設(shè)定或?yàn)榭罩,輸出但不取?。(保留非空值)
if [ "${DEBUG}" ]; then  怎么沒有看到你的有空格呢?  測(cè)試條件咯,測(cè)試是否為空值,
eval $@ > /dev/null 2>&1  這個(gè)比較長(zhǎng),eval 的用法自己查
作者: Shell_HAT    時(shí)間: 2012-01-30 10:34
回復(fù) 7# princeduan


你們的服務(wù)器上第一行是用的中文輸入法狀態(tài)下的感嘆號(hào)?
作者: princeduan    時(shí)間: 2012-01-30 17:24
>你們的服務(wù)器上第一行是用的中文輸入法狀態(tài)下的感嘆號(hào)?
呵呵,這個(gè)是我個(gè)人輸入錯(cuò)誤。謝謝

等我把所有的內(nèi)容都拿過來,請(qǐng)高手們給分析下啊@!
作者: princeduan    時(shí)間: 2012-01-31 10:50
已經(jīng)講完正版的腳本文件更新完畢,請(qǐng)大家再幫我看看吧。)
作者: princeduan    時(shí)間: 2012-01-31 18:06
還請(qǐng)大家繼續(xù)幫忙啊
作者: princeduan    時(shí)間: 2012-02-01 15:19
等待中。。。
作者: princeduan    時(shí)間: 2012-02-01 23:58
熱心人趕快幫忙啊
作者: cooluncle    時(shí)間: 2012-02-03 16:54
對(duì)于一些比較復(fù)雜的腳本,編寫過程中往往要確定一些比較重要的步驟是否被運(yùn)行。雖然有些命令在運(yùn)行時(shí)會(huì)在終端的標(biāo)準(zhǔn)輸出運(yùn)行信息,但其他一些卻未必如此。本例中run()是用于腳本調(diào)試的函數(shù),作用是如果"DEBUG"變量非空變打印參數(shù)所有參數(shù)到標(biāo)準(zhǔn)輸出并執(zhí)行。以第114行“run tar cvf ${dsfx}.tar $dsfx}”為例,此處傳遞給run函數(shù)的參數(shù)為" tar cvf ${dsfx}.tar $dsfx}",腳本運(yùn)行過程時(shí),如果DEBUG非空,會(huì)在終端打印一條“ tar cvf ${dsfx}.tar $dsfx}(變量對(duì)應(yīng)進(jìn)行替換)”信息。把第114行直接寫成 tar cvf ${dsfx}.tar $dsfx},對(duì)實(shí)際應(yīng)用一點(diǎn)影響都沒有。當(dāng)然,此處由于tar使用了“v”參數(shù),腳本運(yùn)行時(shí)還是很容易判斷tar命令是否按要求在打包文件,如果改成“ tar cf ${dsfx}.tar $dsfx}”就不行了。如果想用調(diào)試模式運(yùn)行,改腳本應(yīng)該在命令提示符下用“DEBUG=“on” ./script.sh”模式執(zhí)行,當(dāng)然run只檢查DEBUG是否是空值,給DEBUG賦任意非空值都可以讓腳本以調(diào)試模式運(yùn)行
作者: princeduan    時(shí)間: 2012-02-05 19:48
解釋很有深度,謝謝!{:3_200:}

作者: princeduan    時(shí)間: 2012-02-05 20:03
能再幫忙解釋一下這段嗎?

  1. #logging function
  2. logging () {
  3. FILE=$1
  4. shift
  5. CMD=S@

  6. if [ ! "${CMD}" -o !"${FILE}" ]; then    
  7.     return                                 
  8. fi

  9. cat << _EOT_ >> ${FILE}
  10. `date +'%Y/%m/%d %H:%M:%S'`
  11. -----
  12. `eval ${CMD}`
  13. -----
  14. _EOT_
  15. }
復(fù)制代碼

作者: waker    時(shí)間: 2012-02-05 21:34
CMD=S@
還是
CMD=$@
?
作者: princeduan    時(shí)間: 2012-02-05 21:48
不好意思,CMD=$@

作者: cooluncle    時(shí)間: 2012-02-08 10:37
從代碼來看,如果以 “l(fā)ogging <logfile> <command string>"調(diào)用函數(shù)則return 0;如果以”logging <logfile>,logging <command string>“這兩種方式調(diào)用函數(shù),則把命令的執(zhí)行時(shí)間,命令的執(zhí)行過程中打印到終端的信息以追加重定向模式到指定的文件。解釋下函數(shù)的執(zhí)行過程:logging接受<logfile>,logging <command string>兩種類型的參數(shù),執(zhí)行時(shí)將<logfile>也就是日志文件的位置賦值給FILE變量,再用shift指令將<logfile>從參數(shù)列表中刪除,余下的參數(shù)統(tǒng)一賦給CMD變量;if判斷如果CMD變量非空或者FILE變量非空,就return零值結(jié)束函數(shù),否則繼續(xù)執(zhí)行后續(xù)命令。11-16行被稱為【here文檔】,用于將腳本文件中指定位置的命令輸出,以追加模式重定向到FILE變量指定的文件中。`date +'%Y/%m/%d %H:%M:%S'`指令記錄執(zhí)行時(shí)間,`eval ${CMD}`指令將<command string>的內(nèi)容以shell指令執(zhí)行,執(zhí)行的輸出重定向到FILE變量指定的文件中。
作者: princeduan    時(shí)間: 2012-02-08 15:04
>if判斷如果CMD變量非空或者FILE變量非空,就return零值結(jié)束函數(shù),否則繼續(xù)執(zhí)行后續(xù)命令。

!表示相反意思,是不是應(yīng)該為CMD變量為空或者FILE變量為空??
作者: ywlscpl    時(shí)間: 2012-02-08 15:14
CMD=S@
還是
CMD=$@
?

不好意思,CMD=$@


樓主不會(huì)是看著顯示器屏幕把服務(wù)器上的腳本抄下來,再一個(gè)一個(gè)字母打出來發(fā)帖吧?
作者: cooluncle    時(shí)間: 2012-02-08 15:34
回復(fù) 22# princeduan

不好意思,的確是我理解錯(cuò)了,這里應(yīng)該是if判斷CMD變量或FILE變量為空就結(jié)束函數(shù),否則繼續(xù)執(zhí)行...
以logging <logfile>或loging <command string>的方式調(diào)用函數(shù)會(huì)退出函數(shù),以logging <logfile> <command string>方式調(diào)用會(huì)記錄<command string>運(yùn)行時(shí)間和輸出到FILE變量指定的文件中
   




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2