0

私が書いた簡単な起動スクリプトには、次のものがあります。

PID=`su user_name -c "daemon_name > /dev/null 2>&1 & echo \$!"`  
echo $PID  

スクリプトは として実行されrootます。そして、エコーは実際には何もエコーしません:)

シェルにまったく同じコマンドを入力すると、機能します。

# su user_name -c "daemon_name > /dev/null 2>&1 & echo \$!"  
11831  
#  

何か案は?ありがとう。

編集:別のユーザーとしてアプリケーションを実行しようとする前は、正常に機能していました。
以前はこのコードを使用していました:

PID=`daemon_name > /dev/null 2>&1 & echo $!`  
echo $PID  

そしてそれはうまくいったroot

4

2 に答える 2

0

$ の代わりに $$ を試してみてください。(最後ではなく現在の pid)

于 2012-11-30T15:25:14.147 に答える
0

デーモンは複数回フォークするように設計されているため、PID が $! から返される可能性があります。後で作業したいpidにはなりません。あなたはおそらく次のようなことをしなければならないでしょう:

ps -eo pid,command,lstart --sort lstart | grep 'daemon_name' | tail -1
于 2012-11-30T15:47:46.873 に答える