본문 바로가기
프로그래밍/리눅스

[shellscript] error: garbage option 오류

by 앗싸붕 2021. 1. 13.
728x90
반응형

 

shellscript 에 중복 방지 기능을 추가하던 중 "error: garbage option" 이런 오류가 발생했습니다. 이상하게도 해당 오류가 발생하고 난 후에는 제가 작성한 파일이 모두 없어져서 한참을 헤맸습니다.

오류 내용은 아래와 같습니다.

error: garbage option

Usage:
 ps [options]

 Try 'ps --help <simple|list|output|threads|misc|all>'
  or 'ps --help <s|l|o|t|m|a>'
 for additional help text.

For more details see ps(1).

 

해당 오류는 basename 을 사용하여 수행 중에 lock 파일을 생성하고 수행이 끝나면 해당 lock 파일을 삭제하여 실행파일 중복 방지를 하는 로직이였는데 문제원인은 lock 파일 이름과 실제 수행되는 실행 파일의 이름이 같아서 발생한 문제였습니다.

#!/bin/bash
### avoid overlab
LOCKFILE=./$(basename $0) # 이 부분이 문제였음.
if [ -f $LOCKFILE ];then
  P=$(cat $LOCKFILE)
  if [ -n "$(ps --no-headers -f $P)" ];then
    echo "already running... exit."
    exit 1
  fi
fi
echo $$ > $LOCKFILE
trap 'rm -f "$LOCKFILE"' EXIT
 
# Main function
while [ true ]
do
    sleep 1
    date
done
 
exit 0

 

수정은 파일 이름을 변경해주거나 경로를 변경해주어서 정상 동작을 확인했습니다. 사소한 오류때문에 시간을 꽤나 허비했네요..ㅠㅠ

 

 

728x90
반응형

댓글