ルート以外のユーザーが「サービス」を実行できるようにするメカニズムはありますか? [コピー]

ルート以外のユーザーが「サービス」を実行できるようにするメカニズムはありますか? [コピー]

私(root以外の一般ユーザー)が継続的に実行されるバックグラウンドプロセスを制御する方法はありますか?

私がしなければならないことは、プロセスを開始、停止、再起動することだけです。 PIDを介して監視し、SIGHUPまたはSIGINTを送信して終了します。複雑なbashスクリプトを使用でき、システム全体のスクリプトである必要はありません。ちょうど私のために。

SSHからログアウトするときに停止しないようにすることも本当に必要です。

RHEL 6.4でこれを行う方法はありますか?

答え1

スクリーンまたはtmux

もちろん、screenやtmuxなどのターミナルマルチプレクサを使用してプロセスを開始してから実行することもできます。プロセスはscreenまたはtmuxセッションに残り、必要に応じて(screenまたはtmux)に接続/切断できます。

背景

目的のプロセスを実行してバックグラウンドに置き、コマンドを使用して現在の端末から切断することができますdisown

$ disown -a

また、プロセスをバックグラウンドに置かずにプロセスを開始したい場合でも、disownこのコマンドを使用できますnohup

$ nohup myexec &

シェルがシャットダウンした後もmyexec実行されます。

はい

偽のプロセスを開始します。

$ sleep 12345 &
[1] 24339
$

私たちが見ることができることを確認してください:

$ pgrep -f "sleep 12345"
24339

しかし、それでも端末に接続されています。

$ jobs
[1]+  Running                 sleep 12345 &

disownそれでは始めましょう。

$ disown -a
$ jobs
$

まだ実行中であることを確認してください。

$ pgrep -f "sleep 12345"
24339

それでは、ログアウトしてもう一度ログインしてみましょう。まだそこにいることを確認してください。

$ pgrep -f "sleep 12345"
24339

標準的な方法では、いつでもこのプロセスを終了できます。

$ pkill -HUP -f "sleep 12345"
$ pgrep -f "sleep 12345"
$ 

HUP上記のコードは、「スリープ12345」パターンと一致するプロセス名でシグナルを送信します。詳しく見てみると今はなくなりました。

関連情報