![「サービス{FOO}が開始しました」と「/etc/init.d/{FOO}が起動しました」? [閉鎖]](https://linux33.com/image/7924/%E3%80%8C%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%7BFOO%7D%E3%81%8C%E9%96%8B%E5%A7%8B%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%8D%E3%81%A8%E3%80%8C%2Fetc%2Finit.d%2F%7BFOO%7D%E3%81%8C%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%8D%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
Debian 8 デスクトップで CrashPlan を使用しています。 CrashPlanサービスを最初に停止し、終了する前に開始する必要があるスクリプトがあります。使っています
/etc/init.d/crashplan start
再起動しますが、終了すると新しいCrashPlanプロセスが終了します。私のものスクリプト。私は次に切り替えます
service crashplan start
すべて大丈夫!
奇妙なことに、Ubuntu 16.04の他のシステムでは、 さて、今Ubuntuは私に同じ問題を抱えています。init.d
スクリプト/コマンドが期待どおりに機能します。私のスクリプトが終了すると、CrashPlanは引き続き実行されます。
私のDebianスクリプトは今動作します。しかし、私はこのコマンドがまもなく使用されなくなるという印象を受けています。したがって、現在のバージョンのDebianとUbuntuの違いについてservice
は混乱しています。init.d
service
答え1
systemdを使用するすべてのシステムでinit.dスクリプトを直接実行することは、サービスを開始する最善の方法ではありません。これは通常、systemd自体が実行するすべての設定とブックをバイパスするためです。さらに、初期化スクリプトがない可能性があり、サービスが単体ファイルにのみ記述される可能性があります。
「古い」sysvinitでは、本を書く必要はあまりありません。サービスの起動は、スクリプトの実行とほぼ同じです。これは、initスクリプトを直接使用するのが良いアイデアではなく、マニュアルページの説明からservice
その理由がわかります。
service
可能な限り予測可能な環境で System V init スクリプトまたは開始ジョブを実行し、ほとんどの環境変数を削除し、現在の作業ディレクトリを / に設定します。
ランダムシェルは予測可能な環境ではなく、ファイルまたはプロセスの制限を有効にできます。
サポートの中断については使用する必要があるかもしれませんが、systemctl
Debianではservice
実際に正しいことを試してsystemctl
実行します。 (ifがservice
もう使用されていないと仮定すると、initスクリプトを直接実行する方がはるかに優れています。)
(私はinitスクリプトを直接実行している場合、サービスが何を終了するのかを正確に知らせるほどシステムの専門家ではありません。また、実行中のスクリプトを実行するターゲットによって異なります。