Bashスクリプトから始まるファイルの「Global Storage」PID

Bashスクリプトから始まるファイルの「Global Storage」PID

スクリプトでラテックスファイルをコンパイルし、新しいPDFリーダーウィンドウを開くか、現在のウィンドウを再ロードしようとします(llppは私のリーダーです)。スクリプトをコンパイルした後

pdflatex $FILE_NAME
LLPP_ID=$(pgrep llpp)
if [ $LLPP_ID ]
then
kill -HUP $LLPP_ID
else
llpp $FILE_PATH"/"$FILE_NAME".pdf" &
fi

llppウィンドウが1つだけ開いている場合は、期待どおりに機能します。私はこの問題を修正してllpp開いているウィンドウの数に関係なく動作したいと思います。

理想的には、bashスクリプトでプロセスのPIDを変更しますが、PIDはカーネルによって割り当てられているため不可能であることがわかります。

私は環境変数を使用でき、サブシェルで引き続き使用できると思いましたが、ファイルをコンパイルせずにウィンドウを実行でき、PIDを環境変数に保存し、LLPPがまだ開いているときに端末を閉じて環境変数を失うことができました。しかし、もはやPIDをどこで見つけることができるのかわかりません。

どうすればいいですか?

ベストアンサー1

簡単に言えば、ロジックを調整できます。

  • このファイル名で開いているllppプロセスはありますか?
  • その場合はHUPしてください。
  • ない場合は新規作成します。

新しいコード:

pdflatex "$FILE_NAME"
if ! pkill -HUP -f "llpp ${FILE_PATH}/${FILE_NAME}.pdf"; then
  llpp "${FILE_PATH}/${FILE_NAME}.pdf" &
fi

おすすめ記事