Shell-Script
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
要在 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
,然後:
- 立即啟動服務:
systemctl start myservice
- 將服務標記為下次啟動時自動啟動:
systemctl enable myservice
類似
chkconfig
和update-rc.d
的工具是執行 systemd 的環境中不需要的遺留工具。