「&」関連のバックグラウンドプロセスとバッファリングの問題

「&」関連のバックグラウンドプロセスとバッファリングの問題

このスクリプトを ~/.bashrc ファイルに書き込んでファイルを受け取りましたが、動作しません。その目的は、Chromeブラウザのjupyterノートブックが提供するリンクを新しいタブで開くことです。

chrome(){
        echo $1 # <--- shows that jupfire is sending an empty string
        # I'm using Windows Subsystem for Linux
        "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe" $1
}

jupfire(){
        jupyter notebook 2>juptemp &
        sleep 3
        chrome "$(tail -1 juptemp | grep http)"
        rm juptemp
}

いくつかの失敗した方法を検索して試した後、これがI / Oバッファリングに関連しているという結論に達しました。 "jupfire"関数の最初の行の後の "&"は、stderrがjuptempにフラッシュされないため、空の文字列をchrome関数に送信する可能性があります。

「stdbuf」を使うべきだと思いますが、どうすればいいかわかりません。マニュアルページを確認して、次のような結果を得ました。stdbuf -e0 jupyter notebook 2>juptemp &jupfire関数の最初の行ですが、それでも機能しません。 (明確に言えば、「機能しない」とは、空のアドレスバーがあるChromeで新しいタブを開くことを意味します。)バッファリングに問題がある場合は、フラッシュを使用する正しい方法を教えてください。ありがとうございます。

編集:以下は「jupyter Notebook」コマンドの出力例です。

...
To access the notebook, open this file in a browser:
    file:///home/mojtabaa/.local/share/jupyter/runtime/nbserver-28353-open.html
Or copy and paste one of these URLs:
    http://localhost:8888/?token=2ead351a97edd97dc5b5fd0aa80b6872af9f9e5c6b9ef10b

ベストアンサー1

おすすめ記事