添加到 init.d 的服务不显示 echo 信息,请问问题出在哪里?谢谢

2016-10-29 23:00:59 +08:00
 haozi1986
最近重新部署了 VPS ,系统是 Ubuntu 16.04.1 x32 ,但是发现了一个问题

我自己添加了很多服务到 init.d 里面,比如控制 nginx 以及 aria2c 之类的,在之前的系统里面,启动、关闭、重启服务都会显示相应的 echo 消息,比如服务脚本里的 echo "已开启 nginx"等均可以正常显示,但是这一次不管怎样都没有了相关信息的显示,不过如果在其它目录里面按照 ./***.sh 的方式运行, echo 则可以正常显示……

虽说消息不显示并不妨碍正常使用,但总是强迫症发作想改过来,并且也很想知道问题究竟出在哪里,在网上搜索了很久都没找到相关的解决办法,特意请教一下各位

另说明一下,我所有操作均是在 root 权限下进行的

谢谢

附一个说明测试:( root 账户下进行)

nano /etc/init.d/test

#!/bin/bash
case "$1" in
start)
echo "start"
;;
stop)
echo "stop"
;;
restart)
echo "restart"
;;
esac
exit 0

chmod 755 /etc/init.d/test
systemctl daemon-reload

按理说执行 service test start 就会显示 start ,但是并没有……
1864 次点击
所在节点    问与答
2 条回复
BOYPT
2016-10-29 23:06:08 +08:00
在 systemd 里面,/etc/init.d 里面的文件已经不是在主要的服务启动方式,而是 systemd 的 service unit ,旧版的 init.d 文件通过 unit 配置文件里面类似下面这样的方式启动

[Service]
ExecStart=/etc/init.d/xxx start
ExecStop=/etc/init.d/xxx stop

脚本启动过程不是根据当前 shell 子进程启动的, stdin/out/err 都会被 systemd 接管,所以你看不到 echo 了。
haozi1986
2016-10-29 23:26:15 +08:00
@BOYPT 啊,原来如此,完全没想到是这个原因,之前 VPS 系统是 Ubuntu 14 ,我就还在疑惑为什么那时候是正常的
感谢解答!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/316494

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX