init.d / rc2.d 脚本有时会执行两次

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

谢谢你!

答案1

您的脚本没有检查输入,例如传入的操作。查看、中的文档/etc/init.d/README/etc/init.d/skeleton以及其他一些脚本,例如/etc/init.d/kmod评估执行时传递给脚本的操作(在$1)并对该操作采取适当的响应。

相关内容