使用shell进行击打 - 长时间延迟

时间:2013-02-04 21:00:59

标签: python linux shell

我有一个基准线程运行,运行需要几个小时。 启动基准线程的脚本是使用python完成的。 它打印出一些随机的“foo”,我想grep它以供进一步使用。

所以,我编写了一个执行此操作的shell脚本。

#!/bin/bash

id = `taskset -c 0 python <path>/run-apps.py <thread> | grep "pid" | awk '{print $2}'`
echo $id

因为,线程需要很长时间。 也许shell脚本无法跳转到下一行,直到执行结束,我无法在启动它时立即打印它。

你看到有什么问题吗?或者我如何纠正这个问题?

1 个答案:

答案 0 :(得分:1)

本声明

echo $id

在前一个语句

之前无法运行
id=`taskset -c 0 python <path>/run-apps.py <thread> | grep "pid" | awk '{print $2}'`

完成。如果您不需要$id,请删除它,然后运行

taskset -c 0 python <path>/run-apps.py <thread> | grep "pid" | awk '{print $2}'

查看生成的输出(但您可能需要禁用缓冲,如Martijn所指出的)。如果确实需要$id,则可以使用tee命令 存储输出的副本并同时将其打印到标准错误:

id=$(taskset -c 0 python <path>/run-apps.py <thread> |\
     grep "pid" | awk '{print $2}' | tee /dev/stderr) # Or some other file descriptor that goes to your terminal

第三种选择是使用临时文件。

taskset -c 0 python <path>/run-apps.py <thread> | grep "pid" | awk '{print $2}' > tmpfile &
tail --pid $! -f tmpfile # Watch tmpfile until the backgrounded job completes
do-other-job --reading-from tmpfile