誰かがこれがどのように機能するかを説明できますか?ps -ef | grep mongod | awk '$0!~/grep/ && $2~/[0-9]/{print "kill -SIGUSR1 "$2}' | bash; find /tmp/logs/* -type f -mtime +7 -exec rm {} \;
答え1
これは実際にログを交換するためにmongoDBにシグナルを送信する2つのことを行い、2番目のコマンドは7日より古いログを削除します。
最初のコマンドシーケンスは次のことを行います。
ps -ef
UID PID PPID C STIME TTY TIME CMD(または類似)形式の完全なプロセスのリストを取得します。grep mongod
mongoDBサービス行フィルタawk '$0!~/grep/ && $2~/[0-9]/{print "kill -SIGUSR1 "$2}'
フィルタはgrep
プロセスを無視し、2番目の列(PIDでなければならない)が数値であることを確認します。両方の条件がtrueの場合、mongoDBのPIDが追加された「kill -SIGUSR1」メッセージを印刷します。bash
awk
「印刷された」メッセージを解析するbash
この一連のコマンドの後、コマンドがfind
呼び出され、次のようになります。
-type f
ディレクトリ()でファイルを見つけて、修正時間が24時間/tmp/logs/*
の7倍以上であることを確認したら、()を呼び出してファイルを削除します。-mtime +7
rm
-exec rm {} \;
バラよりhttps://docs.mongodb.org/v3.0/tutorial/rotate-log-files/ログの交換に関する追加情報