![私のcronコマンドは良いですか? [閉鎖]](https://linux33.com/image/133064/%E7%A7%81%E3%81%AEcron%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%AF%E8%89%AF%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
cron
次のコマンドを使用して、週に1回、ログをクリーンアップしようとします。
@weekly find /var/log/ \( -iregex ".*\.[2-20]+" -o -iname "*.gz" \) -exec rm {} \; 2>&1
いいですか?
答え1
[2-20]+
2
数字が範囲内にあるかどうかをテストする正しい方法ではありません20
。正規表現の角かっこは、その中の文字と一致する単一の文字にのみ一致します。-
文字の範囲(たとえば、2-9
またはa-z
)2-2
を指定するために文字セットに使用されます2
。 Soは、、などのすべての文字とシーケンスを一致させることと[2-20]+
同じです。[20]+
2
0
2
20
02
2200
それはする必要があります([2-9]|1[0-9]|20)
。これは、toまたは次の2
1つの数字と一致します。9
1
0
9
20
GNUを使用している場合は、演算子を代わりにfind
使用できます。-delete
-exec rm {} \;
2>&1
標準出力をリダイレクトしない場合は使用する必要はありません。デフォルトでは、標準出力と標準エラーの両方がユーザーにメールで送信されます。
@weekly find /var/log/ \( -iregex '.*\.([2-9]|1[0-9]|20)' -o -iname "*.gz" \) -delete