退出linux后python程序还运行吗,Linux 后台运行python .sh等程序,以及查看和关闭后台运行程序操做...

一、运行.sh文件html

直接用./sh 文件就能够运行,可是若是想后台运行,即便关闭当前的终端也能够运行的话,须要nohup命令和&命令。python

(1)&命令shell

功能:加在一个命令的最后,能够把这个命令放在后台执行

(2)nohup命令服务器

功能:不挂断的运行命令

二、查看当先后台运行的命令server

有两个命令能够用,jobs和ps,区别是jobs用于查看当前终端后台运行的任务,换了终端就看不到了。而ps命令用于查看瞬间进程的动态,能够看到别的终端运行的后台进程。htm

(1)jobs命令blog

功能:查看当前终端后台运行的任务进程

jobs -l选项可显示当前终端全部任务的PID,jobs的状态能够是running,stopped,Terminated。+ 号表示当前任务,- 号表示后一个任务。

get

(2)ps命令it

功能:查看当前的全部进程

ps -aux | grep "test.sh"    #a:显示全部程序  u:以用户为主的格式来显示   x:显示全部程序,不以终端机来区分

三、关闭当先后台运行的命令

kill命令:结束进程

(1)经过jobs命令查看jobnum,而后执行   kill %jobnum

(2)经过ps命令查看进程号PID,而后执行  kill %PID

若是是前台进程的话,直接执行 Ctrl+c 就能够终止了

四、先后台进程的切换与控制

(1)fg命令

功能:将后台中的命令调至前台继续运行

若是后台中有多个命令,能够先用jobs查看jobnun,而后用 fg %jobnum 将选中的命令调出。

(2)Ctrl + z 命令

功能:将一个正在前台执行的命令放到后台,而且处于暂停状态

(3)bg命令

功能:将一个在后台暂停的命令,变成在后台继续执行

若是后台中有多个命令,能够先用jobs查看jobnum,而后用 bg %jobnum 将选中的命令调出继续执行。

五、运行Python示例

[root@xxxxx nlp]# nohup python -u jbabs.py > out.log 2>&1 &

[1] 20087

[root@xxxxx nlp]# jobs

[1]+  Running                 nohup python -u jbabs.py > out.log 2>&1 &

运行一个Python脚本,一般设置以下

$ python /data/python/server.py >python.log &

说明:

一、 > 表示把标准输出(STDOUT)重定向到 那个文件,这里重定向到了python.log

二、 & 表示在后台执行脚本

这样能够到达目的,可是,咱们退出shell窗口的时候,必须用exit命令来退出,不然,退出以后,该进程也会随着shell的消失而消失(退出、关闭)

使用nohup(not hang up):

$ nohup python /data/python/server.py > python.log3 2>&1 &

说明:

一、1是标准输出(STDOUT)的文件描述符,2是标准错误(STDERR)的文件描述符

1> python.log 简化为 > python.log,表示把标准输出重定向到python.log这个文件

二、2>&1 表示把标准错误重定向到标准输出,这里&1表示标准输出 , 为何须要将标准错误重定向到标准输出的缘由,是由于标准错误没有缓冲区,而STDOUT有。 这就会致使 commond > python.log ,2> python.log 文件python.log被两次打开,而STDOUT和 STDERR将会竞争覆盖,这确定不是我门想要的

三、好了,咱们如今能够直接关闭shell窗口(我用的是SecureCRT,用的比较多的还有Xshell),而不用再输入exit这个命令来退出shell了

$ ps aux|grep python

tomener 1885 0.1 0.4 13120 4528 pts/0 S 15:48 0:00 python /data/python/server.py

tomener 1887 0.0 0.0 5980 752 pts/0 S+ 15:48 0:00 grep python

在当咱们直接关闭shell窗口,再链接上服务器,查看Python的进程,发现进程还在

可是,在python运行中却查看不到输出!

由于:

python的输出有缓冲,致使python.log3并不可以立刻看到输出。

使用-u参数,使得python不启用缓冲。

kill -STOP 1234    将该进程暂停。

若是要让它恢复到后台,用 kill -CONT 1234 (不少在前台运行的程序这样是不行的)

若是要恢复到前台,请在当时运行该进程的那个终端用jobs命令查询暂停的进程。

而后用 fg 〔job号〕把进程恢复到前台。

因此改正命令,就能够正常使用了

$ nohup python3 -u test.py > out.log 2>&1 &

在当前shell 里查看后台任务:jobs

把后台的任务拉到前台运行:

fg %任务号 默认任务1

使用 crl + z 是任务暂停并挂载到后台

使用 bg %任务号 使任务在后台运行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值