我想从python脚本暂停bash脚本,步骤如下:
我从python脚本reader.py。
当writer.sh输出第三行时,我希望使用reader.py
中的某个命令暂停执行此脚本。
我想在reader.py
中使用一些命令恢复执行writer.sh。
以下是这两个脚本,问题是writer.sh
在reader.py
执行sleep命令时不会暂停。所以我的问题是,当输出字符串“third”时,如何暂停writer.sh
?确切地说(这是我工作中的实际问题)我希望writer.sh
停止,因为reader.py
已停止阅读writer.sh
的输出。
reader.py
:
import subprocess
from time import sleep
print 'One line at a time:'
proc = subprocess.Popen('./writer.sh',
shell=False,
stdout=subprocess.PIPE,
)
try:
for i in range(4):
output = proc.stdout.readline()
print output.rstrip()
if i == 2:
print "sleeping"
sleep(200000000000000)
except KeyboardInterrupt:
remainder = proc.communicate()[0]
print "remainder:"
print remainder
writer.sh
:
#!/bin/sh
echo first;
echo second;
echo third;
echo fourth;
echo fith;
touch end_file;
相关问题是,如果script1输出文本行,例如,将在Linux暂停脚本1上使用管道。 script1 | script2
,
和script2在阅读第三行输入后暂停?
答案 0 :(得分:2)
要暂停 bash脚本,您可以将SIGSTOP
信号发送到PID
。
如果您希望 resume ,您可以发送SIGCONT
信号。
您可以使用pid = proc.pid
获取子流程的pid。
请参阅man 7 signal