1.前言
django的runserver是一个简易的wed服务器,功能主要侧重于开发调试。不过有的缺点就是,我们运行 python3 manage.py runserver 0.0.0.0:8001 后必须一致开着shell窗口,不然服务就退出了。有没方法解决这个问题呢?答案是,有的,nohup 命令。
nohup python3 /www/business_district/manage.py runserver 0.0.0.0:8001 > /home/stat.log 2&>1 &
基本命令:
- nohup放到命令开头表示不挂起,表示即使退出终端该进程也不会掉
- & 放在命令到结尾,表示后台运行
参数部分:
- 0 表示stdin标准输入
- 1 表示stdout标准输出
- 2 表示stderr标准错误
- 2>&1标识将错误输出重定向到标准输出,注意>& 不能分开
2.什么是nohup 和 &
nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
nohup 是 no hang up 的缩写,就是不挂断的意思。
nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中。
3.命令的常见形式
形式一:
nohup python3 /www/business_district/manage.py runserver 0.0.0.0:8001
表示程序一直执行,不被挂起,表示即使退出终端该进程也不会掉
形式二:
nohup python3 /www/business_district/manage.py runserver 0.0.0.0:8001 &
表示程序在后台运行,并且一直执行
形式三:
nohup python3 /www/business_district/manage.py runserver 0.0.0.0:8001 > /home/stat.log 2&>1 &
表示程序在后台运行,一直执行,并且把日志输入到/home/stat.log