Redisサーバーを起動/停止/再起動できるように、UbuntuベースのサーバーにRedisサーバーをインストールしました。 redis_server.sh はすでに /etc/init.d にあります。
今すぐ起動時にRedisを起動したいと思います。 update_rc.dコマンドを使用して、起動時にサービスを追加/削除できることをWebサイトで学びました。
起動時に起動を追加するためにupdate-rc.dを試しましたが、動作しません。
root@ip-172-31-4-108:/etc/init.d# update-rc.d redis-server defaults
//System start/stop links for /etc/init.d/redis-server already exist.
また、起動時に起動したくないサービスがいくつかあったので、次のことを試しました。
root@ip-172-31-4-108:/etc/init.d# update-rc.d reids_6379 remove
Removing any system startup links for /etc/init.d/reids_6379 ...
ただし、次回再起動すると、起動時にサービスが実行され続けることがわかります。
答え1
サービスを削除するには、次のパラメーター-f
を使用する必要があります。
sudo update-rc.d -f <service> remove
起動時に起動を設定するには、以下を試してください。
sudo update-rc.d <service> enable
次のシンボリックリンクが作成されていることを確認してください。
/etc/rc.2d/S20<service>
またはそのようなもの。
答え2
Ubuntuバージョン18.04 TLSでは、次のように起動スクリプトに特定のコメントブロックがないと、update-rc.dが正しく機能しないことがわかりました。
### BEGIN INIT INFO
# Provides: myprogram
# Required-Start: $ local_fs $ remote_fs $ syslog $ network $ time
# Required-Stop: $ local_fs $ remote_fs $ syslog $ network
# Default-start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: myprogram some description
### END INIT INFO
答え3
私はこれらのどれもRaspberry Pi(Debian 10)では動作しないことを認めなければなりません。以前の /etc/init.d/my_script の場所を維持するには、次の手順を実行する必要があります。
# runlevel
N 5
# cd /etc/rc5.d
# ln -s ../init.d/my_script S40my_script
(probably should be done for other runlevels as well)
# ls /etc/rc5.d/ | grep my_script
S40my_script