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
반응형
'프로그래밍 > 리눅스' 카테고리의 다른 글
[linux] crond, crontab 사용법 (7) | 2021.01.17 |
---|---|
[shellscript] 중복 실행 방지 - Avoid redundant execution (0) | 2021.01.13 |
[shellscript] 실행 옵션 - getopt (1) | 2021.01.08 |
[svn 오류] svn: E155009: Failed to run the WC DB work queue associated with (3) | 2021.01.05 |
[ubuntu v14.04.1] MariaDB 설치 방법 (2) | 2020.12.23 |
댓글