人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Solarisのログのローテションの変更をしたくて下記のシェルをかいたのですが、
30日以上前のログファイルが削除されないです。
すいません、どうなおせばいいでしょうか。
よろしくお願いします。

#!/bin/sh

DATE=`date +%Y%m%d`
#
# Rotate messages
#
LOGDIR=/var/adm
LOG=messages
cd $LOGDIR
if [ -f $LOG -a ! -f $LOG.$DATE ]; then
mv $LOG $LOG.$DATE
cp /dev/null $LOG
chmod 644 $LOG
fi

find $LOGDIR -name ”LOG*” -mtime +31 | /bin/rm -f
#
# Rotate syslog
#
LOGDIR=/var/log
LOG=syslog
cd $LOGDIR
if [ -f $LOG -a ! -f $LOG.$DATE ]; then
mv $LOG $LOG.$DATE
cp /dev/null $LOG
chmod 644 $LOG

/etc/init.d/syslog stop > /dev/null
/etc/init.d/syslog start > /dev/null
fi

find $LOGDIR -name ”LOG*” -mtime +31 | /bin/rm -f

●質問者: meichi
●カテゴリ:コンピュータ
✍キーワード:/bin/sh CD CP ETC MV
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● きゃづみぃ
●16ポイント

http://www.takilab.k.dendai.ac.jp/~nemoto/unix/index.shtml

find $LOGDIR -name ”LOG*” -mtime +31 -exec rm -f{}¥;

としないと 削除できないのでは?

◎質問者からの返答

ありがとうございます。

すいません。

find: incomplete statement

とおこられてしまうのですが。


2 ● Marin_MTB
●16ポイント

http://www.google.co.jp/

Google

URLはダミーです。

まず、findの項が変です。

恐らくは、

find $LOGDIR -name ”${LOG}.*” -mtime +31 | /bin/rm {} ¥;

になるんだろうと思います。

それと、これは趣味の世界でしょうが、

> /etc/init.d/syslog stop > /dev/null

> /etc/init.d/syslog start > /dev/null

は、

pkill -HUP syslogd

または、

kill -HUP `cat /var/run/syslog.pid`

の方が瞬断も起こりませんので、こちらが良いと思います。

もっと言ってしまうと、Solaris9からはlogadmというコマンドが新設されましたので、そちらを使用されると幸せになれるかもしれません。

◎質問者からの返答

ありがとうございます。

すいません。実行すると下記になります。

{}: No such file or directory

;: No such file or directory

{}: No such file or directory

;: No such file or directory


3 ● YasudaS
●16ポイント

http://www.net-newbie.com/linux/commands/#FIND

UNIXコマンド概説

find $LOGDIR -name ”LOG*” -mtime +31 |/binr/rm -f

find $LOGDIR -name ”LOG*” -mtime +31 -exec rm ’{}’ ¥;


4 ● klamath
●60ポイント

http://www.yahoo.co.jp/

Yahoo! JAPAN

URLはダミーです。

find $LOGDIR/LOG* -mtime +31 -exec rm {} ¥;

でないでしょうか?

◎質問者からの返答

ありがとうございます。

find $LOGDIR/$LOG* -mtime +31 -exec rm {} ¥;

で成功しました。


5 ● kimbara
●16ポイント

http://sonic64.hp.infoseek.co.jp/2003-11-07.html

find + xargs と find -exec の使い分け

find コマンドの-execでは、実行コマンド ”rm -f{}” とターミネータ ”¥;” の間には、ひとつ以上の空白が必要です。

◎質問者からの返答

ありがとうございます。

これでおわります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ