あなたは背景プログラムラッパーシェルスクリプトを作成し、$!
を使用してPIDをキャプチャして、daemon
関数にラッパーシェルスクリプトを渡す必要があります。
はは/etc/rc.d/init.d/functionsからソース関数daemon
を使用せずにプログラムをデーモン化するために、よりエレガントな方法があるかもしれませんが、この質問/回答はこのdaemon
機能の使用方法についての具体的です。 [2]
をここに理由をステップにより、低レベルのステップです:
私はあなたは、/ etcからソース関数daemon
を使用してデーモン化したい任意のプログラムのための代役として、[1] sleep
を使用しなければなりません/rc.d/init.d/functions。
sleep
を背景とし、$!
でPIDを取得するラッパーシェルスクリプトを作成する必要があります。だから、例えば、あなたのsleep_wrapper.sh
は次のようになります。
#!/bin/bash
sleep 100 &
PID=$!
echo $PID
次にあなたが経由daemon
に、このラッパーを渡す:あなたは単純あなたがのPIDを取得することはできませんPID=$!
によってdaemon sleep 100
が続い呼び出そう
daemon sleep_wrapper.sh
プロセスsleep
代わり:
- あなたは
runuser
のためのPIDを取得します
bash
プロセス
- が最終的に
bash
がsleep
を生成しますスポーン
runuser
[1] ほとんどのバイナリのアプリケーションはバックグラウンド自身とそのsleep
は、この例のために良い代役ではありません。明らかにこれをあなたの状況に適応させるには、sleep
をあなたが使いたいプログラムに置き換えます。 [2] この特定のデーモン機能を使用しないでデーモンを行うより良い方法があるはずです。
これは明らかではありませんか?本当にQ&Aが必要ですか? – 123
@ 123あなたのプロフィールを覗いてみると、あなたはbashをよく経験しているようです。しかし、私にとってこれは間違いではありません。私が初めてこの機能を使用したとき、私は自分自身を間違って使いました。だから私は他の人に同じ問題を抱かせたくありません。(さらに、ほとんど存在しないドキュメントがあり、googleやstackoverflowで見つけた情報は通常、別の 'デーモン'について語っているので、純粋なgooglerはその情報をRedhatの/etc/rc.d/initのこの特定の 'デーモン' .d/functions。) –
ええと、十分に:) – 123