タイトルはそれをかなり要約します。
サーバーアプリのstartup.shおよびshutdown.shをDebian OSの起動およびシャットダウンシーケンスに追加するにはどうすればよいですか?
Debianでは、サービスとアプリケーションのブートおよびシャットダウンスクリプトを/etc/init.d/
に配置する必要があります。
Debianはサンプルスクリプト/etc/init.d/skeleton
を提供しており、特定のアプリケーションに合わせて変更できます。
準備ができたら、次を呼び出します。
# update-rc.d YOURAPP defaults
Debianに/etc/rc?.d/
シンボリックリンクを追加してもらいます。
メニューまたはグラフィカルインターフェイスが必要な場合は、sysv-rc-conf
またはksysv
パッケージを参照してください。
スクリプトは/ etc/rc.localからexit 0という行の前に呼び出すことができます
アプリのシャットダウンについては、スクリプトを/ etc/rc0.dに置くことをお勧めします。大文字の[〜#〜] k [〜#〜]で名前を付け、次にこれらのスクリプトが実行される順序を指定する2桁の数字と名前を付ける必要があります。これはパラメーター "stop"で呼び出されますが、単純な停止スクリプトではこれを無視できます。
スタートアップについては this を見てください。
シャットダウンの場合、リンクを作成するか、スクリプトを/etc/rcX.dフォルダーの1つにコピーします。Xは、実行するランレベルです。 0はDebianのシャットダウンランレベルです。
Debian Jessie以降、古いinit
プログラムはsystemd
!に置き換えられました。
自分で確認してください。実行:ls -l /sbin/init
とそれが何を指しているかを確認します。最近ではsystemd
(/sbin/init -> /lib/systemd/systemd
)、より新しく、より良い初期化プログラム。
選択された回答と他の回答が古くなっています!!!
* System-Vツールを使用して古い方法でスクリプトをインストールすることはできますが、一般的に言って良い方法ではありません。
man systemd.service
さんのコメント:*
サービスが特定の名前で要求されたがユニット構成ファイルが見つからない場合、systemdは同じ名前でSysV initスクリプトを探し、そのスクリプトからサービスユニットを動的に作成します。これは、SysVとの互換性のために役立ちます。この互換性は非常に包括的ですが、100%ではないことに注意してください。
思ったより簡単です。 (-:
ブートアッププログラムまたはシャットダウンプログラムをインストールするための新しい推奨方法を以下に示します。
systemd
では、最初にユニットファイルを作成します。ユニットファイルはほとんどが宣言ではなく、コードです。
次に、systemctl
コマンドを使用して、そのユニットをenableまたはstartにします。
systemd
は多くの作業を自動的に行うので、たとえば、重要なプログラムがクラッシュしたり強制終了した場合に自動的に再起動させることが簡単になります。また、デフォルトで必要な場所とタイミングでプログラムをシャットダウンします。
ここでsystemd
の学習を開始:
Debianから および 他の場所 および etc および etc 。
最初に使用するマニュアルページ:
man systemd.unit
-一般的なユニットファイルについてman systemd.service
-サービスユニットファイルについて。デーモン、およびシングルランプログラム。
man systemctl
-コマンドラインユーザーインターフェイスman journalctl
-systemdが行ったことのログを表示
man systemd
-initプログラム自体について
他にもさまざまなタイプのユニットファイルがあります。
man systemd.target
-グループおよび共通の同期ターゲット用。
上記の基本を消化したら、man -k systemd
他の関連するmanページを検索します。
何をするにしても、Debianでこれらを使用しないでください:
update-rc.d
--System-Vスタイルのinitスクリプトリンクのインストールと削除sysv-rc-conf
-initスクリプトリンクのようなSysVの実行レベルの構成runlevel
-以前および現在のSysVランレベルを出力しますBUM
-[〜#〜] b [〜#〜] oot [〜#〜] u [〜#〜] p [〜#〜] m [〜#〜] anager-グラフィカルなランレベルエディターsystemadm
-systemdシステムおよびサービスマネージャーのグラフィカルフロントエンドこのユニットファイルは、起動時にNoIP.comデーモンを起動し、シャットダウンすると停止します。
このデーモンは、時々、現在のIPアドレスを送信してDDNSを更新します([〜#〜] d [〜#〜]動的[〜 #〜] dns [〜#〜]([〜#〜] d [〜#〜] omain [〜#〜] n [〜#〜] ame [〜#〜] s [〜#〜] erver))プロバイダーのデータベース。これにより、私のドメイン名が移動先のコンピューターを指すようにします。
このユニットファイルは、システムの次の設定ファイルにあります:/etc/systemd/system/noip2.service
ユニットファイルの内容は次のとおりです。
# Comments can only go at the beginning of the line!
[Unit]
Description=Start the NoIP IP update daemon. This runs every 30 minutes and reports our current IP to NoIP.com to update Love2d.ddns.net.
Documentation=https://no-ip.com/
Documentation=file:///nobak/Installers/NoIP/noip-2.1.9-1/README.FIRST
[Service]
# 'forking' because process returns after starting daemon (traditional unix daemon).
Type=forking
# This program runs and returns, leaving the running daemon
ExecStart=/usr/local/bin/noip2
# Be in no hurry to start this. Max Nice is +19.
Nice=15
# If it dies for any reason, then restart it
Restart=always
[Install]
# Installs a hook to use this unit file when the system boots or shuts down
WantedBy=multi-user.target
手動で実行ユニットファイル(例:テスト用):
$ Sudo systemctl start noip2
。$ Sudo systemctl restart noip2
。$ Sudo systemctl stop noip2
。システムの構成起動またはシャットダウン時にユニットファイルを自動的に実行するには:
$ Sudo systemctl enable noip2
。$ Sudo systemctl disable noip2
。ログを表示
$ Sudo journalctl -u noip2
最も簡単なのは、既存のスクリプトを変更し、私のシステムで動作し、サウンドに使用することです:)
/etc/init.d/rc.local
、shをファイルの最後の前に追加します:(ログイン「画面」の直前に実行されます)/etc/init.d/halt
、最初のコメントの直後のファイルの先頭にshを追加します(このスクリプトファイルによって呼び出される実際のシャットダウンコマンドの前に実行されます)/etc/init.d/reboot