我写了一个bash脚本来启动一个Django开发服务器,但是,我希望能够在运行bash脚本的同时退出服务器。 我正在为Koding.com编写一个Web应用程序,该应用程序通过按下button运行bash脚本,在链接到用户个人VM的在线terminal中启动Django进程,并希望用户能够结束还有一个button。 我知道控制C会结束这个过程,但我一直无法find如何在bash脚本中做到这一点。 我怎么能这样做? 谢谢!
更新:我最终结合我select的答案这个问题和这个答案从另一个问题,我问(如何在django shell中运行unix命令)来解决我的问题: https : //stackoverflow.com/a/22777849/2181017
您可以杀死在8000 / TCP上侦听的进程:
fuser -k 8000/tcp
fuser
命令显示哪些进程正在使用指定的文件,套接字或文件系统, -k
选项也会杀死它们。
等等,只是为了澄清,暂时无法退出该django shell的东西,所以我可以运行一个unix命令?
当您启动开发服务器时,它将在前台运行,阻止提示。 您可以通过按CTRL+Z
来暂停在前台运行的任务,然后将任务发送到运行bg
命令的背景(我假设您正在运行bash shell或类似的程序)。 jobs
命令将列出暂停的任务或在后台运行的任务。 您可以使用fg
命令将任务带到前台。
请参阅bash手册页( man bash
)。
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}]'
你可以简单地使用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:~$