试图让一个简单的文件在启动时运行。但不启动。如果我运行它,它就会起作用,但是,在启动时永远不会。
这是我的 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
现在添加了。当这些驱动程序加载时,我将尝试进行更改。