検索しにくい質問です!
次のシェルスクリプトがあります。
#!/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
.)