我正在编写一个’简单’脚本来启动
django服务器,然后启动firefox,然后启动它.
我已经看到了</dev/null &
技巧,并且可以在命令行上运行.但是当我在我的脚本中使用它时,它仍然挂在服务器上.使用ctrl-z和bg命令进行后台处理只会显示脚本而不是命令.
有没有办法让django传递’Do not hog input’标志?或者我可以通过某种方式在脚本中添加背景,而不是放置&在它结束?或者只是告诉脚本不要在单独的会话中运行它?
这是我的完整脚本(它充满了硬核丑陋,如果我可以让它工作,它可能会得到美化):
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 &
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。