bg에서 원격 프로세스를 실행할 때 ssh가 반환되지 않습니다.

bg에서 원격 프로세스를 실행할 때 ssh가 반환되지 않습니다.

내 로컬 컴퓨터에서 원격 서버의 터널을 열기 위해 SSH를 통해 원격으로 명령을 실행하려고 합니다. 저도 sshpass를 사용하고 있습니다.

sshpass -fpw_file.txt ssh [email protected] 'bash /home/username/do_stuff.sh &'

이 do_stuff.sh에는 한 줄만 포함되어 있습니다.

ssh -f -N -L 8888:hostname:9999 user@host &

그러나 호출(첫 번째 명령)은 반환되지 않습니다. 작은따옴표 밖에 &를 넣으면 종료되지 않는 프로세스가 생성됩니다. 이는 매우 작은 메모리 누수이지만 이를 깔끔하게 수행할 수 있는 방법이 있는지 알아두면 좋을 것입니다.

감사해요!

답변1

I/O 스트림을 null로 리디렉션합니다.설명자가 열려 있는 BG 프로세스로 인해 SSH가 닫히지 못할 수 있음.

sshpass -fpw_file.txt ssh [email protected] 'bash /home/username/do_stuff.sh &> /dev/null < /dev/null &'

설명하다

&> /dev/nullstdout 및 stderr을 가져와 null로 리디렉션

< /dev/nullstdin을 가져와 null로 리디렉션

&마지막으로 프로세스가 백그라운드로 전송됩니다.

관련 정보