首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不执行init.d脚本

不执行init.d脚本
EN

Ask Ubuntu用户
提问于 2016-08-25 14:47:16
回答 2查看 13.6K关注 0票数 3

我有一个/etc/init.d脚本来启动我的etc服务器。我使它可执行,并添加了它(update-rc.d webserver defaults)。当我从命令行执行脚本时,它工作正常(./webserver)。

但是在重新启动我的系统之后,我的not服务器就没有运行了。

代码语言:javascript
复制
#!/bin/sh

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

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

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

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2016-08-25 17:08:01

您想要的倾斜展开的类型是参照shell的当前用户执行的。例如,当您以根用户身份登录时,~/root。如果脚本在登录前运行,则无法将~展开到所需的目录。

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

对于将来的参考,这里是在脚本中使用倾斜扩展的一些有用的例子。

票数 5
EN

Ask Ubuntu用户

发布于 2016-08-25 15:08:29

你的剧本有个问题。在编写脚本时最好使用aboslute路径而不是tilde(~)。这可能是导致脚本无法使用的罪魁祸首。如果您想要更改dir,给出完整的路径,比如/home/script/project/而不是~/projects,.It会带来更大的不同。

要达到你的目标,有几种方法。作为一名高级系统工程师,我使用不同的方法来实现这些事情,这取决于情况。在这里,我列举了许多方法。

( 1)基本的方法是你打成平局,但没有成功。

代码语言:javascript
复制
sudo su
chmod a+x /etc/init.d/webserver
update-rc.d webserver defaults

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

代码语言:javascript
复制
sudo su
crontab -e
@reboot /home/path/to/script.sh

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

代码语言:javascript
复制
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 &
票数 3
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/816761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档