Скрипт init.d / rc2.d иногда выполняется дважды

У меня есть скрипт запуска, который иногда выполняется дважды (с интервалом в несколько секунд) после загрузки системы (Ubuntu 16.04.3 LTS). Иногда это выполняется только один раз! Сценарий находится в /etc/init.d/TEST, и у меня есть символическая ссылка /etc/rc2.d/S99TEST, которая указывает на сценарий.

Проблема в том, что при загрузке системы сценарий иногда выполняется дважды с паузой в несколько секунд между ними. Как я могу отладить это? Я не вижу упоминания имени скрипта ни в одном из системных журналов (/ 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

Спасибо!

2
задан 13 February 2018 в 00:41

1 ответ

Ваш сценарий не проверяет входные данные, например, переданное действие. Посмотрите документацию в /etc/init.d/README, /etc/init.d/skeleton и некоторые другие сценарии, такие как /etc/init.d/kmod, чтобы оценить, какое действие передается сценарию. на выполнение (в $1) и принять соответствующий ответ на действие.

0
ответ дан 13 February 2018 в 00:41

Другие вопросы по тегам:

Похожие вопросы: