linux下python后台运行方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yjreset/article/details/79330229

环境:linux、脚本python、shell脚本

方法一:脚本后加&

加了&以后可以使脚本在后台运行,这样的话你就可以继续工作了。但是有一个问题就是你关闭终端连接后,脚本会停止运行;

如:nohup python -u xx.py > log.out 2>&1 & 

1、1是标准输出(STDOUT)的文件描述符,2是标准错误(STDERR)的文件描述符1> log.out 简化为 >log.out,表示把标准输出重定向到log.out这个文件

2、2>&1 表示把标准错误重定向到标准输出,这里&1表示标准输出

方法二:使用nohup在后台执行命令

使用&符号在后台执行命令或脚本后,如果你退出登录,这个命令就会被自动终止掉。要避免这种情况,你可以使用nohup命令

  1. 可以写一个脚本,然后把脚本提交给服务器,让服务器在后台运行脚本里面的语句。假设我们定义了一个脚本start.sh,其内容如下:
#!/bin/bash
cd 想要运行文件的路径名
python -u ***.py

上述脚本中,#!/bin/bash是指此脚本使用/bin/bash来解释执行下面的语句,其中cd是表示将当前目录跳到所要运行文件所在目录,然后python -u ***.py则表示运行***python文件,当写完该脚本后,我们就可以使用下面的这条命令来执行该脚本从而让程序在后台运行:

./start.sh &

在这里./start.sh表示运行当前目录下的脚本start.sh,> result.log表示把原来输出到控制台的东西都输出到result.log文件中,&表示在后台运行

我们通过ps -e命令可以查看后台运行的进程都有哪些 
这里写图片描述 
上图我们可以看到,我们的脚本start.sh和Python程序都已经在后台成功运行,然后通过cat result.log | more就可以来查看原来输出到控制台的信息 
注:要想执行python文件中的某个函数,一定要记得除了要定义该函数外,还要在该文件中调用该函数


退出终端后程序仍继续运行,代码如下
  1. & nohup ./start.sh &  

 方法三:使用screen执行命令


通过nohup和&符号在后台执行命令后,即使你退出登录,这个命令也会一直执行。但是,你无法重新连接到这个会话,要想重新连接到这个会话,你可以使用screen命令。.

Linux的screen命令提供了分离和重新连接一个会话的功能。当你重新连接这个会话的时候,你的终端和你分离的时候一模一样。

 方法四:使用at将一个命令作为批处理执行


使用at命令,你可以让一个命令在指定的日期和时间运行,例如要在明天上午10点在后台执行备份脚本,执行下面的命令:

  1. $ at -f backup.sh 10 am tomorrow  

在批处理模式下执行某些任务需要启用一些选项。下面的文章会给出详细解释:

方法五:使用watch连续地执行一个命令

要想按一个固定的间隔不停地执行一个命令,可以使用watch命令,如下所示:

$ watch df -h  

另外查看进程确认脚本是否在继续运行的命令

ps -ef|grep 脚本名  

猜你喜欢

转载自blog.csdn.net/yjreset/article/details/79330229