Shell-Script

Centos 7 上的應用即服務

  • August 26, 2016

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

要在 CentOS 7、Fedora 和最新版本的 Ubuntu 上執行某些東西,您需要創建一個systemd 單元。你的問題是一個遺留的初始化腳本,不再需要。

一個簡單的單元文件可能如下所示:

[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

類似chkconfigupdate-rc.d的工具是執行 systemd 的環境中不需要的遺留工具。

引用自:https://unix.stackexchange.com/questions/305948