openshiftopenshift-originopenshift-client-tools

Openshift remote command execution (exec)


I am trying to run the following command from Windows machine in the openshift docker container running 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 $2}') GC.heap_dump \
    /tmp/heap1.hprof

It is trying to evaluate jcmd $(ps -ef | grep java | grep -v grep | awk '{print $2}') GC.heap_dump /tmp/heap1.hprof on local windows machine and I do not have linux commands. Also, I need the process ID of the application running in container and not my local.

Any quick help is appreciated.


Solution

  • Try this:

    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}')"
    

    Or even:

    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}')"