【发布时间】:2012-10-26 05:43:07
【问题描述】:
我有一个连续运行多个 shell 命令的 tcl 脚本。
类似这样的:
abc.tcl
command 1
command 2
command 3
...
command n
此脚本将这些命令的输出打印到以下格式的文本文件中:
### ### ### ### ### ###
Command name
### ### ### ### ### ###
Command Output
### ### ### ### ### ##
我试图让脚本运行得更快,但让 shell 命令并行而不是串行运行。通过将它们推到后台(命令 a &)。但是我不知道如何像以前一样保留输出文本文件的格式。
当我将命令推送到后台时,我不得不将它们的输出附加到一个临时文件中,但这些文件只是将命令的输出放在一起转储中。很难区分不同的输出。
有没有办法我可以将在后台运行的每个命令的输出重定向到一个单独的临时文件(也许临时文件的名称可以有后台运行进程的进程 ID)。一旦所有命令都运行了,我可以将输出集中到正确的格式吗?关于如何完成此任务的任何想法/建议。
【问题讨论】:
-
作为替代方案,也许我可以在后台运行 shell 命令并将它们推送到各个临时文件,并在它们完成执行后得到通知,然后将它们放入主文件中。我担心在这里同时进入多个进程写入同一个文件,不希望输出文件损坏。而且真的不知道如何从 tcl 脚本中发出后台进程已完成运行的信号。
-
你可以用
fileevent来做;当阅读器管道不再有远端时,它们变得可读。 (作家阻止......)
标签: shell redirect background tcl