쉘 스크립트에서 fuser 사용하기
글쓴이: multihand / 작성시간: 월, 2003/04/14 - 10:55오전
korn shell에서 특정 directory의 file이 open된 상태이면 rm을 수행하지 않고, 만약 file이 open되지 않은 상태이면 rm을 수행하도록 스크립트를 작성하고자 합니다.
fuser 명령을 사용해서 open상태를 체크해보니 open이면 return value 0와 관련 process id를 output으로 갖더군요. 그런데, 만약 file이 open되지 않은 상태라면 아무런 return value를 출력하지 않고 check routine을 skip하더군요. 이 난관을 어떻게 극복해야할지, 아는 분 계시면 알려주세요.
아래는 test script입니다.
for TEST_FILE in /tmp/*.log do for i in `fuser $TEST_FILE` do if test -z $i then echo "$TEST_FILE : file is not opened" else echo "$TEST_FILE : file opened" fi done done
Forums:
간단하게 짜면 이렇게 할 수도 있겠죠.
이렇게 짜면 해당 쉘프로그램을 실행시킬때 첫번재 아규먼트로 패스를 받아서 *.log 를 검사하고 열려있는지 안열려있는지 검사하겠죠. pid까지 찍고 싶다면 $0를 awk에서 찍으신뒤에 cut같은 것으로 : 를 기준으로 짤라서 보면 될것 같군요.
========================================
* The truth will set you free.
댓글 달기