歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> shell經典實例分享

shell經典實例分享

日期:2017/3/2 16:32:43   编辑:SHELL編程

如何遠程殺死僵進程?

  所謂“僵進程”是指處於睡眠中,而且沒用的進程。在進行並行計算時經常會有僵進程產生。由於用 top 看不到“僵進程”,所以寫了如下一個叫做“rkill”的 shell 文件:

  #!/bin/tcsh

  echo " Input start number of node: "

  set N1="___FCKpd___0lt;"

  echo " Input end number of node: "

  set N2="___FCKpd___0lt;"

  echo " Input the NAME of program"

  set pname="___FCKpd___0lt;"

  echo "**********************************************************"

  while($N1 <= $N2)

  set h='t'$N1

  set ppid=`rsh $h ps -ef | grep $pname | awk '{print $2}' `

  echo "rsh $h kill $ppid"

  rsh $h kill $ppid

  @ N1++

  end

  echo "**********************************************************"

  如何將一個 index 文件中的空鏈接刪除?

  在目錄 /doc/Art_and_Photos/photo/NASA-Astronomy_Picture_of_the_Day 中只有有限的幾個文件,而 archivepix.html 文件中卻鏈接了兩千多個文件,我們的目標就是要把不存在的文件鏈接刪除掉。

  #!/bin/tcsh -f

  # 從當前目錄中查找有哪些可用文件。find 不支持正則表達式 \{\}

  set tmp=`find . -type f -maxdepth 1 vuDLinux聯盟-name "ap[0-9][0-9][0-9][0-9][0-9][0-9].html" `

  # 將查找結果 ./ap000303.html 轉換為 ap000303.html

  set ff1=`echo $tmp | sed -e 's/\.\/\(ap[0-9]\{6\}\.html\)/\1/g' `

  # 在文件 archivepix.html 中查找包含類似 ap000303.html 的行,vuDLinux聯盟並將其導入臨時文件 ftmp 中

  grep 'ap[0-9]\{6\}\.html' archivepix.html >ftmp

  # 將 ftmp 中的每一行轉換為 ap000303.html 的形式,這樣 ff1 和 ff2 vuDLinux聯盟中的字符串在形式上就是相同的了。

  set ff2 = ` sed -e 's/.*\(ap[0-9]\{6\}\.html\).*/\1/g' ftmp`

  rm ftmp -f

  # 比較變量 ff1 和 ff2 的內容,如果一個字符串只存在於 ff2 中,vuDLinux聯盟那麼就把文件 archivepix.html 中含有

  # 該字符串的行刪除掉。

  foreach f2 ($ff2)

  echo $f2

  set flag=0

  foreach f1 ($ff1)

  if ($f2 == $f1) then

  set flag=1

  endif

  end

  if($flag == 0) then

  sed -e '/'$f2'/d' archivepix.html >ftmp # 此句最關鍵之處在於'$f2'vuDLinux聯盟可用於正則表達式。

  mv ftmp archivepix.html -f

  endif

  end

  如何將一個目錄中的所有文件鏈接到網頁中?

  只要將下列程序的輸出導到一個文件中,再將其拷至網頁的相應位置就可以了。這裡最關鍵的是看雙引號如何輸出(\")。

  #!/bin/tcsh -f

  set dd = "/doc/Art_and_Photos/Flash/flash/AGui"

  set ffff = `find $dd -type f `

  set n=0

  foreach f ($ffff)

  @ n++

  echo $f

  echo '< a href='\"$f\"'<'$n',</a>'>> AGui.html

  end

  如何為一堆文件換名字?

  在吳老師的筆記心得中介紹了張林波的高招,但那是 bash 的,而且是以命令行形式給出的。為了便於理解,我將其改寫為 tcsh 格式,並將其置於腳本文件之中,更利於使用。

  #!/bin/tcsh -f # -f 說明直接運行該文件,而不會先運行 .cshrc 進行初始化

  rm tmp_file -f # 確保該文件不存在

  foreach fold (*.jpg.*)

  set fnew = ` echo $fold | sed -e "s/\.jpg\.\(.*\)/-\1.jpg/g" `vuDLinux聯盟 # 精華之處

  echo "mv $fold $fnew -f " >>tmp_file

  end

  chmod a+x tmp_file

  ./tmp_file

  rm tmp_file -f

  在這個腳本文件中,關鍵是“精華之處”。它的意義是:首先將要123下一頁

Copyright © Linux教程網 All Rights Reserved