如何让python脚本后台持续运行
❶ CentOS下后台运行python脚本及关闭脚本的一些操作
自己写了一个python脚本,但是直接远程用putty连接后#python xxx.py执行,关闭putty脚本也随之关闭了,这里需要用到‘setsid’这个命令。
#setsid python xxx.py
如此即可将脚本加入到后台执行
若想查看所有后台运行的进程
#ps -aux
这里可以看到每个进程都有一个PID,如果想杀死这个进程,则使用
#kill-9[PID]-9表示强迫进程立即停止
nohup python -u test.py > out.log 2>&1 &
❷ 如何在服务器上部署Django项目并使其在后台一直运行
前几天老师让我把一个Django项目(爬虫网页)放到校园内网上,但是我想先用自己的服务器来尝试一下。之前刚好有在Digital Ocean上买过服务器用来运行ss脚本,平时服务器一直放着没啥用,所以就拿它来试验一下。
废话不多说,第一步通过WinSCP软件把Django文件传到服务器上。
在服务器中安装Django需要的环境和我所需要的Python第三方库。
以上所有步骤完成后,还需要进行一步操作,这是我经历的一个 坑 。 打开Django文件目录中的 settings.py ,把 ALLOWED_HOSTS=[] 改为 ALLOWED_HOSTS=["*"] 。
在服务器中打开到 manage.py 所在的目录,输入命令:
python3 manage.py runserver 0.0.0.0:8000
然后按下回车,在浏览器中输入: 该服务器IP地址:8000 ,大功告成!
Attention:
1. python3 不是特定的,是根据你的Django项目所需要的环境指定的。
2. 8000 是端口号,可以修改。
如果想要Django项目一直运行,关闭终端后还在运行,即需要运行如下命令, nohup command & , command 即位上文所说的 python3 manage.py runserver 0.0.0.0:8000 。
❸ 如何让py脚本持续执行
1.新建一个文本文件:
将文件名称更改为 HelloWorld.py, 注意要修改文件的后缀名字。
2.使用记事本打开这个文件,在里面敲入如下代码:
[python]viewplain
importsys,os
defPrintSomeThing():
print(os.path.dirname(os.sys.argv[0]))
raw_input()
if__name__=="__main__":
PrintSomeThing()
3.双击运行该文件即可。
❹ 如何让 Python 代码常驻在服务器进程中
一、nohup
nohup,即 no hangup,nohup 的用途就是让提交的命令忽略 hangup 信号,从而使我们的进程避免中途被中断。它可以让 python 脚本和服务器连接端的 session 分离,以达到退出后依旧执行:
$ chmod +x /your_path/yourscript.py # 先设置可执行权限$ nohup python /your_path/yourscript.py# 切记退出的 Terminal 的时候,不要 ctrl+c 退出,而是直接关闭,不然 Nohup 就被你关闭了。
如何关闭这个一直执行的进程呢:
# 找到对应的进程 PID
$ ps -ef | grep python
# 返回内容如:
user 2430 1 0 Jul03 ? 00:00:01 /usr/bin/python -tt /usr/sbin/yum-updatesd
# kill 掉该进程即可:
$ kill -9 2430
PS:nohup 在服务器重启之后就失效了,所以并不完美。
二、将命令写入 Linux 启动脚本
Linux 在启动的时候会执行 /etc/rc.local 里面的脚本,所以只要在这里添加执行命令就可以:
$ vim /etc/rc.local
# 如果是 Centos 添加以下内容:
/your_path/python3.4 /your_path/yourscript.py
# 以上内容需要添加在 exit 命令前,而且由于在执行 rc.local 脚本时,PATH 环境变量未全部初始化,因此命令需要使用绝对路径。
PS:这种方式的缺点是如果脚本挂了,那么不会自动重新启动。
三、使用 Supervisor 进程管理工具
详见这篇文章:使用 Supervisor 管理服务器后台进程,在服务器重启和脚本出错后,可以完美重启,推荐。
