Tips - etc/Server Tips

Linux ( CentOS 혹은 Ubuntu 등 ) 에서 명령어를 백그라운드(Background)로 실행하기

Logger.one 2020. 5. 24. 22:26
반응형

 

 리눅스에서 간혹 특정 명령어 ( 고용량 다운로드, 데이터 처리, 데이터 복구 등 )를 반나절 혹은 하루 이상 유지해야 할 때가 있는데요. 
이때 해당 명령어를 백그라운드(Background)에서 SSH 접속이 끊어지더라도 유지시키는 방법입니다.

 

일단 명령어를 <COMMAND>라고 했을 때 기본 사용방법은 아래와 같으며

 

$ nohup <COMMAND> 1>/dev/null 2>&1 &

 

예를 들어 보자면 대충 아래와 같이 사용하시면 됩니다.

 

$ nohup mysql -uroot -pPASSWORD DB_NAME < /data/backup/db_backup.sql 1>/dev/null 2>&1 &

 

간단히 설명드리면 

 

nohup

명령어를 로그아웃 된 상태에서도 유지하도록 해줍니다. 예를 들어 SSH로 접속하여 실행 후 접속이 끊어진다고 해도 명령어가 실행됩니다.

 

mysql -uroot -pPASSWORD DB_NAME < /data/backup/db_backup.sql 

후에 포스팅하겠지만 Mysql에 백업된 sql 파일을 넣는 명령어입니다. 용량에 따라 시간이 다르지만 보통 GB~TB 단위면 하루는 거뜬히 걸립니다... ( 자고 일어나면 되어있겠지 )

 

1>/dev/null

일반 출력을 /dev/null로 보내 버립니다. nohup 사용 시 nohup.out 이 생성되는데 이것을 생성되지 않게 합니다.

 

2>&1

에러 출력을 1로 보내 보내 버립니다. 1을 /dev/null로 보냈으니 똑같이 2 ( 에러 메시지 ) 도 /dev/null로 보내 버립니다. - 결론은 일반 메시지와 마찬가지로 출력이 되지 않도록 합니다.

 

&

명령어를 백그라운드에서 실행하도록 합니다. nohup 와 같게 생각할 수도 있는데 &의 경우 백그라운드로 실행하지만 nohup 가 없을 경우 접속이 끊어질 경우 명령어도 같이 종료 되게 됩니다.

 

즐거운 개발 & 운영 되시기 바랍니다.

 

반응형