Openshift远程命令执行(exec)
Openshift remote command execution (exec)
我正在尝试 运行 从 Windows 机器在 openshift docker 容器 运行ning Linux
中执行以下命令
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 }') GC.heap_dump \
/tmp/heap1.hprof
它正在尝试评估 jcmd $(ps -ef | grep java | grep -v grep | awk '{print $2}' ) GC.heap_dump /tmp/heap1.hprof 在本地 windows 机器上,我没有 linux 命令。另外,我需要应用程序的进程 ID 运行ning 在容器中而不是我的本地。
感谢任何快速帮助。
试试这个:
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}')"
甚至:
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}')"
问题是 $( )
片段正在本地进行解释。用双引号括起来也无济于事,因为这种语法是在双引号内解释的。
您必须将双引号替换为单引号(因此 $( )
未被解释),然后补偿 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 }'\'') GC.heap_dump /tmp/heap1.hprof'
请将标签 unix
和 shell
添加到您的问题中,因为这更像是一个 UNIX 问题而不是 Openshift 问题。
我正在尝试 运行 从 Windows 机器在 openshift docker 容器 运行ning Linux
中执行以下命令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 }') GC.heap_dump \
/tmp/heap1.hprof
它正在尝试评估 jcmd $(ps -ef | grep java | grep -v grep | awk '{print $2}' ) GC.heap_dump /tmp/heap1.hprof 在本地 windows 机器上,我没有 linux 命令。另外,我需要应用程序的进程 ID 运行ning 在容器中而不是我的本地。
感谢任何快速帮助。
试试这个:
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}')"
甚至:
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}')"
问题是 $( )
片段正在本地进行解释。用双引号括起来也无济于事,因为这种语法是在双引号内解释的。
您必须将双引号替换为单引号(因此 $( )
未被解释),然后补偿 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 }'\'') GC.heap_dump /tmp/heap1.hprof'
请将标签 unix
和 shell
添加到您的问题中,因为这更像是一个 UNIX 问题而不是 Openshift 问题。