nohup 명령어 정리하기

곌로그·2023년 1월 31일
0

오늘은 내가 인공지능을 학습시킬 때, 유용했던 명령어를 소개해보고자 한다.
아무래도 인공지능 학습 시 시간이 대부분 오래 걸리기 때문에 서버와의 연결이 끊어지지 않고 몇 시간동안 잘 학습이 되어야 한다. 혹시라도 연결이 끊어진다면 ... 다시 시작해야하는 너무 가슴 아픈 일이 발생하니 이 nohup 명령어를 잘 기억해두자.

📄 nohup 명령어

    nohup 명령어는 no hang up의 약자이다. 즉, 직역을 해보면 "끊지마!" 라는 뜻이다.
사용자가 세션과의 연결을 끊더라도 지금 실행시키는 프로그램을 종료하지말아달라는 명령어이다.

사용법
   실행하고자 하는 프로그램 명령어 앞에 nohup이라는 명령어만 붙여주면 된다.

>> nohup ./myscript.sh

    위의 코드를 실행하면 myscript.sh는 세션이 끊기더라도 프로그램이 종료되지 않으며 "nohup:appending output to 'nohup.out'" 이라는 메세지가 출력된다. 그리고 nohup을 실행시킨 경로에 nohup.out으로 출력들이 저장된다.
 📌이때, 주의해야할 점은 nohup으로 실행시킬 파일은 반드시 755 permission을 가지고 있어야 한다.



  🔎 nohup의 표준 출력을 다른 파일에 출력하고 싶어!
    위와 다르게 내가 원하는 파일에 표준 출력을 하고싶다면 리눅스의 > 명령어를 활용하면 된다.

>> nohup ./myscript.sh > my_output.out

   만약, 어떤 출력도 남기고 싶지 않다면 다음과 같은 코드를 실행해주면 된다.

>> nohup ./myscript.sh >/dev/null

  🔎 프로그램을 백그라운드로 실행하고 싶어!
  & 를 명령어 가장 마지막에 붙여주면 실행시키는 프로그램이 백그라운드로 실행이 된다.

>> nohup ./myscript.sh &

    아래 명령어를 사용하면 내가 백그라운드로 실행시킨 프로그램이 백그라운드에서 잘 돌아가고 있는지     확인할 수 있다.

>> ps -ef | grep myscript.sh

nohup 명령어와 &의 차이점은 무엇일까?

  • nohup 명령어는 데몬의 형태로 실행시키기 때문에 세션과의 연결이 끊어져도 프로그램이 종료되지 않는다.

  • & 명령어는 사용자의 눈에서 보이지 않게 단순히 백그라운드로 실행시켜주는 명령어이다.

  🔎 프로세스 종료를 하고 싶어!
  만약, 프로그램을 그만 실행시키고 싶을 때는 ps 명령어를 활용해 프로세스의 아이디를 알아내고, kill 명령어로 프로세스를 종료시키면 그만이다.

# 프로세스 아이디 출력
>> ps - ef | grep myscript.sh

# 프로세스 종료
>> kill -9 [ 프로세스 아이디 ]

0개의 댓글