3

我想从 python 脚本暂停 bash 脚本,步骤如下所示:

  1. 我从 python script reader.py 开始 script writer.sh。

  2. 当 writer.sh 输出第三行时,我希望使用reader.py.

  3. 我想使用一些命令恢复 writer.sh 的执行reader.py

这是这两个脚本,问题是writer.sh在执行 sleep 命令时不会暂停reader.pywriter.sh所以我的问题是,当它输出字符串“third”时如何暂停?确切地说(这是我工作中的实际问题)我想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 输出文本行,例如script1 | script2,并且 script2 在读取第三行输入后暂停,是否会在 Linux 上使用管道暂停 script1?

4

1 回答 1

1

暂停bash 脚本,您可以将SIGSTOP信号发送到PID.

如果你想让它恢复,你可以发送SIGCONT信号。

您可以使用pid = proc.pid.

man 7 signal

于 2012-10-18T13:56:24.010 回答