私は次の質問がありますナット(ネットワークUPSツール)パッケージ。それで私はそれについて掘り下げていくつかの実験を始めました。
stop
以前と同様に、パラメータを使用して特定のランレベルで呼び出される偽のサービスをどのように作成できますかinit.d
?
私が見ることができるように、多くのパッケージは依然としてそれに依存していますが、望ましい動作を得ることはできません。
/etc/init.d/halt
たとえば、単純なスクリプトファイルとそれへのリンクがあります/etc/rc0.d/K07halt
。停止ランレベルの終わりに呼び出す必要があります。
しかし、これを行うかservice halt stop
エラー/etc/rc0.f/K07halt
が発生した場合:
Stopping K07halt (via systemctl): K07halt.serviceFailed to stop
K07halt.service: Unit K07halt.service not loaded.
failed!
そのサービス/デーモンがない場合でも、これらのダミースクリプトをどのように実行できますか?
タイトルに何かを変えましたか?フラグを宣言します/lib/lsb/init-functions
か? Systemdをだまして無条件にスクリプトを呼び出すには?
init.d
新しいデーモンを作成するのではなく、すでに存在するものを修正しようとしているので、使用しないでください。
答え1
私は問題なくUbuntu 16.04のLSBサービスを作成しました。
# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.4 LTS
Release: 16.04
Codename: xenial
fake-service
755権限を持つ新しいサービスを追加します/etc/init.d
。
#!/bin/sh
# fake-service Bring up/down fake-service
#
### BEGIN INIT INFO
# Provides: fake-service
# Default-Start: 2 3 4 5
# Default-Stop:
#Required-Start:
#Required-Stop:
# Should-Start:
# Should-Start:
# Short-Description: Bring up/down fake-service
# Description: Bring up/down fake service
### END INIT INFO
DAEMON=
NAME=fake-service
DESC="fake-service"
PIDFILE=/var/run/fake-service.pid
SCRIPTNAME=/etc/init.d/fake-service
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Starting fake-service ..." "$NAME"
touch $PIDFILE
log_end_msg $?
;;
stop)
log_daemon_msg "Stoping fake-service ..." "$NAME"
rm -f $PIDFILE
log_end_msg $?
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
;;
*)
log_action_msg "Usage: $0 {start|stop|status}"
exit 2
;;
esac
exit 0
これをランレベルに追加します。
# update-rc.d fake-service defaults
からman 8 update-rc.d
:
デフォルトオプションとして実行すると、update-rc.dは、init.dの実行レベルと依存関係情報を使用して、/etc/init .d/スクリプトを指す/etc/rcrunlevel.d/[SK]NNnameというリンクを生成します。名前スクリプト LSB コメントヘッダー。
テストサービス:
スタート:
# service fake-service start
# service fake-service status
● fake-service.service - LSB: Bring up/down fake-service
Loaded: loaded (/etc/init.d/fake-service; bad; vendor preset: enabled)
Active: active (exited) since Mon 2018-04-09 19:14:18 MSK; 4s ago
Docs: man:systemd-sysv-generator(8)
Process: 3643 ExecStop=/etc/init.d/fake-service stop (code=exited, status=0/SUCCESS)
Process: 3713 ExecStart=/etc/init.d/fake-service start (code=exited, status=0/SUCCESS)
Apr 09 19:14:18 ubuntu16-04 systemd[1]: Starting LSB: Bring up/down fake-service...
Apr 09 19:14:18 ubuntu16-04 fake-service[3713]: * Starting fake-service ... fake-service
Apr 09 19:14:18 ubuntu16-04 fake-service[3713]: ...done.
Apr 09 19:14:18 ubuntu16-04 systemd[1]: Started LSB: Bring up/down fake-service.
停止する:
# service fake-service stop
# service fake-service status
● fake-service.service - LSB: Bring up/down fake-service
Loaded: loaded (/etc/init.d/fake-service; bad; vendor preset: enabled)
Active: inactive (dead) since Mon 2018-04-09 19:15:03 MSK; 3s ago
Docs: man:systemd-sysv-generator(8)
Process: 3757 ExecStop=/etc/init.d/fake-service stop (code=exited, status=0/SUCCESS)
Process: 3713 ExecStart=/etc/init.d/fake-service start (code=exited, status=0/SUCCESS)
Apr 09 19:14:18 ubuntu16-04 systemd[1]: Starting LSB: Bring up/down fake-service...
Apr 09 19:14:18 ubuntu16-04 fake-service[3713]: * Starting fake-service ... fake-service
Apr 09 19:14:18 ubuntu16-04 fake-service[3713]: ...done.
Apr 09 19:14:18 ubuntu16-04 systemd[1]: Started LSB: Bring up/down fake-service.
Apr 09 19:15:03 ubuntu16-04 systemd[1]: Stopping LSB: Bring up/down fake-service...
Apr 09 19:15:03 ubuntu16-04 fake-service[3757]: * Stoping fake-service ... fake-service
Apr 09 19:15:03 ubuntu16-04 fake-service[3757]: ...done.
Apr 09 19:15:03 ubuntu16-04 systemd[1]: Stopped LSB: Bring up/down fake-service.