백그라운드에서 SSH를 통해 실행 중인 프로세스의 출력 리디렉션

백그라운드에서 SSH를 통해 실행 중인 프로세스의 출력 리디렉션

내 일반적인 질문은 다음과 같습니다. 원격 서버에 로그인하고, 지속적으로 실행되는 프로세스를 시작하고, 해당 프로세스의 표준 출력을 내 로컬 컴퓨터의 파일로 리디렉션하고, 이 모든 작업을 백그라운드에서(내 로컬 컴퓨터에서) 실행하려면 어떻게 해야 합니까? )?

더 구체적으로 말하자면, 원격 Raspberry Pi에서 내 로컬 컴퓨터(실제로는 Cygwin을 실행하는 또 다른 Windows 원격 컴퓨터, 짧게 말하면)로 tshark 출력을 스트리밍하고 이를 로그 파일에 쓰려고 합니다. 먼저 출력 리디렉션 없이 명령을 실행합니다.

ssh pi@remotehost "\
sudo tshark \
-i wlan1mon \
-I -l -f broadcast \
-Y wlan.fc.subtype==4 \
-T fields \
-e wlan.sa \
-e frame.time_epoch"

이는 예상한 대로 작동하는 것 같습니다. 터미널에서 데이터 스트림을 수신합니다. 다음으로 출력 리디렉션을 추가해 보았습니다.

ssh pi@remotehost "\
sudo tshark \
-i wlan1mon \
-I -l -f broadcast \
-Y wlan.fc.subtype==4 \
-T fields \
-e wlan.sa \
-e frame.time_epoch" \
> /var/tshark.out

이것도 예상한 대로인 것 같습니다. 터미널에 표준 오류가 기록된 것을 확인하고 프로세스를 종료하고 출력 파일(/var/tshark.out)을 검사한 후 tshark의 표준 출력을 확인합니다. 다음으로 내 컴퓨터의 백그라운드에서 실행해 보았습니다.

ssh pi@remotehost "\
sudo tshark \
-i wlan1mon \
-I -l -f broadcast \
-Y wlan.fc.subtype==4 \
-T fields \
-e wlan.sa \
-e frame.time_epoch" \
> /var/tshark.out &

불행히도 이것은 원하는 효과를 얻지 못했습니다. 출력 파일을 확인했을 때 비어 있었고 작업 상태를 확인했을 때("jobs" 명령을 실행하여) 중지된 것을 발견했습니다. 다음은 작업의 출력입니다(가독성을 위해 약간 형식을 변경했습니다).

[1]+  Stopped   ssh pi@remotehost
                "sudo tshark
                -i wlan1mon
                -I -l -f broadcast
                -Y wlan.fc.subtype==4
                -T fields
                -e wlan.sa
                -e frame.time_epoch"
                > /var/tshark.out &

이로 인해 백그라운드 및 원격 및 로컬 프로세스의 다양한 순열을 시도했지만 소용이 없었습니다.

답변1

사용된 -f스위치 ssh는 인증 및 기타 잠재적인 상호 작용 단계 후에 명령을 백그라운드로 보냅니다.

관련 정보