로그 회전을 위해 다음 코드 조각을 사용합니다.

로그 회전을 위해 다음 코드 조각을 사용합니다.

누군가 이것이 어떻게 작동하는지 설명할 수 있습니까?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에 신호를 보내는 두 가지 작업을 수행하고, 두 번째 명령은 7일보다 오래된 로그를 삭제합니다.

첫 번째 명령 시퀀스는 다음을 수행합니다.

  • ps -efUID PID PPID C STIME TTY TIME CMD(또는 유사) 형식의 전체 프로세스 목록을 가져옵니다.
  • grep mongodmongoDB 서비스 행 필터
  • awk '$0!~/grep/ && $2~/[0-9]/{print "kill -SIGUSR1 "$2}'필터는 grep프로세스를 무시하고 두 번째 열(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/로그 교체에 대한 추가 정보

관련 정보