upstart 서비스에 의해 스크립트가 시작된 트랩의 grep 종료 코드

upstart 서비스에 의해 스크립트가 시작된 트랩의 grep 종료 코드

최근에 우분투 시작과 관련된 문제가 발생하여 Bash 셸에 갇혔습니다.

우분투 12.04를 사용하고 있습니다. 시작 스크립트(/etc/init/player.conf)는 다음과 같습니다.

start on (local-filesystems and runlevel [2345])
stop on runlevel [06]

script
    /tmp/test.sh
end script

/tmp/test.sh:

#!/bin/bash

TOKEN="token"
TOKEN_FILE="/tmp/token"
OUTPUT_FILE="/tmp/test_exit"
func()
{
    grep "$TOKEN" "$TOKEN_FILE"; echo $? >> "$OUTPUT_FILE"; exit 0
}

trap 'trap "" INT TERM QUIT EXIT; func' INT TERM QUIT EXIT

rm -f "$OUTPUT_FILE"
echo "$TOKEN" > "$TOKEN_FILE"

grep "$TOKEN" "$TOKEN_FILE"; echo $? >> "$OUTPUT_FILE";

sleep 1000

exit 0

테스트 프로그램:

$sudo service player start
$sudo service player stop
$cat /tmp/test_exit
0
2

내 질문은 파일(/tmp/token)이 변경되지 않았고 grep이 해당 파일("/tmp/token")에서 문자열("token")을 찾아야 하기 때문에 두 번째 결과가 2인 이유입니다.

관련 정보