본문 바로가기
리눅스&OS

리눅스에서 한줄로 특정 명령 무한 반복 실행하기 - 한줄로 여러 명령 수행, 쉘 프로그래밍

by developer's warehouse 2024. 1. 19.

리눅스에서 작업 시에 네트워크 모니터링이나 디스크 성능 모니터링 등의 작업 시에는 주기적으로 특정 명령을 확인해봐야 하는 일이 발생합니다. 그래서, 한 줄로 특정 명령을 1초 혹은 n초 단위로 계속 실행하는 스크립트를 한 줄로 작성하는 방법을 설명하도록 하겠습니다.

리눅스에서 한줄로 특정 명령 반복 실행하기

리눅스에서 여러 줄 실행방법

리눅스에서 한 줄에 여러 명령을 실행하는 방법은 다음과 같이 세 가지가 있습니다.

  • 세미콜론 (;)
    • 세미콜론을 사용하면, 성공 여부와 상관없이 다음 명령어를 실행할 수 있습니다.
    • 예를 들어, command1; command2는 command1을 실행한 후 command2를 실행합니다.
  • 더블 앰퍼샌드 (&&)
    • 더블 앰퍼샌드를 사용하면, 이전 명령어가 성공했을 때만 다음 명령어를 실행합니다.
    • 예를 들어, command1 && command2는 command1이 성공하면 command2를 실행합니다.
  • 앰퍼샌드 (&)
    • 앰퍼샌드를 사용하면, 명령어를 백그라운드에서 실행할 수 있습니다.
    • 예를 들어, command1 & command2는 command1을 백그라운드에서 실행하고, 동시에 command2를 실행합니다.

다음은 이러한 방법을 사용하여 여러 명령을 한줄로 실행하는 예제입니다:

# 세미콜론 (;) 사용 예제
echo "Hello"; echo "World"

# 더블 앰퍼샌드 (&&) 사용 예제
mkdir test && cd test

# 앰퍼샌드 (&) 사용 예제
sleep 10 & echo "This will print immediately"

이러한 방법을 사용하면, 한 줄에 여러 명령을 실행하거나, 명령의 실행 결과에 따라 다음 명령을 실행하거나, 명령을 백그라운드에서 실행하는 등의 작업을 수행할 수 있습니다.

 

리눅스에서 주기적으로 특정 명령 실행하는 법

이 방법들 중 주기적으로 내가 원하는 명령을 실행하기 위해서는 세미콜론을 사용합니다.

이는 다음과 같이 할 수 있습니다.

$ while true; do 원하는명령문 sleep 시간; done

 

위와 같이 수행하면 된다. sleep 시간(초)마다 명령문이 실행됩니다.

 

주기적으로 특정 명령 실행하는 예제

1초 마다 ss -o 옵션을 통해서 네트워크 상태 모니터링

 

#명령문
while true; do ss -o |grep 33333;  sleep 1; done;

#결과

tcp   ESTAB      0      4628733                            192.168.21.32:56806               192.168.1.98:33333  timer:(persist,1min44sec,0)
tcp   ESTAB      0      4628733                            192.168.21.32:56806               192.168.1.98:33333  timer:(persist,1min43sec,0)
tcp   ESTAB      0      4628733                            192.168.21.32:56806               192.168.1.98:33333  timer:(persist,1min42sec,0)
tcp   ESTAB      0      4628733                            192.168.21.32:56806               192.168.1.98:33333  timer:(persist,1min41sec,0)
tcp   ESTAB      0      4628733                            192.168.21.32:56806               192.168.1.98:33333  timer:(persist,1min40sec,0)
tcp   ESTAB      0      4628733                            192.168.21.32:56806               192.168.1.98:33333  timer:(persist,1min39sec,0)
tcp   ESTAB      0      4628733                            192.168.21.32:56806               192.168.1.98:33333  timer:(persist,1min38sec,0)
tcp   ESTAB      0      4628733                            192.168.21.32:56806               192.168.1.98:33333  timer:(persist,1min37sec,0)

 

 

2초마다 hi를 출력

$ while true; do echo hi; sleep 2; done

 

리눅스에서 주기적으로 특정 명령 수행 법과 한줄로 다수의 명령어 수행 법 정리

리눅스에서 한줄로 다수의 명령어를 입력하는 방법은 세미콜론, 앰퍼센트를 이용할 수 있습니다.

그 중 세미콜론을 사용하면 처음 명령이 완료되면 다음 명령을 수행하므로 쉘스크립트를 한 줄로 작성하는데도 유용합니다.

그러므로, 세미콜론을 이용해서 한줄로 쉘 스크립트를 작성하면, 스크립트를 파일로 만들지 않고도 간단한 쉘 스크립트를 작성하여 주기적으로 특정 명령을 수행하고 모니터링할 수 있습니다.

 

facebook twitter kakaoTalk kakaostory naver band shareLink