RHELサーバーで開いているファイルのulimitを変更するためのbashスクリプトを作成しました。sedがbashスクリプトを使用してファイル内の行にコメントを作成していない
私はファイル/etc/security/limits.confの中の行を読んでいます。開いているファイルのソフト/ハード制限が '*'ドメインの10000未満であれば、私はその行にコメントして、ソフト/ハード制限が10000の行。
スクリプトは設計どおりに動作していますが、スクリプトの行をコメントするためのsedコマンドは機能しません。
見つけてください下記のフルスクリプト: -
#!/bin/sh
#This script would be called by '' to set ulimit values for open files in unix servers.
#
configfile=/etc/security/limits.conf
help(){
echo "usage: $0 <LimitValue>"
echo -e "where\t--LimitValue= No of files you want all the users to open"
exit 1
}
modifyulimit()
{
grep '*\s*hard\s*nofile\s*' $configfile | while read -r line ; do
firstChar="$(echo $line | xargs | cut -c1-1)"
if [ "$firstChar" != "#" ];then
hardValue="$(echo $line | rev | cut -d ' ' -f1 | rev)"
if [[ "$hardValue" -ge "$1" ]]; then
echo ""
else
sed -i -e 's/$line/#$line/g' $configfile
echo "* hard nofile $1" >> $configfile
fi
else
echo ""
fi
done
grep '*\s*soft\s*nofile\s*' $configfile | while read -r line ; do
firstChar="$(echo $line | xargs | cut -c1-1)"
if [ "$firstChar" != "#" ];then
hardValue="$(echo $line | rev | cut -d ' ' -f1 | rev)"
if [[ "$hardValue" -ge "$1" ]]; then
echo ""
else
sed -i -e 's/$line/#$line/g' $configfile
echo "* hard nofile $1" >> $configfile
fi
else
echo ""
fi
done
}
deleteEofTag(){
sed -i "/\b\(End of file\)\b/d" $configfile
}
addEofTag()
{
echo "#################End of file###################" >> $configfile
}
#-------------Execution of the script starts here ----------------------
if [ $# -ne 1 ];
then
help
else
modifyulimit $1
deleteEofTag
addEofTag
fi
コマンドのsed -i -eさん/ $ライン/#$行/ G 'の端末から実行$ configfileを絶対に正常に動作しているとそれは行をコメントしていますが、私がUNIXシェルスクリプトから実行しているときにはうまくいきません。
ありがとうございました。 :) –