
프로세스가 포트에서 수신 대기 중인지 확인하기 위해 스크립트에서 검사를 수행하려고 합니다.
를 사용해 보았지만 ss
표현식이 일치하지 않더라도 항상 종료 코드로 0을 생성하는 것 같습니다.
이 호스트에는 일치하고 종료 코드 0이 있는 포트 53에서 수신 대기하는 서비스가 있습니다.
$ ss -ntl sport = :53 ; echo $?
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 5 127.0.1.1:53 *:*
LISTEN 0 5 127.0.0.1:53 *:*
LISTEN 0 5 ::1:53 :::*
0
포트를 54로 변경하면(아무 것도 듣지 않고) 종료 코드는 항상 0으로 유지됩니다.
$ss -ntl sport = :54 ; echo $?
State Recv-Q Send-Q Local Address:Port Peer Address:Port
0
매뉴얼을 확인했는데 종료 코드에 관한 내용이 없습니다.
내가 뭔가 잘못하고 있는 걸까요, 아니면 이 동작이 맞는 걸까요?
우분투 16.04 및 Centos 7에서 테스트되었습니다.
답변1
이 동작은 정상적인 동작이며 ss
필터가 일치하는지 여부를 나타내기 위해 종료 코드를 변경하지 않습니다.
결과를 테스트하려면 ss
다른 도구를 사용하여 후처리해야 합니다.예를 들어 grep
(일치에 따라 종료 코드가 변경됩니다):
ss -ntl sport = :53 | grep -q :53; echo $?