upstart サービスによってスクリプトが開始されたトラップの grep 終了コード

upstart サービスによってスクリプトが開始されたトラップの grep 終了コード

最近、Ubuntuの起動に関する問題が発生し、Bashシェルに閉じ込められました。

Ubuntu 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番目の結果が2の理由です。

関連情報