watch가 연결된(pipe) 명령을 실행하지 못할 때.

사용하고 있는 배치 프로그램 중에 15,000개쯤 되는 항목을 검색하고, 각각의 결과를 파일로 남기는 게 있습니다. 보통은 밤 중에 돌아서 오전에 확인하곤 하는데, 오늘은 무슨 문제가 있었는지, 전체를 돌지 못하고 중간에서 멈춰있었습니다. 그래서 어쩔 수 없이 오전부터 다시 돌리는데, 진행상황을 확인하고 싶었습니다. 전체 항목 수는 알고 있고, 각각의 결과를 파일로 남겨두기 때문에, 결과 파일 수만 세보면 진행상황을 파악할 수 있겠다 싶었습니다. 그래서 다음과 같이 파일 갯수를 셌습니다. $ find ./ -name '*.log' | wc -l 그리고 저걸 계속해서 전송할 수는 없으니, 주기적으로 명령을 날려 결과를 확인할 수 있도록 "watch"를 추가했습니다. $ watch -n 10 find ./ ..

find와 exec 조합하기(+ 서버 계정의 uid 변경하기 )

새로운 서비스 릴리즈를 준비하고 있는데, 도커를 이용하고 점진 적으로 기존 레거시 앱들도 도커로 전환할 계획을 가지고 있습니다. 기존 레거시 앱들이 호스트에서 구동되기 때문에 호스트의 파일 시스템 일부를 볼륨으로 지정하여 앱 사이의 데이터를 공유하고 있습니다. 이를 위해서 호스트의 계정과 컨테이너에서 구동되는 계정의 uid를 일치하도록 했습니다. 개발서버에서 문제 없이 구동했고, 이제 릴리즈 일정이 다가옴에 따라 스테이지 서버와 운영서버에 배포를 시작했는데, 문제가 생겼습니다. 스테이지 서버와 운영 서버는 최근에 받은 서버이고, 운영 주체가 다릅니다. 그래서 개발서버와 달리 직접 컨트롤 할 수가 없습니다. 여기서 문제가 발생했는데, 스테이지 서버와 운영 서버에서 발급 받은 계정의 uid가 기존에 사용하던..