ログの回転には、次のコードスニペットを使用します。

ログの回転には、次のコードスニペットを使用します。

誰かがこれがどのように機能するかを説明できますか?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 -efUID PID PPID C STIME TTY TIME CMD(または類似)形式の完全なプロセスのリストを取得します。
  • grep mongodmongoDBサービス行フィルタ
  • awk '$0!~/grep/ && $2~/[0-9]/{print "kill -SIGUSR1 "$2}'フィルタはgrepプロセスを無視し、2番目の列(PIDでなければならない)が数値であることを確認します。両方の条件がtrueの場合、mongoDBのPIDが追加された「kill -SIGUSR1」メッセージを印刷します。
  • bashawk「印刷された」メッセージを解析するbash

この一連のコマンドの後、コマンドがfind呼び出され、次のようになります。

  • -type fディレクトリ()でファイルを見つけて、修正時間が24時間/tmp/logs/*の7倍以上であることを確認したら、()を呼び出してファイルを削除します。-mtime +7rm-exec rm {} \;

バラよりhttps://docs.mongodb.org/v3.0/tutorial/rotate-log-files/ログの交換に関する追加情報

関連情報