web-dev-qa-db-ja.com

init.d / rc2.dスクリプトが時々2回実行される

時々システム起動時に2回(数秒間隔で)実行される起動スクリプトがあります(Ubuntu 16.04.3 LTS)。一度だけ実行されることもあります!スクリプトは/etc/init.d/TESTにあり、スクリプトを指すシンボリックリンク/etc/rc2.d/S99TESTがあります。

問題は、システムの起動時に、スクリプトが時々を2回実行し、その間に数秒の休止があることです。どうすればこれをデバッグできますか?システムログ(/ var/log/*)にスクリプト名が記載されていません。私は途方に暮れています。

スクリプトは次のとおりです。

#!/bin/bash

### BEGIN INIT INFO
# Provides:          test_boot
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: test_boot
# Description:       test_boot app
### END INIT INFO

exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>>/home/username/TEST.log 2>&1

echo "---"
echo "---"
echo "Starting: $(date)"
sleep 2
echo "User: $(whoami)"
echo "Caller: $(ps -o args= $PPID)"
sleep 2
echo "Done: $(date)"

クリーンブート後のTEST.logファイルは次のとおりです。

---
---
Starting: Mon Feb 12 21:26:35 UTC 2018
User: root
Caller: /sbin/init tegra_keep_boot_clocks
Done: Mon Feb 12 21:26:39 UTC 2018
---
---
Starting: Mon Feb 12 21:26:59 UTC 2018
User: root
Caller: /sbin/init tegra_keep_boot_clocks
Done: Mon Feb 12 21:27:03 UTC 2018

ありがとうございました!

1
logidelic

渡されたアクションのように、スクリプトは入力をチェックしていません。/etc/init.d/README/etc/init.d/skeleton、および/etc/init.d/kmodなどの他のスクリプトのドキュメントを見て、渡されたアクションを評価してください実行時にスクリプトに($1で)、アクションに対して適切な応答を行います。

1
Joe