본문 바로가기

IT

[LINUX] 파일복사(cp) 세션아웃 되어도(ssh) 백그라운드 실행 하기

반응형



Linux 에서 파일을 복사 할 때 cp 를 자주 사용하고 복잡하고 반복적인 작업 필요 시, rsync 등을 사용하기도 한다.
그런데, 아래 경우 처럼 복사가 필요할 때가 있다.
1. 대용량(100gb 이상) 파일을 원격지에 복사 필요 하다.
2. ssh 등 터미널 세션이 보안상 30분이나 1시간 이내에 강제로 끊어지도록 설정되어 있다.
라면, 고민이 될 수 있다.
복사 중 세션이 끊어지면 해당 유저가 실행중인 명령어도 취소가 될테니 말이다.
 
즉, cp를 이용하여 복사중인데 세션이 끊어져 그동안 복사한것이 취소될까봐 걱정되거나
안정적으로 완료되길 원하는 사용자를 위한 글이다.
결론적으로, 백그라운드 실행 하여 정상완료되도록 설정하면되나 초보자라면 백그라운드 실행 이라는 개념자체가 없을 수 있다.
 
아래 처럼 실행하면 abc.zip 파일이 tmp 위치로 복사 될 것이다.

cp abc.zip /tmp/abc.zip

 
그런데, 너무 오래걸린다. 자리를 비울수도 있고(퇴근) 세션이 끊길것 같다.
백그라운드로 계속 실행되도록 하자. ctrl+Z 하면 백그라운드로 전환되고, shell 로 돌아온다.
이때 명령은 중지가 되어서 계속 실행되도록 해야 한다.

ctrl + z
[1] Stopped cp abc.zip /tmp/abc.zip

이때 bg 명령어를 입력하면 백그라운드로 실행을 계속 한다.

bg
[1]+ cp abc.zip /tmp/abc.zip

이렇게 해도, 세션이 끊기고 유저가 logout 되면(ssh 보안설정등으로 강제 logoff 될경우)
유저와 연결된 프로세스들도 강제로 종료 된다.
이를 방지 하기 위해 diown 명령어로 유저의 프로세스 소유를 끊어 주면,

disown -h

된다.
 
다만 이미 예정된 작업으로 처음부터 백그라운드로 실행하고 싶다면,

nohup cp abc.zip /tmp/abc.zip &

처럼 nohup 으로 터미널이 종료되어도 프로그램이 종료되지 않도록 하고 & 으로 백그라운드로 실행되도록 한다.
 
서두에 언급했듯이 실행 중 갑자기 백그라운드로 전환하거나, 로그오프 되도 완료되도록 함이 목적이다.

반응형