gpt4 book ai didi

python - 允许命令在 bash 脚本中后台运行 django runserver 命令后运行?

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:56 25 4
gpt4 key购买 nike

我正在编写一个“简单的”脚本来启动 django 服务器,将其置于后台,然后在我开发时启动 firefox。

我看过 </dev/null & 技巧,在命令行上有效。但是当我在我的脚本中使用它时,它仍然卡在服务器启动上。使用 ctrl-zbg 作为背景命令仅背景脚本而不是命令。

有没有办法可以向 django 传递一个“不要占用输入”标志?或者我可以以某种方式将它放在脚本中的背景中,而不是将 & 放在背景中。最后呢?或者只是告诉脚本不要在单独的 session 中运行它?

这是我的完整脚本(它充满了硬核丑陋,如果我能让它工作的话它可能会被美化):

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

最佳答案

您可以像这样将所有命令放在括号中:

(python ./manage.py runserver --settings=project.settings.$SETTING_ENV < /dev/null &)

当您在括号之间运行命令时,它将创建一个新的子 shell,因此当您退出 shell 时,该命令将继续运行。

或者你也可以使用 disown 或 nohup :

python ./manage.py runserver --settings=project.settings.$SETTING_ENV < /dev/null & 
disown

-

nohup python ./manage.py runserver --settings=project.settings.$SETTING_ENV < /dev/null &

关于python - 允许命令在 bash 脚本中后台运行 django runserver 命令后运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30237896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com