Linux에 종료될 때까지 기다리는 명령이 있습니까?

Linux에 종료될 때까지 기다리는 명령이 있습니까?

포트 전달을 사용하여 putty/plink를 시작하는 Windows 배치 파일을 작성하려고 합니다. Windows 부분은 지금까지 준비되었습니다.

start plink.exe -ssh -i key.ppk -L 1234:localhost:80 [email protected]

인증 후에 다른 명령을 실행하는 것을 허용하고 싶지 않기 때문에 다음 선언 ForceCommand과 함께 사용하고 있습니다 Match User.

Match User sampleUser
    ForceCommand echo 'Success! Close this window to log out.'

문제는 내 배치 파일을 실행하면 퍼티가 올바르게 시작되지만 지정된 텍스트를 에코한 후 즉시 닫힌다는 것입니다.

내 생각은 다음과 같은 것을 사용하는 것입니다.

ForceCommand echo 'Success! Close this window to log out.' && waitTillControlC

이렇게 하면 putty/SSH가 연결을 유지하고 포트 전달을 종료하지 않습니다.

yes, ping또는 같은 명령을 생각해 read보았지만

  • 내 터미널 창에 스팸을 보내고 있습니다
  • 실제로 작업을 수행하고 있거나 불필요한 CPU 로드를 생성하고 있습니다.
  • 누군가 Enter 키를 누르면 예기치 않게 닫힐 수 있습니다.

누군가가 Ctrl+C를 눌러 종료하거나 퍼티 창을 닫아 SSH 연결을 닫을 때까지 영원히 아무 작업도 수행하지 않는 명령이 있습니까?

무엇을 위해 사용해야 합니까 waitTillControlC?

답변1

다른 모든 답변이 여기서 루프를 사용하려는 이유를 모르겠습니다. 수면은 실제 목적을 위해 충분히 오래 기다릴 수 있으며 이를 수행하는 데 클럭 사이클을 사용하지 않습니다.

예를 들어, 여기서는 의심스러운 100년 동안 잠을 자려고 시도할 것이며 어쨌든 요청을 준수하기에 충분할 것입니다.

echo "Something"; sleep 36500d

또는 Enter키를 입력할 때까지 이 역시 차단되어야 합니다.

echo "Something"; read foo

답변2

대신 옵션 을 사용해 보세요 -N. 로부터plink선적 서류 비치:

-N        don't start a shell/command (SSH-2 only)

ssh이는 옵션 -N에 설명된 대로 동작과 동일합니다 .매뉴얼 페이지:

-N      Do not execute a remote command.  This is useful for just for-
         warding ports (protocol version 2 only).

답변3

이것은 (눈에 띄는) CPU 전력을 소비하지 않고 영원히 잠들어야 합니다.

echo "Something" && while true; do sleep 9999; done

또한 절과 같이 명령을 내릴 수 있는지도 잘 모르겠습니다 ForceCommand. 명령을 쉘 스크립트에 넣어야 할 수도 있습니다.

#!/usr/bin/env bash
echo "Success! Close this window to log out." && while true; do sleep 9999; done

물론 이 스크립트는 서버의 일반 사용자가 쓸 수 없는 위치에 있어야 하며 권한이 있어야 합니다.

Match User sampleUser
    ForceCommand /usr/bin/waitforever

편집하다

더 우아해 보이는 명령을 찾았습니다.

echo "Something" && tail -f /dev/null

tail -f파일이나 스트림이 바이트를 반환할 때까지 기다립니다. (그렇지 않으면 실시간으로 로그를 보는 데 유용합니다.) /dev/null바이트를 반환하지 않습니다. 그래서 명령은 영원히 잠들 것입니다.

답변4

당신은 잘못된 방향에서 이 문제를 해결하려고 합니다. 쉘이 종료되지 않는 것을 원하지 않고, 퍼티가 창을 열어두기를 원합니다.

http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter4.html#config-closeonexit- 무엇을 변경해야 하는지 정확하게 설명합니다. "깨끗하게 종료할 때만" 옵션을 사용하려면 exit 1ForceCommand 끝에 추가하면 됩니다.

편집하다:제가 잘못 이해했습니다. 전달된 포트만 유지하고 ForceCommand의 출력을 유지하고 싶지는 않습니다. 그런 경우에는 그렇지 않습니다http://tartarus.org/~simon/putty-snapshots/htmldoc/Chapter4.html#config-ssh-noshell원하는 대로 하세요?

관련 정보