init.d 脚本不起作用 - 尝试在后台启动 ssh 隧道

init.d 脚本不起作用 - 尝试在后台启动 ssh 隧道

试图让一个简单的文件在启动时运行。但不启动。如果我运行它,它就会起作用,但是,在启动时永远不会。

这是我的 init.d 脚本,launch_ssh_daemon.sh:

#!/bin/bash
### BEGIN INIT INFO
# Provides:
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description:
# Description
### END INIT INFO

/usr/bin/sudo /usr/bin/ssh -i /etc/ssh/id_rsa -N -f -R 10000:localhost:22 [email protected]

我还运行了我认为必要的命令:

sudo chown root:root launch_ssh_daemon.sh
sudo update-rc.d launch_ssh_daemon.sh defaults

而且,我还多次重新启动计算机。

我不知道该怎么办。就像我说的,当我启动它时它就起作用了,如下所示:

./launch_ssh_daemon.sh

但我确实被提示输入密码,但在启动时它不应该要求输入密码,并且它已经被设置为root。

有什么想法我哪里出错了吗?

答案1

由于您自己执行./launch_ssh_daemon.sh可以完成您想做的事情...我假设:

  • 脚本位于/etc/init.d/
  • 脚本有执行权

我的建议是找出问题所在并使脚本更清晰:

首先,sudo不带参数在通常由init.d.您已经处于root该环境中(删除sudo

我从来没有见过有.sh结尾的开头脚本。我不确定这是否会导致您遇到问题(重命名您的脚本)

尽管您执行了update-rc.d,但请检查是否存在指向脚本的符号链接,其格式为/etc/rc?.d/S??<script_name>,第一个是?运行级别,第二个是??数字 (01 - 99) 标记脚本执行的顺序。这些链接是在选择运行级别后获取的链接,/etc/init.d/rc以便执行该运行级别的所有必需的初始化脚本。如果您的脚本没有链接到那里的任何地方,它将永远不会在启动时执行。

...最好将输出记录在某处,只是为了确定执行时发生了什么。

答案2

谷歌搜索发现了这个问题,我实际上一直在使用WIFI,虽然WIFI速度很快。但是,我使用的是USB wifi适配器,并且我在最近重新启动后意识到它的驱动程序,直到大约4点才加载不幸的是,图形桌面界面加载后 5 秒后。为了修复它,我sleep 10现在添加了。当这些驱动程序加载时,我将尝试进行更改。

相关内容