Linux用nohup后台运行python程序及停止

Posted 湿透丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux用nohup后台运行python程序及停止相关的知识,希望对你有一定的参考价值。

在Ubuntu上用python+flask写了一个后端代码,每次运行要CMD先远程连上服务器,然后python xxx.py启动。这样操作会让cmd窗口被占用,没办法进行其他操作(ls、cd这种),如果把窗口关了,程序就停止了。

看了网上的例子,有一个解决办法是在命令后面加上“&”符号。

python xxx.py &

这样在程序启动以后可以正常的在终端里做其他事情。

但是程序的print会直接在终端里打印出来。

并且这个方法在关闭终端窗口以后,运行的程序会停止,没有真正达到后台运行的效果。

nohup的启动方法

于是又找到了用nohup(no hang up)的方法。

nohup python xxx.py &

有时可能会提示没有权限,可以加上sudo

sudo nohup python xxx.py &

nohup的方法不会在终端里输出任何print。

nohup的停止方法

可以通过kill的方法去停止。

kill -9 进程id

进程id在nohup启动的时候会打印出来。
当然也可以通过ps -ef|grep python的方法查询进程id

有了进程id以后,直接kill就行了。

kill -9 5021

PYTHON的程序在LINUX后台运行

 

1.nohup 命令

nohup   nohup 命令   用途:LINUX命令用法,不挂断地运行命令。   语法:nohup Command [ Arg ... ] [ & ]   描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。   如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。   退出状态:该命令返回下列出口值:   126 可以查找但不能调用 Command 参数指定的命令。   127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。   否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。   nohup命令及其输出文件   nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。   该命令的一般形式为:nohup command &   使用nohup命令提交作业   如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:   nohup command > myout.file 2>&1 &   在上面的例子中,输出被重定向到myout.file文件中。   使用 jobs 查看任务。   使用 fg %n 关闭。   另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样我就可以利用这些命令在后台上传和下载文件了。

2.程序在后台运行 & 开机启动

nohup python yourscript.py &可以让你的程序在后台运行,控制台输出导向nohup.out文件 要想开机启动,写到开机启动文本里面/etc/rc.d/rc.local

以上是关于Linux用nohup后台运行python程序及停止的主要内容,如果未能解决你的问题,请参考以下文章

nohup 详解 Python不挂断运行后台程序

linux必会命令 - 后台运行程序 - nohup&

后台不挂断运行命令--linux中nohup的使用

nohup 后台不挂断运行程序

linux 如何保证使程序后台运行(nohup &)

python nohup linux 后台运行输出