システムにログインする前に、1つのプロセスを実行する必要があります。サービスのようにそれを実行するには? Linuxでサービスを行うにはどうすればよいですか?
UbuntuとFedoraでは?サービスはカスタマイズされたTomcatです
サービスを実行するにはなしまたは以前システムにログインする(つまり、「起動時」)ために、起動スクリプトを作成して起動シーケンスに追加する必要があります。
サービススクリプトには、開始、停止、再起動の3つの部分があります。
サービススクリプトの基本構造は次のとおりです。
#!/bin/bash
#
RETVAL=0;
start() {
echo “Starting <Service>”
}
stop() {
echo “Stopping <Service>”
}
restart() {
stop
start
}
case “$1″ in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $”Usage: $0 {start|stop|restart}”
exit 1
esac
exit $RETVAL
スクリプトを好みに合わせて調整したら、/ etc/init.d /に配置します。
そして、それをシステムサービスの起動プロセスに追加します(Fedoraでは、私はUbuntuユーザーではありません、> D)。
chkconfig -add <ServiceName>
サービスがシステムの起動プロセスに追加され、手動で再起動する必要はありません。
乾杯!
Initシステムによって、異なる方法でinitスクリプトを作成します。 Fedoraはupstartとsystemdから選択できるようにし、もちろんSysV互換性を提供します。
/etc/init/custom-Tomcat.conf
として作成します入れる:
start on stopped rc RUNLEVEL=3
respawn
exec /path/to/your/Tomcat --and --parameters
そして、Tomcatはシステムの起動時に起動するはずです。
/etc/systemd/system/custom-Tomcat.service
にサービス定義を作成する入れる:
[Service]
ExecStart=/path/to/your/Tomcat --and --parameters
Restart=always
[Install]
WantedBy=multi-user.target
systemctl enable custom-Tomcat.service
を使用してサービスを有効にします。通常の起動ごとに開始されます。
もちろん、両方の初期化システムにはいくつかの設定オプションがあります。それらのドキュメントでそれらを確認できます。
Tomcatはかなり一般的なサービスです。すでにディストリビューションから提供されているinitスクリプトを確認することをお勧めします。ほとんどの場合、微調整なしで、カスタマイズされたバイナリで動作する可能性があります。
コンピュータの起動後、ユーザーがログインする前にスクリプトを実行するだけの場合は、このタスクを正確に解決するためのスクリプト/etc/rc.localを編集するだけです。
cron
デーモンがある場合、事前定義されたcron時間フックの1つは@reboot
で、システムの起動時に自然に実行されます。 crontab -e
を実行してcrontab
ファイルを編集し、行を追加します。
@reboot /your/command/here
次のように、特定のユーザーの権限で実行できる、より洗練されたスクリプトを作成できます。
#!/bin/sh
NAME=myservice
DESC="My Service"
USERGROUP="myservice:myservice"
#Helper functions
start() {
start-stop-daemon --start --quiet --background --make-pidfile \
--pidfile /var/run/$NAME.pid --chuid $USERGROUP \
--exec /usr/local/bin/myservice
}
stop() {
start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
--exec myservice --retry 30
}
case "$1" in
start)
echo -n "Starting $DESC: "
start
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
stop
echo "$NAME."
;;
restart)
echo -n "Restarting $DESC: "
#set +e
stop
#set -e
#sleep 1
start
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
スクリプトは/etc/init.d/myserviceにあり、次のコマンドを実行してサービスを開始します。
/etc/init.d/myservice start
Start-stop-daemonのmanページを読んで、その仕組みを理解してください。
追加できるように、UbuntuまたはDebianで使用できます。
update-rc.d your_service defaults
削除する
update-rc.d -f your_service remove
バイバイ!\o
関数statusとforce-reloadを LSB-compilant に実装すると便利です