Centos 7 上的应用程序即服务

Centos 7 上的应用程序即服务

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正在构建用于分发的包,则可以将其放入其中,然后:

  1. 要立即启动服务:systemctl start myservice
  2. 要将服务标记为下次启动时自动启动:systemctl enable myservice

chkconfig和等工具update-rc.d是旧版工具,在运行 systemd 的环境中不是必需的。

相关内容