我想在晚上批量处理一批视频,因为晚上服务器基本处于空闲状态,这样最大化利用服务器。
执行脚本:
python3 rm.py &
会直接停止
[1]+ Stopped python3 rm.py
如果不在后台执行是没有任何问题的,但这样我没法退出,得等着任务直到完成。显然这不可能,视频的量足够运行一晚上了。
python3 rm.py
解决:
py脚本没法后台执行,是因为ffmpeg没法在后台执行。当执行ffmpeg命令时,它会打开三个通道:stdin、stdout、stderr。通道有内存缓冲区(4KB),当缓冲区满了,写操作暂停,直到数据被读取。由于一直没有读取stdout和stderr,所有ffmpeg会挂起。
后台执行并不需要输出信息,所以:
ffmpeg .... > /dev/null 2>&1 < /dev/null
将py脚本内命令改成这个形式就没问题了
再执行脚本
python3 rm.py &
当然,在子进程中运行,并关闭stdin、stdout、stderr也是可行的。