>

ssh를 통해 원격 컴퓨터에 로그인하고 프로세스를 시작하고 ssh 세션을 종료하고 다른 작업을 한 다음 ssh를 통해 다시 로그인하여 프로세스를 종료 해야하는 bash 스크립트를 작성 중입니다. 그러나 프로세스는 종료되지 않습니다. 나는 많은 방법을 시도했다. 작동하지 않는 스크립트 부분은 다음과 같습니다.

ssh localadmin@10.101.30.61 &>/dev/null << EOF
tshark -i ens160 -w /home/localadmin/dns_traffic_61.pcap &>/dev/null &
EOF

ssh localadmin@10.101.30.61 &>/dev/null << EOF
kill $(pidof tshark)
EOF

또한 스크립트에 tshark 명령을 넣어서 다음과 같이 스크립트를 죽이려고했습니다 :

ssh localadmin@10.101.30.61 &>/dev/null << EOF
sh tshark.sh &>/dev/null &
EOF
ssh localadmin@10.101.30.61 &>/dev/null << EOF
pid=$(ps -ef | grep tshark.sh | grep -v grep | awk '{print $2}')
kill $pid  
EOF

그리고 이것 :

ps -ef | grep tshark.sh | grep -v grep | awk '{print $2}'|xargs kill

아무것도 작동하지 않는 것 같습니다.

참고 : ssh를 통해 수동으로 연결하면 프로세스를 종료 할 수 있지만 bash 스크립트 만 수행 할 수 없습니다.


  • 답변 # 1

    끝 표식 주위에 작은 따옴표를 사용하여 현재 쉘에서 확장되지 않고 원격에서 확장되도록합니다

    ssh localadmin@10.101.30.61 &>/dev/null << 'EOF'
    kill $(pidof tshark)
    EOF
    
    

    비교

    cat << EOF
    $$
    EOF
    
    

    cat << 'EOF'
    $$
    EOF
    
    

관련 자료

  • 이전 java - 작업을 운영하는 대기열 만들기
  • 다음 python - 인덱스 장고에 답변을 표시하는 방법은 무엇입니까?