mongodb 의 유지 보수 로 인 한 grep, awk, sed 와 파이프 의 응용
여 기 는 mongodb 1.6.4, 64 비트, Liux 버 전 을 사용 합 니 다.
인터넷 에 있 는 몬 godb 의 중국어 자 료 는 형 편 없 이 적어 서 스스로 해 볼 수 밖 에 없다.먼저 mongo 명령 의 인 자 를 조회 한 결과 셸 의 인 자 를 발 견 했 습 니 다. mongodb 홈 페이지 에 설명 이 있 습 니 다. mongodb 는 이 매개 변 수 를 통 해 js 스 크 립 트 를 실행 하고 홈 페이지 를 통 해 예 를 들 수 있 습 니 다.https://github.com/mdirolf/shell_presentation/blob/master/slides. js, 발견 도 어렵 지 않 습 니 다.이어서 Liux 서버 에 간단 한 스 크 립 트 를 썼 습 니 다.
mongo.js
print("all count:" + db.videos.count() );
print("add count:" + db.vid_add.count() );
이어서 Liux 에서 시도 해 보 았 습 니 다.
/mongo localhost/myCollections --shell/home/bosshida/mongo.js
진짜 됐어 요: 출력
MongoDB shell version: 1.6.4
connecting to: localhost/crawler
type "help" for help
all count:113358593
add count:2940633
그러나 이 때 는 mongodb 의 셸 콘 솔 에 들 어 갔 습 니 다. 이 프로 세 스 를 닫 으 려 면 발 을 더 써 야 합 니 다.
경험 에 따 르 면 ps 를 통 해 모든 프로 세 스 를 표시 하고 grep 를 통 해 프로 세 스 ID 를 찾 은 다음 kill 을 제거 합 니 다.
grep 자체 의 프로 세 스 를 제거 하고 인터넷 에서 자 료 를 찾 았 기 때문에 grep - v 'grep' 를 통 해 grep 가 함 유 된 프로 세 스 를 제거 할 수 있 습 니 다. 마지막 으로 파 이 프 를 통 해 어떻게 kill 을 통 해 찾 아 낸 프로 세 스 를 제거 할 수 있 습 니까? 스 크 립 트 는 다음 과 같 습 니 다.
ps -ef| grep '/home/mongodb/bin/mongo local/myCollection --shell mongo.js' | grep -v 'grep'| awk '{print $2}' | xargs kill
그 중에서 awk 는 프로 세 스 번 호 를 추출 한 것 입 니 다. xargs kill 은 인터넷 에서 찾 아 온 것 입 니 다. man kill 에서 도 설명 을 찾 지 못 했 습 니 다. 전 달 된 매개 변 수 를 pid 로 하고 이어서 kill 로 떨 어 뜨 린 것 같 습 니 다.
그 중에서 awk 에 대해 잘 모 르 고 일부 자 료 를 통 해 대충 용법 도 알 수 있 습 니 다. 주로 awk '/pattern/{action}' 이라는 규칙 을 파악 하 는 것 은 pattern 을 통 해 일치 하 는 (정규) 를 찾 아 action 을 수행 하 는 것 입 니 다.
Kill 이 떨 어 진 후 아직 끝나 지 않 았 습 니 다. 데 이 터 를 추출 하여 파일 에 기록 해 야 합 니 다.
그 중에서 추출 할 데 이 터 는 단지
all count:113358593
add count:2940633
이 두 줄 때문에 나 는 다른 스 크 립 트 를 써 서 데 이 터 를 추출 하고 다른 파일 에 썼 다.
echo `date`>> result.txt | sed -n '4,5p' stat.txt | awk -F : '{print $2}' >> result.txt
설명:
스 크 립 트 의 프로 세 스 는 먼저 날 짜 를 result. txt 파일 에 기록 한 다음 sed 를 통 해 stat. txt 파일 의 4, 5 줄 을 추출 하고 awk 를 통 해 각 줄 의 데 이 터 를 result. txt 파일 에 추가 합 니 다.
sed - n '4, 5p' stat. txt 는 파일 의 네 번 째 줄 부터 다섯 번 째 줄 까지 내용 을 캡 처 한 다 는 뜻 이다.
awk - F: '{print $2}' 는 콜론 ':' 를 구분자 로 하여 두 번 째 수 치 를 인쇄 한 다 는 뜻 입 니 다.
이렇게 하면 작업 이 대충 끝 납 니 다. 마지막 으로 crontab 를 쓰 고 매일 정시 에 스 크 립 트 를 실행 하면 Mongodb 의 데 이 터 를 자동 으로 기록 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
레코드를 업데이트하고 업데이트 전에 동일한 레코드를 삭제하는 방법(nest js & mongoDB)ID로 레코드를 업데이트하고 싶지만 업데이트 전에 동일한 레코드에 이전에 저장된 데이터를 삭제하고 싶습니다. 프로세스는 무엇입니까? 컨트롤러.ts 서비스.ts 나는 이것을 해결하기 위해 이런 식으로 노력하고 있습니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.