&と&&を組み合わせる方法は?

&と&&を組み合わせる方法は?

検索しにくい質問です!

次のシェルスクリプトがあります。

#!/bin/bash
./script.fcgi --socket /tmp/fcgi-socket &
sleep 2
chmod a+w /tmp/fcgi-socket

script.fcgiは長期実行プログラム(デーモン?)なので、バックグラウンドで実行するには&を追加する必要があります。疲れているという事実に加えて、睡眠が必要です。そうしないと、スクリプトがchmodを実行する前にソケットを設定する時間がないためです。

私は次のような行が欲しい:

./script.fcgi --socket /tmp/fcgi-socket & && chmod a+w /tmp/fcgi-socket 

しかし、これは不可能だと思います。そして、正しい書き込み権限でソケットを設定するスクリプトを取得する方法がわかりません。 (これはもう一つの質問になるでしょう。)しかし疑問に思います。 &と&&の組み合わせについて私が何かを見逃しているのでしょうか、それとも私が望むことを実際にすることはできませんか?

ベストアンサー1

あなたが望むものを理解し、プロセスがフォークする傾向がないと仮定すると、次のようになります。

/long/running/process with args &
LRP_PID=$!
sleep 2
if jobs %% #It's alive!
then 
    chmod a+w ...
fi

(またはkill -0 $LRP_PID代わりにjobs 1.)

おすすめ記事