본문 바로가기
CODE/Python

[python] 백 그라운드에서 파일 실행 시켜 놓기 nohup

by Nuridal_class 2024. 11. 11.
728x90
728x90

오늘은 리눅스 환경에서 내가 작성한 코드를 실행시켜놓고 다른 작업을 해야 하거나 확인을 해야 할때

백그라운드로로 실행시키는 방법에 대해서 알아보겠습니다.

 

 nohup 란?

no hang up의 약자로 세션이 종료되어도 명령어가 계속 실행되도록 해주는 명령어입니다!
즉, 터미널을 꺼 놓으면 원래는 종료가 되던 명령어들이 계속 실행된다는 말이죠!

 

사용방법

그렇다면 바로 테스트를 해보기 위해서 간단하게 filename.py 파일을 만들어 줍니다.
5초마다 test 중입니다 라는 문구가 뜨게끔 만든 간단한 코드입니다.
import time

while True:
    print('test 중입니다')
    time.sleep(5)

 

 실행 명령어

nohup python filename.py &
명령어는 위에와 같이 사용하는데 여기에서 옵션이 존재합니다.
-u : 출력을 버퍼링 없이 실시간으로 표시하도록 해주는 옵션
& : 옵션은 아니지만 이 명령어를 백그라운드에서 실행하도록 한다라는 문구

실행시켜 보면 [1] 1571880이라고 뜨면서 실행이 되는 걸 볼수 있고 nohup.out이라는 로그파일이 만들어집니다.

 

 로그 파일 지정 실행 명령어

nohup python -u filename.py > 로그파일명 2>&1 &
하지만 나는 내가 정한 이름으로 로그파일을 보고 싶다 하면 위에 명령어대로 하면 됩니다.
2>&1 : 에러 메세지를 로그파일명의 파일에 그대로 넣겠다는 명령어입니다.

 

 로그 파일 보기

cat 로그파일명
tail -f 로그파일명
cat은 파일을 전체적으로 보겠다
tail 는 파일의 끝 부분을 출력하겠다
-f 는 파일의 변화가 있을 때마다 실시간으로 업데이트된 내용을 출력
이며 필요에 따라서 사용하시면 되겠습니다.

 

 파일 종료시키기

ps -ef | grep filename.py
kill {your ProcessId}
마지막으로 실행되어 있는 파일을 삭제하는 방법인데 위에서 아래로 코드를 실행시켜 주시면 됩니다.
위에 명령어를 실행하면 아래의 사진과 같이 뜹니다.

사진을 보면 위에 출력문구는 실행되고 있는 파일을 보여줍니다.
아래줄 출력문구는 내가 grep한 명령어를 보여줍니다.

그러면 이제 kill 1571880 -> processId를 뜻하기 때문에 이와 같이 명령어를 써줍니다. 

그렇다면 종료되었고 다시 grep 명령어를 썼을때 보이지 않게 됩니다.

이번에는 리눅스 환경에서 파일을 백그라운드로 돌리는 방법에 대해서 알아보았습니다.

조금이나마 도움이 되길 바라면서!

728x90
300x250