web-dev-qa-db-ja.com

Centos7でのサービスとしてのアプリケーション

Centos 7はかなり新しく、以前の経験のほとんどはUbuntuでした。 Centos 7でアプリケーションをセットアップしたところ、製品のWebサイトで、アプリケーションを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でいくつかの読書をしていますが、どんな助けでも本当にありがたいです。

トンありがとう。

乾杯、M.M

1
R.W

CentOS 7、Fedora、および最近のバージョンのUbuntuで起動時に何かを実行するには、 systemd unit を作成する必要があります。あなたの質問にあるのはレガシーのinitスクリプトであり、もはや必要ありません。

単純なユニットファイルは次のようになります。

[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を実行している環境では必要のないレガシーツールです。

4
larsks