我正在运行一个 python 脚本,我在其中使用子进程来调用严重的 rclone 复制操作。由于 rclone 不是本机命令,我从我的 .bashrc 文件自动运行的 shell 脚本中定义它。我可以确认它有效,因为 subprocess.run("rclone") 正确拉出 rclone 菜单。
问题是当我运行我的脚本时,我没有收到任何错误或异常。相反,我的终端窗口显示以下内容:
我了解该问题与背景化的 Linux 子进程有关。但是,这个解决方案 似乎没有解决我的问题,我找不到任何关于如何防止这个过程暂停的信息。我可以确认它是独立于发行版的,因为我在 RedHat 和 Amazon EC2 上运行过。
最后一条关键信息:我将子进程称为 bash 而不是 sh 以通过我的 bashrc 文件加载别名。这是最小的可重现代码:
start_date = datetime.strptime(datetime.now(timezone.utc).strftime("%Y%m%d"), "%Y%m%d")
# For good measure, double check the day before for more files if the date just changed
time = datetime.utcnow().strftime("%H")
if int(time) <= 3:
start_date = start_date - timedelta(days = 1)
end_date = start_date + timedelta(days = 2)
else:
# End tomorrow
end_date = start_date + timedelta(days = 1)
# Force python to use the bash shell
def bash_command(cmd):
subprocess.Popen(['/bin/bash', '-i', '-c', cmd])
for dt in daterange(start_date, end_date):
cmd = 'rclone copy "/home/test.png" "AWS test:"'
bash_command(cmd)