我有一些非常简单的 python 代码,用于设置作业队列,并通过管道传输到 linuxbatch
命令:
import subprocess
for j in range(1,17):
process = subprocess.Popen('/bin/sh', '-c', f'python test.py {j} | batch')
process.communicate()
print(process.returncode)
当我运行这个时,print(process.returncode)
打印出这一行0
,这意味着成功。
在子进程中调用的脚本test.py
只会写入一个快速 txt 文件,因此不会消耗任何资源:
import sys
with open(f'{sys.argv[1]}.txt', 'w') as f:
f.write('hello')
此代码创建了 16 个作业,并且似乎一次运行了所有作业(batch
对于我目前所做的事情来说,这有点毫无意义,因为服务器从未达到需要排队作业的负载,但我现在才开始学习)。运行它后,当我atq
在终端中输入时,我可以看到没有任何作业正在运行(否=
或b
),但它们也没有清除队列,尽管它们似乎成功了,因为它们写入了文本文件并给了我一个返回码0
。他们不清除队列的原因可能是什么?如果这是一个隐藏的错误,我该如何获取该输出?
57 Wed Aug 16 18:37:00 2023
48 Wed Aug 16 18:37:00 2023
58 Wed Aug 16 18:37:00 2023
49 Wed Aug 16 18:37:00 2023
56 Wed Aug 16 18:37:00 2023
60 Wed Aug 16 18:37:00 2023
51 Wed Aug 16 18:37:00 2023
59 Wed Aug 16 18:37:00 2023
50 Wed Aug 16 18:37:00 2023
55 Wed Aug 16 18:37:00 2023
54 Wed Aug 16 18:37:00 2023
47 Wed Aug 16 18:37:00 2023
52 Wed Aug 16 18:37:00 2023
61 Wed Aug 16 18:37:00 2023
53 Wed Aug 16 18:37:00 2023
62 Wed Aug 16 18:37:00 2023
...