我编写了一个bash脚本来启动Django开发服务器,但是,我希望能够在运行bash脚本时退出服务器。我正在为Koding.com编写一个Web应用程序,通过按下按钮运行bash脚本,在连接到用户个人虚拟机的在线终端中启动Django进程,我希望用户能够结束此过程按一下按钮。我知道控件C会结束这个过程,但是我无法在bash脚本中找到如何做到这一点。我怎么能这样做?谢谢!
更新:我最终将我选择的答案与我提出的另一个问题(如何在django shell中运行unix命令)结合我的问题答案:https://stackoverflow.com/a/22777849/2181017
答案 0 :(得分:7)
您可以终止侦听8000 / TCP上的进程:
fuser -k 8000/tcp
fuser
命令显示哪些进程正在使用命名文件,套接字或文件系统,-k
选项也会使用它们。
等等,只是为了澄清,没有办法暂时退出那个django shell的东西,以便我可以运行unix命令?
启动开发服务器时,它将在前台运行,阻止提示。您可以通过点击CTRL+Z
暂停在前台运行的任务,然后将任务发送到运行bg
命令的后台(我假设您正在运行bash shell或类似)。 jobs
命令将列出在后台运行的暂停任务或任务。您可以使用fg
命令将任务置于前台。
请参阅bash手册页(man bash
)。
答案 1 :(得分:1)
GNU屏幕怎么样? http://www.gnu.org/software/screen/
screen
./manage.py runserver 0.0.0.0:8000
ctrl + a then d (this will detach from screen)
exit (from the shell)
当您需要停止时,请重新登录shell
screen -r
ctrl + c
exit (from screen)
exit (from the shell)
将其放在~/.screenrc
中以获得漂亮的屏幕状态行
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]'
答案 2 :(得分:0)
您只需使用CTRL+C
退出服务器即可
或者使用ubuntu系统,你可以像下面这样做。
prashant@prashant-OptiPlex-3010:~$ ps -eaf|grep runserver
prashant 3445 2805 4 11:20 pts/0 00:00:00 python manage.py runserver
prashant 3446 3445 5 11:20 pts/0 00:00:00 /usr/bin/python manage.py runserver
prashant 3449 3375 0 11:20 pts/1 00:00:00 grep --color=auto runserver
prashant@prashant-OptiPlex-3010:~$ kill 3446
prashant@prashant-OptiPlex-3010:~$