一寸大海 劫長之井

리눅스에서 콘솔이 종료 되어도 명령 실행 시키기. - nohup 본문

기타

리눅스에서 콘솔이 종료 되어도 명령 실행 시키기. - nohup

하느바람 2016. 8. 5. 15:54

리눅스 콘솔에서 명령을 실행 시킬 때,  백그라운드에서 실행을 시키고 싶을 때가 있습니다. 

이때 사용 되는 방식이 뒤에 & 를 찍는 방법과 nohup 을 쓰는 방법이 있습니다. 


일단 테스트를 위한 파이썬 프로그램을 만들어 봅시다. 

#!/usr/bin/python
# -*- coding: utf-8 -*-

import time
import datetime


def out(string):
print(string)
f = open(string, "w")
f.close()

s = datetime.datetime.now
s = "test"
for i in range(0, 10):
time.sleep(1)
out("%s__Counting_%d " % (s, i))
out("%s__Counting_Complete" % s)

간단한게 설명을 하면. 1초간격으로 열번씩 문자열을 표준출력에 출력하고, 동일 문자열로 파일을 생성하는 예제입니다. 

열번이 끝나면 Counting_Complete 라고 찍히게 됩니다.  (하지만 이유는 모르겠는데 중간에 생성되는 파일은 파일명이 깨지드라구요.)


1. 일반적인 실행법


python nohup.py 로 실행을 시키면 열한번의 텍스트가 출력 되는 것을 볼 수 있습니다. 

ls 로 파일을 확인하면 정상적으로 파일까지 생성 된 것을 알 수 있습니다. 


2. 백그라운드 실행 

python nohup.py &

로 실행을 하면, 표준출력이 표시 되는 도중에도 텍스트의 입력이 가능하며  ls 명령에도 반응을 하여 중간 파일이 표시 되는 것을 볼 수 있습니다. 

단 코드의 실행 중간에 콘솔을 종료 하는 경우! (다만 중간 스크린샷은 없습니다. 찍는거보다 종료가 빠르더군요.)

중간 까지 밖에 실행 되지 않고 중간 되는 것을 알 수 있습니다. 



3. nohup 을 사용 하는 경우. (참고 :  제타위키 -  http://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_nohup_%EC%82%AC%EC%9A%A9%EB%B2%95)

3-1 nohup 사용법. 

보기와 같이

nohup 명령어 [인자값]

으로 사용합니다. 

3-2 nohup python nohup.py 로 실행

표준 출력이 콘솔에 표시 되지 않았지만 파일은 정상적으로 출력 되는 것을 알 수 있습니다. 

없던 파일이 하나 있지요? nohup의 경우 표준출력이 콘솔로 표시 되지 않고 nohup.out 으로 출력 됩니다. 


3-3 nohup python nohup.py후 콘솔 종료. 

& 를 사용하는 경우와 다르게 콘솔이 종료 된 이후에도 열한개의 파일이 출력 되는 것을 볼 수 있습니다. 


'기타' 카테고리의 다른 글

bash 텍스트 컬러링에 대하여.  (0) 2016.10.13
Semantic Versioning 유의미적 버전관리.  (0) 2016.08.18
Comments