systemd 서비스에서 netcat 재설정

systemd 서비스에서 netcat 재설정

저는 netcat을 사용하여 TCP를 통해 서버에 연결하고 수신된 데이터를 지속적으로 파일로 전송하고 있습니다.

nc 10.0.2.2 3456 > file.data

터미널이나 스크립트에서 실행할 때 연결 상태가 유지됩니다.

서비스로 실행하여 계속 실행하고 실패하면 다시 시작하고 싶습니다. 그러나 systemd 서비스에서 동일한 스크립트를 실행하면 연결이 빠르게 끊어지고 로그가 표시됩니다.

ncat: connection reset by peer

nc를 서비스로 실행하는 데 제한이 있나요?

저는 다음과 같이 설정했습니다.

[Unit]
User=user
Type=simple
ExecStart=ncscript.sh
Restart=always

답변1

nc서비스로 안정적으로 운영하고 있습니다 . 이것이 내가 한 일입니다:

[Service]
ExecStart=/bin/nc 10.10.1.20 19184
StandardOutput=journal
StandardError=journal

제 경우에는 nc트리거 리모트 소켓 유닛을 사용하여 원격 서비스를 트리거했습니다. 서비스의 표준 출력은 소켓을 통해 라우팅되며 내 로그로 직접 이동됩니다.

> file.txt스크립트에서 일부 리디렉션( )을 수행하고 있습니다 . 그것이 내가 보는 유일한 차이점이므로 그것이 문제의 원인이라고 생각합니다. 대신 다음을 사용할 수 있습니다.

StandardOutput=append:/path/to/file.txt

우리는 완전한 이야기를 갖고 있지 않을 수도 있습니다. 이렇게 하면:

nc 10.0.2.2 3456 > file.data &

이는 bash 스크립트가 종료될 때 다른 문제를 일으킬 수 있습니다.

답변2

어떤 이유로 nc는 systemd를 통해 실행될 때 FIN을 보내 서버 RST를 연결합니다.

에 추가하여 --recv-only해결되었습니다 nc.

관련 정보