Centos 7 还很陌生,我早期的大部分经验都是使用 Ubuntu。我刚刚在 Centos 7 上设置了一个应用程序,我在他们的产品网站上看到要将应用程序作为 Linux 服务运行(在系统启动时启动),这是需要使用的脚本。
#! /bin/sh
export JAVA_HOME="/usr/lib/jvm/jdk1.7.0_07"
startcmd='<PRODUCT_HOME>/bin/listener_mm.sh start > /dev/null &'
restartcmd='<PRODUCT_HOME>/bin/listener_mm.sh restart > /dev/null &'
stopcmd='<PRODUCT_HOME>/bin/listener_mm.sh stop > /dev/null &'
case "$1" in
start)
echo "Starting the Listener Server ..."
su -c "${startcmd}" user1
;;
restart)
echo "Re-starting the Listener Server ..."
su -c "${restartcmd}" user1
;;
stop)
echo "Stopping the Listener Server ..."
su -c "${stopcmd}" user1
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
哈哈希望 esac 不特定于其他发行版:?
因此,我创建了脚本,根据我的环境替换了正确的值,并向我的脚本添加了符号链接。我有几个问题 1) 上面的脚本可能适用于 Ubuntu 或其他 Linux 发行版。那么我需要对脚本进行任何更改吗? 2)如何让它作为服务为所有用户运行?我希望它在系统启动时启动。 Debian / Ubuntu 有 update-rc.d,我想我需要为此使用 chkconfig。我可以对此有任何指示吗?它恰好是一台几乎没有其他东西的机器,所以我进行了一些尝试,如果有这方面经验的人可以给我一些指导,那就太好了。
我正在阅读一些关于 systemd 的文章,但任何帮助将不胜感激。
万分感谢。
加油MM
答案1
要在 CentOS 7、Fedora 和最新版本的 Ubuntu 上启动时运行某些内容,您需要创建一个系统单元。您的问题是遗留的初始化脚本,不再需要。
一个简单的单元文件可能如下所示:
[Service]
Type=simple
ExecStart=/bin/myservice
[Install]
WantedBy=multi-user.target
假设/bin/myservice
在前台运行,以上内容确实是您所需要的。/etc/systemd/system/myservice.service
如果您只是在自己的系统上进行设置,或者/usr/lib/systemd/system/myservice.service
正在构建用于分发的包,则可以将其放入其中,然后:
- 要立即启动服务:
systemctl start myservice
- 要将服务标记为下次启动时自动启动:
systemctl enable myservice
chkconfig
和等工具update-rc.d
是旧版工具,在运行 systemd 的环境中不是必需的。