脚本在后台运行时停止

脚本在后台运行时停止

我正在运行 Ubuntu 20.04 终端。

我目前正在尝试在后台运行一个 python 脚本,以便可以继续使用终端。但是,运行脚本并尝试执行某些操作后,脚本停止了。

例子:

jack2022@jack2022:~/Documents/Project4$ python3 run.py > /dev/null &
[1] 5812
jack2022@jack2022:~/Documents/Project4$ cd ..
jack2022@jack2022:~/Documents$ cd Project4/

[1]+  Stopped       python3 run.py > /dev/null
jack2022@jack2022:~/Documents/Project4$

这是怎么回事?我怎样才能让脚本在后台完全运行?如能得到任何帮助,我将不胜感激,谢谢。

- - - - - 更新 - - - - -

笔记:其他 Python 脚本在后台成功运行,所以我知道 run.py 本身就是问题所在。此外,我在 run.py 运行时执行某些操作并不是导致其停止的原因——如果我让它继续运行,它会在 10 秒内停止。我已经缩小了 run.py 停止的具体行数:

from pyloudness import get_loudness #the function i'm importing

...

loudness_stats = get_loudness(file) #run.py stops at this line

我看过了pyloudness pypi 页面并发现它将 ffmpeg 列为 pyloudness 的先决条件——我的 Ubuntu 机器上安装了最新版本的 ffmpeg。此外,当不在后台运行时,python 脚本运行得非常好。

答案1

nohup尝试以下方法或类似方法是否有帮助:

nohup python3 run.py > /dev/null &

man nohup

NAME
   nohup - run a command immune to hangups, with output to a non-tty

SYNOPSIS
   nohup COMMAND [ARG]...
   nohup OPTION

DESCRIPTION
   Run COMMAND, ignoring hangup signals.

   --help display this help and exit

   --version
          output version information and exit

   If  standard  input is a terminal, redirect it from an unreadable file.
   If standard output is a terminal, append output to 'nohup.out' if  pos‐
   sible,  '$HOME/nohup.out'  otherwise.  If standard error is a terminal,
   redirect it to standard output.  To save output  to  FILE,  use  'nohup
   COMMAND > FILE'.

   NOTE:  your  shell  may  have  its  own version of nohup, which usually
   supersedes the version described here.  Please refer  to  your  shell's
   documentation for details about the options it supports.

相关内容