我有一个 /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 &