4

私は、djangoサーバーを起動し、それをバックグラウンドにして、開発中にfirefoxを起動する「単純な」スクリプトを書いています。

私は</dev/null &トリックを見てきましたが、それはコマンドラインで機能します。しかし、スクリプトで使用すると、サーバーの起動時にハングします。ctrl-zおよびコマンドを使用したバックグラウンド処理は、スクリプトのみをバックグラウンド処理し、bgコマンドはバックグラウンド処理しません。

django に「入力を独占しない」フラグを渡す方法はありますか? または、スクリプトの最後に配置する以外の方法で、スクリプト内でバックグラウンドにできます&か? それとも、すべてを別のセッションで実行しないようにスクリプトに指示するだけですか?

これが私のスクリプトの全文です(ハードコアな醜いものでいっぱいです。これを機能させることができれば、きれいになるかもしれません):

SETTING_ENV=$1
if [ "$PWD" = "/home/$USERNAME/PROJECT/" ]; then
    pid=$(for pid in $(pidof -x "python"); do ps -p $pid -o pid,cmd --no-heading; done| grep [m]anage|head -1|cut -d" " -f2)
    if [ -z $pid ]; then
        python ./manage.py runserver --settings=project.settings.$SETTING_ENV < /dev/null &
    else
        echo "Server still running on : $pid"
    fi
    pids=$(pidof -x firefox)
    for pid in $pids; do
        echo $pid
        if [ -z $pid ]; then
             echo "starting firefox"
             firefox --new-window localhost:8000 &
        else ecjp "Firefox already running on pid: $pid"
        fi
    done
else
    echo "$PWD is not /home/$USERNAME/PROJECT";
fi
4

1 に答える 1