본문 바로가기

Server/Linux

[Linux] while문을 이용한 일정 시간마다 명령어 반복 실행

반응형

 

while문을 이용한 일정 시간마다 명령어 실행

$ while true; do date >> test.txt; nc -zv 1.1.1.1 80 2>> test.txt; sleep 1; done

 

[명령어 설명]

1. while true; do ... done:
 - while true는 무한 루프를 시작합니다. true는 항상 참(True)을 반환하는 명령어이므로 이 루프는 종료되지 않고 계속 반복됩니다.
 - do ... done 사이에 있는 명령어들은 루프가 반복될 때마다 실행됩니다.

 

2. date >> test.txt:

 - date 명령어는 현재 날짜와 시간을 출력합니다.
 - >> test.txt는 그 출력 결과를 test.txt 파일에 추가하는 역할을 합니다. 즉, test.txt 파일 끝에 현재 날짜와 시간이 계속해서 기록됩니다.

 

3. nc -zv 1.1.1.1 80 2>> test.txt:

 - nc는 netcat 명령어로, 네트워크 연결을 확인하거나 데이터를 송수신할 수 있습니다.
 - -z 옵션은 포트를 스캔하는 기능을 제공합니다. nc가 데이터를 보내지 않고, 지정된 포트가 열려 있는지 확인만 합니다.
 - -v 옵션은 verbose 모드로, 연결 상태나 에러에 대한 자세한 정보를 출력합니다.
 - 1.1.1.1은 대상 IP 주소입니다.
 - 80은 확인하려는 포트 번호로, 보통 웹 서버에서 사용하는 HTTP 포트를 나타냅니다.
 - 2>> test.txt는 표준 오류 출력을 test.txt 파일에 추가하는 방식으로 기록합니다. 즉, 만약 nc 명령어 실행 중에 에러가 발생하면 그 에러 메시지가 test.txt 파일에 기록됩니다.

 

4. sleep 1:
 - sleep 1은 1초 동안 대기하는 명령어입니다. 이 명령어가 실행되면 루프가 다시 시작되기 전에 1초를 기다립니다.

 

[명령어의 전체적인 흐름]
 - 루프가 계속 돌며, 매초마다 현재 날짜와 시간을 test.txt 파일에 기록합니다.
 - 그 후 nc 명령어를 사용하여 1.1.1.1 IP의 80번 포트가 열려 있는지 확인하고, 그 결과 또는 에러 메시지를 test.txt 파일에 기록합니다.
 - 그 후 1초를 기다리고, 이 과정을 무한히 반복합니다.

 

[용도]
이 명령어는 1.1.1.1의 80번 포트가 열려 있는지 주기적으로 확인하고 그 결과를 로그 파일(test.txt)에 기록하는 용도로 사용됩니다. nc 명령어의 결과를 통해 서버의 포트 상태를 모니터링할 수 있습니다.

이 명령어는 네트워크 테스트나 모니터링 시스템에서 유용하게 사용될 수 있습니다.

반응형