[5분 따라하기]
bash 타임아웃 패턴
박재호(jrogue@gmail.com)
참고 자료
• <컴퓨터 vs 책> 블로그
• http://jhrogue.blogspot.com/
• OKdevTV 유튜브 방송
• 5분 따라하기 리스트:
• https://www.youtube.com/playlist?list=PLdntWJk2tJPLKNNYBVCxnde2PEB6d
zbSL
• 슬라이드 셰어
• https://www.slideshare.net/jrogue/presentations
• ASCIINEMA
• https://asciinema.org/~jrogue
오늘 소개할 내용
• 배시(bash) 셸 스크립트에서 타임아웃을 걸 수 없을까?
• 실행이 오래 걸리는 작업을 무작정 기다릴 수 없는 상황에서 사람이 스톱워
치 들고 개입을 해야 하나?
• 외부 프로그램(watchdog)이 감시해서 제어하기에는 무겁지 않을까?
bash에서 알고 넘어가야 하는 사항
• $$
• POSIX에서 $$는 원본 프로세스의 프로세스 식별자
• $BASHPID
• 배시 하위 셸 내부의 프로세스 식별자
• &
• 배경 프로세스로 동작
• KILL
• 프로세스에 시그널 전송
• TERM: 종료 시그널(해당 프로세스의 시그널 처리기에서 잡을 수 있음)
• KILL: 강제 종료 시그널(init에서 프로세스 종료)
• 모든 시그널 유형 보기
• $ kill -l
via @dongwoo
스크립트
$ (cmdpid=$BASHPID; (echo $cmdpid; sleep 5; kill -TERM $cmdpid) & exec sleep 10)
10321
Terminated
$ cat - > timeout.sh
#!/bin/sh
(cmdpid=$$; (echo $cmdpid; sleep 5; kill -TERM $cmdpid) & exec sleep 10)
<CTRL+D>
$ chmod +x timeout.sh
$ ./timeout.sh
10329
Terminated
명령행에서 직접 실행
스크립트로 만든 다음에 실행
보면서 따라해봅시다~~~
• https://asciinema.org/a/af1uoLWpsuDGITMFf34KGuICt

More Related Content

PDF
[5분 따라하기] 전화번호와 이메일 정규표현식
PDF
[5분 따라하기] git 다중 사용자 신원 설정 방법
PDF
[5분 따라하기] paste로 파일 두 개 join하기
PDF
[5분 따라하기] bash에서 파일 확장자 변경
PDF
[5분 따라하기] git으로 undo하기(remote편)
PDF
[5분 따라하기] git으로 undo하기(local편)
PDF
2020년 5월 16일 개발 이야기 정리
PDF
2020년 5월 2일 개발 이야기 정리
[5분 따라하기] 전화번호와 이메일 정규표현식
[5분 따라하기] git 다중 사용자 신원 설정 방법
[5분 따라하기] paste로 파일 두 개 join하기
[5분 따라하기] bash에서 파일 확장자 변경
[5분 따라하기] git으로 undo하기(remote편)
[5분 따라하기] git으로 undo하기(local편)
2020년 5월 16일 개발 이야기 정리
2020년 5월 2일 개발 이야기 정리

What's hot (20)

PDF
2020년 4월 25일 개발 이야기 정리
PDF
2020년 6월 6일 개발 이야기 정리
PDF
2020년 4월 4일 개발 이야기 정리
PDF
2020년 4월 18일 개발 이야기 정리
PDF
2020년 2월 1일 개발 이야기 정리
PDF
[5분 따라하기] 3차원 도넛을 콘솔에 그리기
PDF
[설치의 정석] EC2에서 워드프레스 설치하기
PDF
2020년 10월 10일 개발자 이야기
PDF
[설치의 정석] EC2에서 Java-Apache-Tomcat 설치하기
PDF
2021년 3월 20일 개발자 이야기
PDF
2020년 5월 9일 개발 이야기 정리
PDF
[5분 따라하기] 3차원 지구본을 콘솔에 그리기
PDF
2020년 8월 1일 개발 이야기 정리
PDF
[5분 따라하기] EC2 키 분실 후 대응 방법
PDF
2020년 6월 13일 개발 이야기 정리
PDF
2020년 9월 12일 개발 이야기 정리
PDF
2020년 9월 19일 개발자 이야기
PDF
2021년 3월 13일 개발자 이야기
PDF
2020년 2월 스택오버플로 개발자 설문 결과
PDF
2020년 9월 26일 개발자 이야기
2020년 4월 25일 개발 이야기 정리
2020년 6월 6일 개발 이야기 정리
2020년 4월 4일 개발 이야기 정리
2020년 4월 18일 개발 이야기 정리
2020년 2월 1일 개발 이야기 정리
[5분 따라하기] 3차원 도넛을 콘솔에 그리기
[설치의 정석] EC2에서 워드프레스 설치하기
2020년 10월 10일 개발자 이야기
[설치의 정석] EC2에서 Java-Apache-Tomcat 설치하기
2021년 3월 20일 개발자 이야기
2020년 5월 9일 개발 이야기 정리
[5분 따라하기] 3차원 지구본을 콘솔에 그리기
2020년 8월 1일 개발 이야기 정리
[5분 따라하기] EC2 키 분실 후 대응 방법
2020년 6월 13일 개발 이야기 정리
2020년 9월 12일 개발 이야기 정리
2020년 9월 19일 개발자 이야기
2021년 3월 13일 개발자 이야기
2020년 2월 스택오버플로 개발자 설문 결과
2020년 9월 26일 개발자 이야기
Ad

Similar to [5분 따라하기] bash 타임아웃 패턴 (10)

PDF
2020년 10월 17일 개발자 이야기
PDF
2020년 3월 7일 개발 이야기 정리
PDF
Do not use Django as like as SMARTSTUDY
PDF
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
PDF
2020년 7월 4일 개발 이야기 정리
PDF
20 2 강의를 마치며
PDF
2020년 7월 19일 개발 이야기 정리
PDF
2020년 11월 28일 개발자 이야기
PDF
팀 개발을 위한 GitHub 사용법
PPT
뒷북요정으로 알아보는 사용자 요구 반영의 나쁜 예
2020년 10월 17일 개발자 이야기
2020년 3월 7일 개발 이야기 정리
Do not use Django as like as SMARTSTUDY
Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기
2020년 7월 4일 개발 이야기 정리
20 2 강의를 마치며
2020년 7월 19일 개발 이야기 정리
2020년 11월 28일 개발자 이야기
팀 개발을 위한 GitHub 사용법
뒷북요정으로 알아보는 사용자 요구 반영의 나쁜 예
Ad

More from Jay Park (20)

PDF
[독서광] 코드 넘어 회사보다 오래 남을 개발자
PDF
(독서광) 윌 라슨의 엔지니어링 리더십 - 테크 리더를 위한 성공 전략
PDF
[독서광] 모던 소프트웨어 엔지니어링 - 소프트웨어 개발의 복잡함과 난해함 속에서 길을 찾으려는 엔지니어를 위한...
PDF
(독서광) Azure OpenAI로 ChatGPT와 LLM 시스템 쉽고 빠르게 구축하기
PDF
(독서광) 이펙티브 소프트웨어 설계 - 실수와 트레이드오프로부터 배우는 현명한 소프트웨어 설계 가이드
PDF
(독서광) 지능의 기원 - 우리의 뇌 그리고 AI를 만든 다섯 번의 혁신
PDF
(독서광) 린 프로덕트 플레이북: 시장에서 살아남는 프로덕트를 개발하는 6단계 프로세스
PDF
(OkdevTV) 2025년 1월 8일 개발 이야기
PDF
(독서광) 2024년 12월 모두를 위한 소프트웨어 보안 설계와 구현
PDF
(OkdevTV) 2024년 12월 18일 개발 이야기
PDF
(OKdevTV) 2024년 12월 5일 개발 이야기
PDF
(독서광) 2024년 11월 선택 설계자들 - 어떻게 함정을 피하고 탁월한 결정을 내릴 것인가
PDF
(OkdevTV) 2024년 10월 30일 개발 이야기
PDF
(OkdevTV) 2024년 10월 16일 개발 이야기
PDF
(독서광) 갈대 속의 영원 - 저항하고 꿈꾸고 연결하는 발명품, 책의 모험
PDF
(OkdevTV) 2024년 10월 2일 개발 이야기
PDF
(OkdevTV) 2024년 9월 2일 개발 이야기 - 좋은 리팩토링 vs 나쁜 리팩토링
PDF
[OkdevTV] 2024년 9월 2일 개발 이야기
PDF
[독서광] 프리세일즈 (Technical Presales) - 고객과 기업을 잇는 기술 대표
PDF
[OKdevTV] 2024년 8월 21일 개발 이야기
[독서광] 코드 넘어 회사보다 오래 남을 개발자
(독서광) 윌 라슨의 엔지니어링 리더십 - 테크 리더를 위한 성공 전략
[독서광] 모던 소프트웨어 엔지니어링 - 소프트웨어 개발의 복잡함과 난해함 속에서 길을 찾으려는 엔지니어를 위한...
(독서광) Azure OpenAI로 ChatGPT와 LLM 시스템 쉽고 빠르게 구축하기
(독서광) 이펙티브 소프트웨어 설계 - 실수와 트레이드오프로부터 배우는 현명한 소프트웨어 설계 가이드
(독서광) 지능의 기원 - 우리의 뇌 그리고 AI를 만든 다섯 번의 혁신
(독서광) 린 프로덕트 플레이북: 시장에서 살아남는 프로덕트를 개발하는 6단계 프로세스
(OkdevTV) 2025년 1월 8일 개발 이야기
(독서광) 2024년 12월 모두를 위한 소프트웨어 보안 설계와 구현
(OkdevTV) 2024년 12월 18일 개발 이야기
(OKdevTV) 2024년 12월 5일 개발 이야기
(독서광) 2024년 11월 선택 설계자들 - 어떻게 함정을 피하고 탁월한 결정을 내릴 것인가
(OkdevTV) 2024년 10월 30일 개발 이야기
(OkdevTV) 2024년 10월 16일 개발 이야기
(독서광) 갈대 속의 영원 - 저항하고 꿈꾸고 연결하는 발명품, 책의 모험
(OkdevTV) 2024년 10월 2일 개발 이야기
(OkdevTV) 2024년 9월 2일 개발 이야기 - 좋은 리팩토링 vs 나쁜 리팩토링
[OkdevTV] 2024년 9월 2일 개발 이야기
[독서광] 프리세일즈 (Technical Presales) - 고객과 기업을 잇는 기술 대표
[OKdevTV] 2024년 8월 21일 개발 이야기

[5분 따라하기] bash 타임아웃 패턴

  • 1. [5분 따라하기] bash 타임아웃 패턴 박재호(jrogue@gmail.com)
  • 2. 참고 자료 • <컴퓨터 vs 책> 블로그 • http://jhrogue.blogspot.com/ • OKdevTV 유튜브 방송 • 5분 따라하기 리스트: • https://www.youtube.com/playlist?list=PLdntWJk2tJPLKNNYBVCxnde2PEB6d zbSL • 슬라이드 셰어 • https://www.slideshare.net/jrogue/presentations • ASCIINEMA • https://asciinema.org/~jrogue
  • 3. 오늘 소개할 내용 • 배시(bash) 셸 스크립트에서 타임아웃을 걸 수 없을까? • 실행이 오래 걸리는 작업을 무작정 기다릴 수 없는 상황에서 사람이 스톱워 치 들고 개입을 해야 하나? • 외부 프로그램(watchdog)이 감시해서 제어하기에는 무겁지 않을까?
  • 4. bash에서 알고 넘어가야 하는 사항 • $$ • POSIX에서 $$는 원본 프로세스의 프로세스 식별자 • $BASHPID • 배시 하위 셸 내부의 프로세스 식별자 • & • 배경 프로세스로 동작 • KILL • 프로세스에 시그널 전송 • TERM: 종료 시그널(해당 프로세스의 시그널 처리기에서 잡을 수 있음) • KILL: 강제 종료 시그널(init에서 프로세스 종료) • 모든 시그널 유형 보기 • $ kill -l
  • 6. 스크립트 $ (cmdpid=$BASHPID; (echo $cmdpid; sleep 5; kill -TERM $cmdpid) & exec sleep 10) 10321 Terminated $ cat - > timeout.sh #!/bin/sh (cmdpid=$$; (echo $cmdpid; sleep 5; kill -TERM $cmdpid) & exec sleep 10) <CTRL+D> $ chmod +x timeout.sh $ ./timeout.sh 10329 Terminated 명령행에서 직접 실행 스크립트로 만든 다음에 실행