我将首先编写一系列要运行的命令
echo <some_input> | <some_command> > temp.dat & pid=$!
sleep 5
kill -INT "$pid"
当我在bash shell中逐个运行时,上面的命令运行得非常好,temp.dat
文件中的内容正是我想要的,但是,当我创建一个包含相同命令集的bash脚本时,temp.dat
文件中什么也得不到。
现在,我将说明为什么我以这样的方式编写这些命令:
1.请求<some_command>输入,这就是我为什么<some_input>
1.我希望该命令的输出在一个单独的文件中,这就是为什么我重定向了输出。
1.我想在一段时间后通过发送SIGINT
信号来终止该命令。
我试着在shell脚本的第一行中写入#!/bin/bash -i
来运行交互式shell,但它不起作用。
将理解实现相同结果的任何替代方法。
- 更新:
<some_command>
也调用了一个python脚本,但我不认为这会导致它的行为有所不同。 - Update2:python脚本是导致这种不同行为的唯一原因。
2条答案
按热度按时间5lhxktic1#
一个可能的原因是Python进程可能没有在允许的5秒运行时间内刷新stdout。
......将导致内容被迅速写入,而不是等待进程退出/文件关闭/缓冲内容量达到足以证明刷新操作开销合理的水平。
bprjcwpo2#
这个对你有用吗?
奥布夫斯
应该像脚本一样工作
适合:D