我正在运行 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.