/etc/init.d/スクリプトを直接実行しないでください。

/etc/init.d/スクリプトを直接実行しないでください。

私はDebian Jessieを使用していますが、init.dでいくつかのスクリプト(起動、停止、再起動)を使用しようとしています。一部の関数はlog_failure_msg log_daemon_msg log_end_msg標準出力から何かを提供する必要がありますが、そうではありません。以前のバージョンの Debian ではうまくいったことを覚えています。失敗したスクリプトを使用しようとしても、常に同じ出力を取得します。

kuban@lenovo-y510p:/etc/init.d$ sudo /etc/init.d/parstart 再起動

[ ok ] parstartを再起動します(systemctl経由):parstart.service。

ベストアンサー1

init.d[...]の一部のスクリプトを使用しようとしています。

/etc/init.d/スクリプトを直接実行しないでください。

システムオペレーティングシステムでは、これらのスクリプトがあなたのサービスに固有のスクリプトであることはもちろん、存在するという保証もありません。 Debian 7には、System 5スクリプトを置き換えたsystemdデバイスもありますrc。 Debian 8ではさらにそうです。使用する正しいコマンドは次のとおりです。

  • systemctlおよび対応するサブコマンドstatus、、、、およびstartstopenabledisable
  • service
  • update-rc.dそしてinvoke-rc.d、しかし、パッケージマネージャスクリプトの場合にのみ適用されます。

これがまさにあなたに起こったことです。スクリプトへの直接呼び出しは、広く使用されているDebianスクリプトライブラリのフックを介した呼び出し(この場合)に置き換えられます。

systemctl 再起動 parstart.service

前の出力でもこれを確認できます。それは(via systemctl): parstart.service私の意味です。確かに失敗からは遠い成功サービスを再起動するようにsystemdに指示します。

スクリプトのインタラクティブな鐘と口笛rc(カラーメッセージを含む)は機能しなくなりました。サービスがサブプロセスとして実行されていませんsystemctl。これは子プロセスとして実行され、systemdインタラクティブにコマンドを実行する端末への接続はありません。

それにもかかわらず、これらの/etc/szarp/parstart.cfgスキャフォールディングとログメッセージの生成はすべてsystemdには必要ありません。 systemdは、サービスを有効化および無効化し、自動的に再起動するためのサービス間メカニズムを提供します。サービスにそれを行わずにサービスが開始および停止される時期を記録します。私の計算によると、このスクリプトはサービスごとに1つずつ、rc16の一般単位に簡単に置き換えることができます。.serviceその様子は以下の通りです。

[単位]
説明=SZARP pserver-liteサーバー
以降 = network.target

[提供する]
タイプ=シンプル
ExecStart=/usr/local/bin/pserver-lite --no-daemon

[インストールする]
WantedBy =マルチユーザー。ターゲット

呼び出して/usr/local/etc/systemd/system/pserver-lite.service、実行systemctl daemon-reloadして...

  • ...利用可能なステータス情報がありますsystemctl status pserver-lite.service
  • ...を使用してブートローダで実行することができますsystemctl enable pserver-lite.service
  • ....を使用して、systemdの開始および停止ログエントリを表示できますjournalctl

残りの15人にはほぼ簡単でした。

追加読書

おすすめ記事