리눅스에서 작업 시에 네트워크 모니터링이나 디스크 성능 모니터링 등의 작업 시에는 주기적으로 특정 명령을 확인해봐야 하는 일이 발생합니다. 그래서, 한 줄로 특정 명령을 1초 혹은 n초 단위로 계속 실행하는 스크립트를 한 줄로 작성하는 방법을 설명하도록 하겠습니다.
Table Of Contents
리눅스에서 여러 줄 실행방법
리눅스에서 한 줄에 여러 명령을 실행하는 방법은 다음과 같이 세 가지가 있습니다.
- 세미콜론 (;)
- 세미콜론을 사용하면, 성공 여부와 상관없이 다음 명령어를 실행할 수 있습니다.
- 예를 들어, 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
리눅스에서 주기적으로 특정 명령 수행 법과 한줄로 다수의 명령어 수행 법 정리
리눅스에서 한줄로 다수의 명령어를 입력하는 방법은 세미콜론, 앰퍼센트를 이용할 수 있습니다.
그 중 세미콜론을 사용하면 처음 명령이 완료되면 다음 명령을 수행하므로 쉘스크립트를 한 줄로 작성하는데도 유용합니다.
그러므로, 세미콜론을 이용해서 한줄로 쉘 스크립트를 작성하면, 스크립트를 파일로 만들지 않고도 간단한 쉘 스크립트를 작성하여 주기적으로 특정 명령을 수행하고 모니터링할 수 있습니다.
'리눅스&OS' 카테고리의 다른 글
우분투에서 원격 삼바(samba) 서버에 추가 설치 없이 네트워크 드라이브 연결하기 - GUI 모드(smbclient 설치안함) (0) | 2024.01.20 |
---|---|
리눅스 TCP 커널 파라메터 - 재전송과 타임 아웃 그리고 연결해제 - tcp_retries1과 tcp_retries2에 대해서 (0) | 2024.01.19 |
우분투에 vs code 설치하기 (GUI 설치 및 apt 설치 모두 포함) (0) | 2024.01.15 |
우분투 22.04 인증 키 모음의 잠금 풀기 - 인증이 필요합니다 안나오게 하기 (0) | 2024.01.15 |
우분투에서 VS CODE C/C++ JSON 구성하고 코드 분석하기 (0) | 2024.01.15 |