如何遠程殺死僵進程?
所謂“僵進程”是指處於睡眠中,而且沒用的進程。在進行並行計算時經常會有僵進程產生。由於用 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下一頁