以下に次のスクリプトがありますラズベリーパイジェシー:
ファイルtest.sh
には以下が含まれます。
#!/bin/sh -e
nohup sleep 321 &
sleep 120
false
exit 0
ターミナルセッションで一般ユーザーとして実行すると、次のようになります。
pi@raspberrypi:~ $ ps -ejf |grep sleep
pi 5073 5072 5072 4618 0 15:16 pts/1 00:00:00 sleep 321
pi 5074 5072 5072 4618 0 15:16 pts/1 00:00:00 sleep 120
スクリプトが終了した後、sleep 321
プロセスの親が再割り当てされ、期待どおりに実行され続けます。
pi@raspberrypi:~ $ ps -ejf |grep sleep
pi 5073 1 5072 4618 0 15:16 pts/1 00:00:00 sleep 321
なぜこれがで動作しないのですかrc.local
?実行コマンドがnohup
終了しました。
pi@raspberrypi:~ $ ps -ejf |grep sleep
root 450 449 449 449 0 15:45 ? 00:00:00 sleep 321
root 451 449 449 449 0 15:45 ? 00:00:00 sleep 120
120秒後、sleep 321
プロセスは消えます。
rc.local
false
に置き換えるときにのみ機能するので、false || true
スクリプトの実行に関連しているようです。しかし、-e
ターミナルで実行するものと起動時に実行するものに違いがあるのはなぜですか?test.sh
rc.local