init.d脚本未执行

init.d脚本未执行

我有一个 /etc/init.d 脚本,用于启动我的 Web 服务器。我将其设为可执行文件并添加了它 ( update-rc.d webserver defaults)。当我从命令行执行该脚本时,它运行正常 ( ./webserver)。

但重新启动系统后,我的网络服务器没有运行。

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin

cd ~/projects/webserver
./.build/debug/webserver &
exit 0

用户目录有问题吗(我以root身份登录)?

答案1

您想要的波浪号扩展类型是根据 shell 的当前用户执行的。例如,当您以 root 身份登录时,~/root。如果脚本在您登录之前运行,则~无法扩展到您想要的目录。

在脚本中使用文件的完整路径。

备查,这里以下是在脚本中使用波浪线扩展的一些有用示例

答案2

嗯,你的脚本有问题。编写脚本时最好使用绝对路径,而不是波浪号(~)。这可能是导致脚本无法使用的罪魁祸首。如果您想更改目录,请提供完整路径,例如 /home/scripts/projects/,而不是〜/项目.这有很大的不同。

要实现您的目标,有几种方法。作为一名高级系统工程师,我根据具体情况使用不同的方法来实现这些目标。好吧,我在这里列出了许多方法中的一些。

1) 您所尝试的基本方法均未成功。

sudo su
chmod a+x /etc/init.d/webserver
update-rc.d webserver defaults

2)在重启时添加一个 cron 作业。

sudo su
crontab -e
@reboot /home/path/to/script.sh

3)在最后一行之前将命令添加到 rc.local 文件中出口 0

sudo su
nano /etc/rc.local
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
cd /absolute/path/projects/webserver
./.build/debug/webserver &

相关内容