首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Openshift远程命令执行(exec)

Openshift远程命令执行(exec)
EN

Stack Overflow用户
提问于 2020-08-08 21:38:36
回答 2查看 699关注 0票数 0

我试图在运行Linux的openshift停靠容器中的Windows机器上运行以下命令

代码语言:javascript
复制
oc exec openjdk-app-1-l9nrx -i -t --server https://xxx.cloud.ibm.com:30450 \
    --token <token> -n dev-hg jcmd \
    $(ps -ef | grep java | grep -v grep | awk '{print $2}') GC.heap_dump \
    /tmp/heap1.hprof

它试图在本地windows机器上计算jcmd $(ps -ef \ grep \ grep -v -v grep \ awk '{print $2}') GC.heap_dump /tmp/heap1.hprof,而我没有linux命令。另外,我需要在容器中运行的应用程序的进程ID,而不是本地的。

任何快速的帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-16 01:20:34

试试这个:

代码语言:javascript
复制
oc exec -it openjdk-app-1-l9nrx --server https://xxx.cloud.ibm.com:30450 \
  --token <dont-share-your-token> -n dev-hg -- /bin/sh -c \
  "jcmd $(ps -ef | grep java | grep -v grep | awk '{print \$2}')"

甚至:

代码语言:javascript
复制
oc exec -it openjdk-app-1-l9nrx --server https://xxx.cloud.ibm.com:30450 \
  --token <dont-share-your-token> -n dev-hg -- /bin/sh -c \
  "jcmd $(ps -ef | awk '/java/{print \$2}')"
票数 0
EN

Stack Overflow用户

发布于 2020-08-17 03:55:05

问题是,$( )部分是在本地解释的。用双引号包围它不会有帮助,因为这种语法是在双引号中解释的。

您必须用单引号替换双引号(因此$( )不会被解释),然后补偿awk单引号:

oc exec openjdk-app-1-l9nrx -i -t --server https://xxx.cloud.ibm.com:30450 --token TOKEN -n dev-hg 'jcmd $(ps -ef | grep java | grep -v grep | awk '\''{print $2}'\'') GC.heap_dump /tmp/heap1.hprof'

请将标签unixshell添加到您的问题中,因为这更像是一个UNIX问题,而不是Openshift问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63320449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档