Debianの起動とシャットダウンにスクリプトを追加する方法は?


12

タイトルはほとんどそれを要約しています。

サーバーアプリのstartup.shとshutdown.shをDebian OSの起動とシャットダウンのシーケンスに追加するにはどうすればよいですか?

回答:


15

Debianでは、サービスとアプリケーションのブートおよびシャットダウンスクリプトをに配置する必要があります/etc/init.d/

Debianは、/etc/init.d/skeleton特定のアプリケーションの好みに合わせて変更できるサンプルスクリプトを提供します。

配置されたら、次を呼び出します。

# update-rc.d YOURAPP defaults

Debianに/etc/rc?.d/シンボリックリンクを追加してもらうため。

メニューまたはグラフィカルインターフェイスが必要な場合は、sysv-rc-confまたはksysvパッケージをご覧ください。


4

exit 0と言う行の前に、/ etc/rc.localからスクリプトを呼び出すことができます

アプリのシャットダウンに関しては、/ etc/rc0.dにスクリプトを置くことをお勧めします。大文字のKで名前を付けてから、これらのスクリプトの実行順序を指定する2桁の数字と名前を付ける必要があります。パラメータ「stop」で呼び出されますが、単純な停止スクリプトではこれを無視できます。


とにかく/etc/rcX.dをいじる必要があるのに、なぜrc.localを使いこなすのでしょうか?
ワンブル

rc.localは、単純な起動用の適切な場所です-起動/停止パラメータなどを扱う必要はありません。しかし、プロセスをシャットダウンする機能はありません。rc0.dはちょっとしたハックです。
ブレント

3

起動時のために見ていこれを

シャットダウンするには、リンクを作成するか、スクリプトを/etc/rcX.dフォルダーの1つにコピーします(Xは実行するランレベルです)。0はDebianのシャットダウンランレベルです。


これは必要なシャットダウン情報です。@squillmanに感謝します。
ハーパービル

1

最も簡単なのは、既存のスクリプトを修正することです。私のシステムで動作し、サウンドに使用されます:)

  • 起動、変更/etc/init.d/rc.local、ファイルの最後にshを追加します:(ログイン「画面」の直前に実行します)
  • シャットダウン、変更/etc/init.d/halt、ファイルの先頭、最初のコメントの直後にshを追加します(このスクリプトファイルによって呼び出される実際のシャットダウンコマンドの前に実行されます)
  • 再起動、シャットダウンと同じですが、 /etc/init.d/reboot

1

Debian Jessie以来、古いinitプログラムはsystemd!に置き換えられました。

自分でチェックしてください。実行:ls -l /sbin/initそして、それが指しているものを確認します。最近では、より新しい初期化プログラムsystemd/sbin/init -> /lib/systemd/systemd)を指します。


そのため、選択された回答やその他の回答は今では時代遅れです!!!


*従来の方法でSystem-Vツールを使用してスクリプトをインストールすることはできますが、一般的に言って良い考えではありません。

man systemd.service 言う:*

特定の名前でサービスが要求され、ユニット構成ファイルが見つからない場合、systemdは同じ名前のSysV initスクリプトを検索し、そのスクリプトからサービスユニットを動的に作成します。これは、SysVとの互換性に役立ちます。この互換性は非常に包括的なものですが、100%ではありません。


新しいDebianシステム(Jessie、Stretch、Busterなど)の場合

思っているより簡単です。(-:

ブートアップまたはシャットダウンプログラムをインストールするための新しい推奨方法は次のとおりです。

ではsystemd、あなたは最初に作成するユニットファイルを。ユニットファイルはほとんどが宣言であり、コードではありません。

次に、systemctlコマンドを使用して、そのユニットを有効化または起動します。

systemdたとえば、重要なプログラムがクラッシュまたは強制終了された場合に自動的に再起動するなど、作業の大部分を自動で行います。また、プログラムはデフォルトで必要な場所とタイミングでシャットダウンされ、ユーザーの余分な作業は必要ありません。


systemdここから学び始めましょう:

Debianのから他の場所などなど


開始するマニュアルページ:

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 -初期化スクリプトリンクのようなSysVの実行レベルの構成
  • runlevel -以前および現在のSysVランレベルを出力
  • BUM- B OOT U P M anager -グラフィカルランレベルエディタ
  • systemadm-systemdシステムとサービスマネージャーのグラフィカルフロントエンド
    (ところで、著者は電子メールで今は壊れすぎていると言った)


例:

このユニットファイルは、起動時にNoIP.comデーモンを起動し、シャットダウン時にシャットダウンします。

このデーモンは、随時、私のDDNS(更新する私の現在のIPアドレスに送信D ynamic DNSD omain Nの雨の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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.