nohup에 대해서 이야기해 보도록 하겠습니다.
가장 처음 프로그램을 배울 때 hello world를 출력하게 되는데 이 프로그래밍이라고 하는 것이 터미널에 python helloworld.py를 입력한 뒤 콘솔 창에 'hello world!'가 출력되는 것을 보고 끝나고 맙니다. 그 뒤에 이어지는 프로그래밍 예제도 실행되는 형태는 대동소이합니다.
사실 우리가 만들고 싶은 서비스는 24시간 서버에서 돌아가며 많은 사람들이 접속하여 트래픽을 발생시키고 거기로부터 수익이 이어지는 모델인데 그런 서비스를 하는 방법에 대해서는 이야기하는 책은 별로 없습니다.
그게 너무 쉬워서일 수도 있고 아니면 너무나 많은 방법이 있어 일반화할 수 없어서 일지도 모르겠습니다.
오늘 이야기할 nohup은 터미널이 종료된 상태에서도 프로그램이 지속적으로 동작하게끔 작동하는 명령어입니다.
예를 들어 현재 test.py라는 프로그램을 실행하고자 하고 파일이 저장되어 있는 폴더에 위치하고 있다고 합시다. 아래의 명령어를 터미널에 입력하여 프로그램을 지속적으로 실행할 수 있습니다.
nohup python test.py 1 > test.out 2 > test.err&
1은 표준 출력을, 2는 표준 에러를 의미합니다. 즉 출력 로그를 파일에 기록하는데 에러는 따로 분리해서 test.out이라는 파일에 저장하라 라는 의미입니다.
마지막에 붙은 & 는 프로그램이 백그라운드에서 지속 실행하도록 합니다.
이제 프로그램을 실행하였으니 종료도 할 수 있어야겠죠? 단순히 Ctrl + C를 누른다고 해서 프로그램이 종료되지는 않습니다. 지금 시스템 백그라운드에서 열심히 돌아가고 있으니 어디서 돌아가는지를 찾아서 강제 종료해 보도록 하겠습니다.
시스템에서 돌아가는 모든 프로그램들을 각각의 pid라는 고유 아이디를 부여받습니다. 우리가 실행한 test.py도 pid를 부여받은 상태인데요. test.py의 pid를 찾기 위해서 다음의 명령어를 입력합니다.
ps -ef | grep test.py
이를 실행하면 test.py라는 이름으로 실행되는 프로그램의 pid를 확인할 수 있습니다.
만약 여기서 확인한 pid가 33456이라고 가정해 보겠습니다. 그럼 아래의 명령어로 해당 프로그램을 종료할 수 있습니다.
kill -9 33456
다시 한번 위의 명령어로 pid를 조회하면 더 이상 프로그램이 검색되지 않는 것을 확인할 수 있습니다.
'프로그래밍' 카테고리의 다른 글
[API] POSTMAN 사용하기 (0) | 2022.10.14 |
---|---|
[API] 인증 활용하기, OpenWeatherMap API (0) | 2022.10.12 |
API에 대해서 알아봅시다. (커피숍 비유) (0) | 2022.10.10 |
웹페이지 분석툴 시밀러웹(SimilarWeb) 사용법 (0) | 2022.10.02 |
[AWS] 탄력적 IP 설정 (0) | 2022.09.30 |
댓글