尝试在BASH脚本中运行我认为是一个简单的命令,但它似乎正在抓住我的东西。我想收集许多Java进程的CROSSTABS
信息并附加到单独的文件中。所以我想我会尝试一个,然后扩展,......它不应该太难。
这是脚本:
vstat
当脚本运行时,我收到以下错误:
#!/bin/bash
echo JSTATS from Components
# Variables
WorkflowLog=">> /tmp/jsm04-workflow-gc.log"
Workflow=$(ps -ef | grep 'java' | grep -i 'workflowcomponent' | awk '{print "jstat -gcutil "$2" 200 10"}')
echo $Workflow
echo $WorkflowLog
echo Running jstats...............................
command $Workflow $WorkflowLog
我是不是错误地传递了命令,还是应该以稍微不同的方式运行命令行?请指教,谢谢。
答案 0 :(得分:0)
如果是 - 变量存在问题。
WorkflowLog=$(>> /tmp/jsm04-workflow-gc.log)
答案 1 :(得分:0)
您不能在变量中存储>>
之类的shell结构,而变量Workflow
是命令的结果,而不是命令行本身。要执行的代码属于函数,而不是文本参数。
您应该像这样构建代码:
#!/bin/bash
echo JSTATS from Components
# Variables
WorkflowLog="/tmp/jsm04-workflow-gc.log"
Workflow () {
ps -ef |
grep 'java' |
grep -i 'workflowcomponent' |
awk '{print "jstat -gcutil "$2" 200 10"}'
}
echo Running jstats...............................
Workflow >> "$WorkflowLog"