어디에 쓸까 고민하다가 그냥 파이썬 카테고리에 씁니다.
스크립트와 관련된 거라서..
해당 글에서는 사용법만 알려드립니다.
명령어가 어떤 의미를 가지는지, 이걸 어떻게 응용할 수 있는지에 대해서는 작성하지 않았습니다.
1. 왜 필요한데?
- 리눅스, 유닉스, 맥에서 백그라운드로 작업을 돌리는 경우가 빈번해져서 정리를 해야 할 때가 온 것 같습니다.
- 정말 간단한 알고리즘은 그냥 보통 Run 버튼을 눌러서 바로 결과가 나오는데 반해, 인공지능과 관련된 프로그램은 하루 이틀로 안 끝나는 경우가 대다수입니다.
- 최근에 돌린 모델의 경우 3일 하고도 20시간이나 걸렸는데, 이 시간 동안 컴퓨터를 계속 켜고 있는 것은 말이 안 되죠..
- nohup, & 은 스크립트를 무려 백그라운드로 돌려줍니다.
2. nohup
- nohup은 "no hang up"의 줄임말로, 작업을 백그라운드에서 실행시키고 현재 터미널 세션과 연결을 끊어도 작업이 계속 실행되도록 보장합니다.
- nohup을 사용하여 실행한 작업은 로그아웃 후에도 계속해서 실행됩니다. 이는 nohup이 작업을 실행할 때 SIGHUP 시그널을 무시하기 때문입니다.
- nohup 명령어를 사용하여 실행한 작업은 출력을 파일에Redirection 하여저장할 수 있습니다. 이를 통해 작업의 출력을 추적하거나 필요할 때 검토할 수 있습니다.
- 한 번 예시를 봅시다.
%test.py
import time
print('hello world')
time.sleep(5)
print('wake up!')
- 이런 코드가 있을 때, nohup python test.py를 실행하면 백그라운드로 작업을 돌립니다.
- 출력은 nohup.out이라는 파일이 생성되어 그곳에서 출력됩니다.
- 만약 nohup.out이 아닌 다른 곳에 출력하고 싶다면 어떻게 해야 할까요?
nohup python test.py > log.out 2>&1
- 이런 방식으로 사용합니다. log.out 파일은 기존에 생성되어 있어야 합니다.
- 만약 출력하고 싶지 않다면
nohup python test.py 1>/dev/null
- 위의 명령어를 사용하면 됩니다.
3. &
- & 또한 명령어가 백그라운드에서 실행하도록 합니다.
- nohup과 차이점은 터미널에 계속 다른 것을 입력할 수 있다는 점입니다.
- 단 이는 사용자가 로그아웃을 한다면 프로그램도 함께 종료됩니다.
- 그렇기 때문에 보통 nohup과 &를 같이 사용합니다.
nohup python test.py &
- 이렇게 하면 작업이 안정적으로 백그라운드에서 실행됩니다.
'프로그래밍 언어 > Python' 카테고리의 다른 글
[Python] Vscode에서 python type hint가 자꾸 보일 때 (11) | 2022.12.01 |
---|---|
[Python] Instance의 Import에 관한 글 (0) | 2022.11.22 |
[Vscode] Python Function annotation Theme is not Working (VScode에서 파이썬 타입 어노테이션, 함수 어노테이션, 타입 힌팅에 테마가 적용되지 않는 문제 해결법) (5) | 2022.06.12 |
[Python] Python의 삼항연산자 (Python's Ternary operators) (0) | 2022.06.11 |
[Python] namespace와 함수 (전역변수의 참조와 변경, 그리고 오류가 나는 이유) (0) | 2022.05.07 |