バックグラウンドでルートジョブ/プログラムを実行する正しい方法

バックグラウンドでルートジョブ/プログラムを実行する正しい方法

私はバックグラウンドでrootとして実行する必要があるプログラムを書いています。

(すべてのユーザーに)

これにはこのファイルを使用しました/etc/rc.local。これはうまくいくようです。

私が持っている問題は、通常のユーザーがコンピュータをシャットダウンしようとすると、rootアカウントにアクティブな「タスク」があるため、一般ユーザーにrootパスワードを要求することです。

これにより、私はこれを間違った方法で実行している可能性があると思います。もっと良い方法がありますか?私はうまくいくかもしれないいくつかの修正を考えましたが、それを正しく行う方法を知りたいです!

答え1

いいえ、それに依存しません。 rc.localで単純な操作を呼び出す場合は、この動作は発生しないでください。

バックグラウンドでrootとしてジョブを実行したい場合は、これをデーモンと呼びます。これを行う方法はたくさんあります。最も可能性の高い方法は3つあります。

  1. 悪魔が定期的に何かをしているなら、あなたはそれを次のように発展させることができます。予約されたことスクリプト。それほど効果的ではありませんが、明らかです。
  2. そのためにサービスを作成することもできます。これは次のことを意味します。 1. 起動/停止スクリプトを開発する必要があります。/etc/inittab2. systemd を使用してサービスを構成する必要があります (これはおそらく基本システム・サービスの開始/再始動デーモンになります)。ここで問題が発生した場合は、次の質問をお勧めします。
  3. 最も強力なソリューションは、最初の2つのソリューションを組み合わせることによって達成されます。代替オプションも含まれていますが。システムサービスを実装し、それをシステムサービスとして実行し、正しく機能するかどうかを簡単にテストするテストスクリプトを開発します。そうでない場合は、終了して再起動してください。

実際の質問について:いいえ、ユーザーにデーモンを実行する以外の操作を求めるメッセージがほとんど確実に表示されます。設定の他の場所にある必要があります。一般的なシステムには約数百のプロセスがあり、実際には完全に停止できないいくつかのタスクがあります(何らかの問題が原因で、不要または不可能なため)。システムに問題は発生せず、単に再起動が速くなります。どのディストリビューションを使用しているのか、バックグラウンドで何を実行しているのかなどについてもう少し詳しく説明してください。

関連情報