次のLSBヘッダーでスクリプトを作成しました。
#! /bin/sh
### BEGIN INIT INFO
# Provides: updateservice
# Required-Start: $local_fs $time $network $named $syslog
# Required-Stop: $local_fs $time $network $named $syslog
# Default-Start:
# Default-Stop: 0
# Short-Description: Update Service
# Description: This script is meant to update and upgrade
# the system. It uses apt-get.
### END INIT INFO
入れて/etc/init.d
リンクを作って、update-rc.d
欲しいリンクを手に入れよう
lrwxrwxrwx 1 root root 19 Nov 29 13:08 /etc/rc0.d/K01update.sh -> ../init.d/update.sh
....しかし:終了時にスクリプトは実行されません。なぜ?
手動で実行すると、/etc/init.d/update.sh stop
必要に応じて正確に実行されますが、シャットダウン時には実行されません。そして楽しい事実のように、同じスクリプトと設定はRaspberry Piでも期待通りに機能します。
あなたは専門家です...あなたは知っている人がいますか?
PS:uname -a
出力:
Linux d3bi4n 3.16.0-4-amd64 #1 SMP Debian 3.16.7-2 (2014-11-06) x86_64 GNU/Linux
私の初期化システムはSystemdです。
答え1
出力から:
lrwxrwxrwx 1 root root 19 Nov 29 13:08 /etc/rc0.d/K01update.sh -> ../init.d/update.sh
K
inは、K01update.sh
Linuxが実行レベル0に入ると、プロセスがステップ01で終了することを意味します!私はDebianを持っていませんが、どちらもLinuxであるため、Redhat Linuxではこれらの優先chkconfig
順位レベルでサービスを開始または停止するかどうかを示すために、以下のコメント行を追加する必要があります。
# chkconfig: 2345 70 80
最初の数字は実行レベル(2345)で、2番目の数字は開始優先順位(70)を表し、最後の数字は停止優先順位(80)を表します!
update-rc.d
ところで、必ず必要なのか分からない!