내가 찾은누구다음을 통해 SSH 세션을 활성 상태로 유지하세요.
ssh -f -D $port $SSH_HOST "
if [ -f ~/.tunnel ]; then
rm ~/.tunnel;
fi;
while [ ! -f ~/.tunnel ]; do
echo > /dev/null;
done
" &
다음을 통해 SSH 세션을 종료합니다.
ssh $SSH_HOST "touch ~/.tunnel"
파일이 pid 파일과 동일한 방식으로 사용됩니까? 이 접근 방식을 더 많은 상황이나 일반적인 상황에 사용할 수 있나요?
SSH 세션을 활성 상태로 유지하고 종료하려면 파일을 사용해야 합니까? 더 좋은 방법이 있나요?
감사해요.
답변1
간단한 개선
이 기술을 사용하면 원격 컴퓨터의 연결을 종료할 수 있습니다. 몇 가지 변화를 제안합니다
- while 루프를 추가하면
sleep
기다리느라 CPU 시간을 낭비할 필요가 없습니다. - 프로세스를 반대로 진행하세요. 세션을 종료하려면 처음에 해당 파일을 터치한 후 삭제하세요. 원하는 경우 파일에 PID를 포함할 수 있는 옵션이 제공됩니다.
이것이 필요합니까?
세션을 종료하려면 질문의 방법을 피하고 다음을 사용합니다.
SSH -N -D $port $SSH_HOST &
그러면 셸 없이 연결이 백그라운드 작업으로 설정됩니다( -N
셸을 비활성화하고 &
백그라운드 작업으로 설정).
다음 명령을 사용하여 (로컬) PID를 얻고 다음 명령 $!
을 사용하여 종료할 수 있습니다.kill
예를 들어:
SSH -N -D $port $SSH_HOST &
TUNNEL_PID=$!
# Do some other stuff
kill $TUNNEL_PID
답변2
@PhilipCouling이 쓴 것 외에도 이상하지만 효과적인 작은 유틸리티가 있습니다.스피너,대화형 터미널 세션이 열려 있을 때 유용합니다. 원격 호스트에서 실행합니다. 가끔씩 로컬 클라이언트에 더미 패킷을 보내는 것 외에는 많은 작업을 수행하지 않습니다.질소초(나는질소= 120, 예). 가상 사람은 연결을 활성 상태로 유지합니다.
이것이 당신이 원하는 것인지 확실하지 않지만 그것이 바로 그것입니다.