리눅스에서 간혹 특정 명령어 ( 고용량 다운로드, 데이터 처리, 데이터 복구 등 )를 반나절 혹은 하루 이상 유지해야 할 때가 있는데요.
이때 해당 명령어를 백그라운드(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 가 없을 경우 접속이 끊어질 경우 명령어도 같이 종료 되게 됩니다.
즐거운 개발 & 운영 되시기 바랍니다.
'Tips - etc > Server Tips' 카테고리의 다른 글
Linux 에서 파일 혹은 디렉토리 압축하기 (0) | 2024.09.14 |
---|---|
Linux 에서 파일 혹은 디렉토리 압축하기 (0) | 2020.05.24 |