리눅스 환경에서 sleep
명령어는 시스템이 특정 시간 동안 아무 작업도 하지 않고 일시 정지 상태를 유지하도록 합니다. 이러한 기능이 직관적이지 않을 수 있지만, 때로는 의도적으로 시스템의 활동을 멈추어야 할 필요가 있습니다. 본 글에서는 Bash 셸에서 이 명령어를 효율적으로 사용하는 다양한 방법을 소개합니다.
sleep
명령어의 사용법은 매우 간단합니다. 명령줄에 sleep
을 입력한 후 공백으로 구분하여 숫자를 입력하고 Enter 키를 누르면 됩니다.
예를 들어 다음과 같이 입력하면:
sleep 5
커서는 5초 동안 사라졌다가 다시 나타납니다. 이 명령은 Bash에게 지정된 시간(이 예에서는 5초) 동안 프로세스 실행을 중단하도록 지시합니다. sleep
명령어는 이러한 방식으로 시스템의 활동을 일시적으로 멈추는 데 활용될 수 있습니다.
sleep
명령어는 일, 시간, 분, 초 단위로 시간을 설정할 수 있습니다. 이를 위해 숫자 뒤에 d
(일), h
(시간), m
(분), s
(초) 접미사를 사용합니다. 예를 들어, 1일 4시간 7분 5초 동안 시스템을 일시 정지하려면 다음과 같이 명령어를 입력합니다:
sleep 1d 4h 7m 5s
s
(초) 접미사는 선택 사항입니다. 접미사가 생략되면 sleep
은 모든 숫자를 초 단위로 간주합니다. 만약 5분 20초 동안 시스템을 일시 중지하고 싶다면, 올바른 명령어는 다음과 같습니다:
sleep 5m 20
만약 분 단위에 m
접미사를 빠뜨린다면, sleep
명령어는 먼저 5초 동안 일시 중지한 다음 20초 동안 다시 일시 중지합니다. 따라서 총 25초 동안 멈추게 됩니다. sleep
명령어는 매개변수 순서에 크게 구애받지 않습니다. 어떤 순서로 입력하든 상관없이 명령을 올바르게 이해합니다. 부동 소수점 숫자도 매개변수로 사용할 수 있습니다. 예를 들어, 0.5h
는 30분 동안 일시 중지하라는 의미로 해석됩니다.
다음은 모두 sleep
에게 10초 동안 일시 중지하도록 지시하는 다양한 (때로는 기이한) 명령 예시입니다:
sleep 10
sleep 5 5s
Sleep 1 1 1s 1 1 1s 1 2
sleep 0.16667m
명령 실행 전 일시 정지
sleep
명령을 사용하여 특정 명령을 실행하기 전에 시스템을 일시 정지할 수 있습니다. 다음 명령은 15초 동안 멈춘 후 비프음을 발생시킵니다:
sleep 15 && echo -en ' 07'
두 명령 사이 일시 정지
sleep
명령어를 사용하여 두 명령 사이에 일시 정지를 설정할 수 있습니다. 다음 명령은 ‘Documents’ 디렉토리 내의 파일 목록을 출력하고, 5초 동안 일시 중지한 다음 현재 작업 디렉토리를 홈 디렉토리로 변경합니다:
ls -R ~/Documents && sleep 5 && cd ~
스크립트 실행 일시 정지
쉘 스크립트에서는 sleep
명령어를 사용하여 스크립트 실행을 특정 시간 동안 멈출 수 있습니다. 이 기능은 스크립트가 다음 단계를 진행하기 전에 다른 프로세스가 완료될 때까지 기다리는 데 유용합니다. 또한, 스크립트가 다른 리소스에 요청을 보내는 속도를 제어하는 데도 활용할 수 있습니다.
예를 들어, 다음 스크립트는 curl
명령을 사용하여 Google 웹 서비스에 요청을 보냅니다. ISBN
책 번호를 입력하면, 해당 책에 대한 JSON
데이터가 반환됩니다. jq
유틸리티를 사용하여 데이터를 파싱하여 책 제목을 검색할 수 있습니다. 웹 서비스에 과도한 부담을 주지 않기 위해, 각 웹 요청 사이에 1초 동안 sleep
명령어를 사용하여 일시 정지를 줍니다.
아래 코드를 복사하여 `check_book.sh`라는 이름으로 저장합니다:
#!/bin/bash for book in `cat $1` do echo $book":" curl -s https://www.googleapis.com/books/v1/volumes?q=isbn:$book | jq '.items | .[] | .volumeInfo.title' echo "" sleep 1 done echo "All done."
다음 명령어를 실행하여 스크립트에 실행 권한을 부여하고 실행 가능하게 만듭니다:
chmod +x check_book.sh
이 스크립트는 curl
과 jq
유틸리티를 필요로 합니다. Ubuntu 또는 다른 Debian 기반 배포판을 사용한다면 apt-get
을 사용하여 해당 패키지를 설치합니다. 다른 리눅스 배포판에서는 해당 배포판의 패키지 관리 도구를 사용합니다.
sudo apt-get install curl
sudo apt-get install jq
다음 숫자를 포함하는 텍스트 파일을 만들어 `books.txt`로 저장합니다:
9781565921276 9781874416685 9781565921672 9780521431088 9781491941591
다음 명령어를 사용하여 스크립트를 실행하고 `books.txt` 파일을 매개변수로 전달합니다:
./check_book.sh books.txt
위 명령은 1초 간격으로 Google 웹 서비스에 요청을 보냅니다. 각 ISBN 번호에 대한 쿼리가 완료된 직후 책 제목이 출력됩니다. 이 스크립트는 sleep
명령어의 유효한 사용 사례를 보여주기 위해 선택되었습니다.
스크립트의 두 가지 주요 구성 요소에 대한 자세한 내용은 curl 프로젝트 페이지 및 jq 온라인 설명서를 참조하십시오.