리눅스 작업을 하다보면 여러개의 프로세스를 동시에 실행 해야할 때가 있어요.
그럴때 유용하게 사용 할 수 있는 명령어가 바로 ‘nohup’ 이에요.
사용법은 너무 간단해서 따로 설명 할 것이 딱히 없지만 몇가지만 짚고 넘어갈께요.
nohup
nohup command arg …
기존에 command arg … 로 실행 했다면,
nohup command arg … 로 실행하면 됩니다 !
예를들어,
기존 명령어가 이렇게 되었다면, python exec.py
nohup을 적용하면 이렇게 되는거죠 ! nohup python exec.py
nohup.out
자, 그렇게 해서 nohup 으로 명령어를 실행하게 되면,
진행사항을 보기위해 내가 화면상에 찍어두었던 log들을 볼 수가 없는데요.
이럴때 log를 남겨주는 파일이 바로 nohup.out 파일 입니다.
해당 파일은 nohup 명령어를 실행 했을때와 똑같은 디렉토리에 생성이 되게 되며,
중간중간 실행이 될때마다 갱신이 되어 저장되므로
다른 작업 없이 열어서 보기만 하면 화면에 찍히는 log를 볼 수 있어요 !
cat nohup.out
해당 디렉토리로 옮겨간후에 cat nohup.out 을 해주시면 됩니다
그럼 이런식으로 제가 화면에 출력하고자 했던 log가 보여요.
kill process
이렇게 쭈욱 돌리다가 중간쯤에 error를 발견하고 nohup으로 걸어두었던
background 작업을 멈춰야 할때가 있어요 !
그럴때는 해당 nohup 이 돌고있는 process ID를 알아내서 Kill 해주면 된답니다.
ps -ef
ps -ef 명령어를 실행하면 현재 실행중인 프로세스들이 주르륵 뜨게되는데,
이중에서 내가 내린 명령어를 찾아주면 된답니다.
ps -ef 명령어 실행후 이전에 실행했던 python exec_test.py 프로세스를 확인해줍니다.
그다음 왼쪽에서 두번째 있는 숫자가 바로 process ID 입니다. 지금 같은 경우에는 10651이 되겠네요 !
ps -ef | grep “keyword”
만약 너무많은 명령어가 출력되어 내가 원하는 프로세스를 못찾겠다면 ?
그럴땐 grep으로 keyword를 검색할 수 있어요.
예를들어, python 프로세스만 보고싶다면 ps -ef | grep python 으로 명령어를 내려주면 되겠죠 !
우리가 원하는 10651를 찾았어요 !kill -9 PID
이 다음 할일은 해당 프로세스를 kill 해주는 일이에요.
여기서 -9 은 일종의 강제종료를 의미하는 인자랍니다.
우리의 경우는 kill -9 10651 을 입력하면 되겠네요 !