如何从BASH

时间:2015-08-13 09:43:42

标签: bash shell

我想用BASH执行一些命令。我的第一个问题是,当CMD Line工作正常时,为什么不执行以下命令。

# Variables
ArchiverLog="/tmp/JSM04-Archiver-GC.log"

Archiver=$(ps -ef | grep 'java' | grep -i 'archiver-component' |      awk '{print "jstat -gcutil "$2" 200 10 >> "}')
echo $Archiver
echo $ArchiverLog
Archiver="$Archiver $ArchiverLog"
echo Running jstats For Archiver ...............................

command $Archiver

我尝试过'>>'没有按预期传递,命令也没有运行..

command $Archiver
+ command jstat -gcutil 30467 200 10 '>>' /tmp/JSM04-Archiver-GC.log
+ jstat -gcutil 30467 200 10 '>>' /tmp/JSM04-Archiver-GC.log
invalid argument count

如何通过'>>'成功??

第二个问题,我想为3个不同的进程运行此命令,这是最好的方法,我想同时在parrellel中运行它们,它是3个单独的BASH脚本吗?

感谢。

1 个答案:

答案 0 :(得分:0)

这是一种更好的方法。

ArchiverLog="/tmp/JSM04-Archiver-GC.log"

something=$(ps -ef | grep 'java' | grep -i 'archiver-component' | awk '{print $2}')
jstat -gcutil "$something" 200 10 >> "$ArchiverLog"

我不确定$something是什么;你可以给变量一个更明智的名字。

对于问题的第二部分,您可以在命令末尾使用&在后​​台执行命令,然后在末尾使用wait等待所有后台作业到完整。