More from: スクリプト

←クリックしてくれると嬉しいです。

たまにしか書かないと忘れるなぁ(汗)

サーバーのログの中から特定の文字列を探すのにコマンドラインから
”grep ほげ げしょ | awk ‘{print $8}’ | uniq
と書くところを、最初は
”grep ほげ げしょ | sed ‘{print $8}’ | uniq
と書いてしまい
”sed: -e 表現 #1, 文字数 3: コマンドの後ろに余計な文字があります”
というエラーを返されてしまった(汗)。
それを見ておかしいな?と思って直したのが
”grep ほげ げしょ | sed {print $8} | uniq
で、これでも同じエラーが出る(当たり前)。
そもそも”sed”を使うつもりは無く”awk”と書いているつもりなので、そこが間違っているとは気付かなかった。
2回目のエラーでようやくawkではなくてsedと書いていることに気付いて直したと言う(汗)。
いやぁ、しばらくぶりに書くと忘れてるねぇ・・・

←クリックしてくれると嬉しいです。

ディスクフルとは・・・・・(汗)

サーバの自動処理で作成しているファイルが一部しか出来ていないとの連絡が来た。
慌てて調べてみると処理途中のファイルを置いているディスクが満杯・・・・・・
幸い元ファイルは残っていたので、古いファイルを削除してディスクを空けてから再度作成処理を走らせて事なきを得た。
古いファイルは自動で削除するようにしてあったが、予想以上にファイルが大きくなっているので、ディスクを圧迫していたようだ。
なので保管期間を短くするようにスクリプトを書き換えた。
明日の朝チェックしてみて問題無いようだったら当面はそのままにしておこう。

今のスクリプト内では日付を取り込んでファイル名に付けているので、古いファイルを削除するにも該当の日付さえ取れれば良いことになる。
そこで下記のようにして2ヶ月前の日付を取り込むようにした。
file-name=`/bin/date –date ‘2months ago’ +%Y%m%d`
ここで”%Y%m%d”というフォーマットは
20120913
となるので(2012年9月13日の場合)、上記の場合”file-name”には”20120713″と2ヶ月前の日付の文字列が入ることになる。
スクリプトではこの後で
/bin/rm $file-name
のようにして2ヶ月前の日付のファイルを削除している(もちろんファイルの場所のpathの設定は必須だけどこの例では省略)。

ファイル名に日付を入れていない場合には、findコマンドで2ヶ月(60日)前に作られたファイルを探して削除するようにすればOKかな?
例えば
/bin/rm `find (PATH)/ -ctime +60 -type f -print`
のようにすれば60日以前に作成されたファイルが削除出来るはず。

←クリックしてくれると嬉しいです。

昨夜の処理は終わっていたけど(汗)

昨日書いたスクリプトは無事に動作して、今朝見ると更新されたファイルだけをアーカイブすることに成功していた。
なので、それらのファイルを転送して展開することで更新されたファイルを新しいサーバに移すことは出来た。

ところが、同じ処理を毎日実行させようとしてスクリプトをコピーして多少手直ししてcrontabに登録しておいたのだが、こちらが動作していなかったorz
原因は単純で、なんとスクリプトのファイルに実行権限が無かった・・・・・・・・
コマンドラインからそのまま実行しようとして始めて気付くという(爆)。
慌てて
chmod +x スクリプト名
で実行権限を与え、さらにスクリプト内で使用している各種のコマンドの記述をフルパスに修正した。
以前コマンドラインからは実行すると動作するのに、crontabに登録すると動作しないことがあり、その時はコマンドパスが通っていないことが原因だったので、今回も同じことが無いようにしたということ。

最近は滅多にスクリプトを書くことも無くなったので、僅か数行のスクリプトを書くだけで苦労してしまった・・・・・・

←クリックしてくれると嬉しいです。