引数の限界
引数の限界
引数の限界
Linux サーバのログ削除をshell + crontabでやっているんだけど、対象のログファイルが消えていない事に気付く。どうやら前任者が消えてるだろうと思い込んで放置していたようだ。

# 調査
・/var/log/cron では 削除用の shell は実行されている形跡がある。
・同様の事を行っているサーバではログは削除されている
・ログが削除されていないサーバは2台

# 確認
ログが削除されないサーバの 削除shell を手動で実行すると、エラーが出た。
"Argument list too long" → 引数多過ぎ

どうもパイプラインで渡している引数が多過ぎてコケていたらしい。ログディレクトリの中を見てみると、2009年頃から日毎のログが蓄積されていた。大体 (365 * 4 + α) * 2 程のファイルがある。xargs を使用してもなお消えない程のファイル数(引数量)だったようで、ここをどうにかしないと今後もエラーを吐き続けてしまう。
そんなわけで同様の内容でログのディレクトリ内に削除shellを作成し、相対pathに書き換えて実行する。ファイル毎の文字数が少なくなる事で引数全体の量を減らしてみる。
これが功を奏し、ログは削除された。

# 実験
この手の実験が割りと好きなので、自宅のLinux(Ubuntu)でも試してみる事にした。
まず適当なディレクトリにファイルを70000件作成する。その後同様shellを作成して実行。

1枚目 ― perl で70000ループを形成してファイルを自動生成
2枚目 ― shell で削除処理を記述
3枚目 ― 実行結果(shell内変更前と後)

こんな事もあるんだなぁと思った今日この頃。

コメント

バヤシ(´・ω・`)@Caged Sun
2012年6月9日12:47

難しいです(;´Д`)笑

shima
2012年6月9日19:45

自分は趣味と仕事がほぼイコールの人間だったりします
さすがに区別はつけてますが… (´・ω・)ノ > バヤシさん

最新の日記 一覧

<<  2025年5月  >>
27282930123
45678910
11121314151617
18192021222324
25262728293031

お気に入り日記の更新

この日記について

日記内を検索