2023. 5. 6. 23:16ㆍ컴퓨터/자료
Linux 를 사용할 때 서버 컴퓨터를 ssh 프로그램을 통하여 접속하여 사용하곤 한다.
이 과정에서 오랜 시간동안 작동시켜야 하는 스크립트나 프로그램을 원격으로 실행할 때, ssh 접속 중인 클라이언트가 종료되면 그 동시에 그 작업이 종료되곤 한다.
10시간이 넘는 작업, 만약 VPN 1회 사용 시간 제약이 있는 특수한 환경이라고 한다면 원격으로 작업하기에는 정말 비효율적이다.
따라서, 이런 상황에서 필수적인 Linux 소프트웨어가 있는데, 그 이름은 바로 nohup 이다.
바로 사용하는 방식을 설명하겠다.
크게 나누어보자면,
1. 쉘스크립트 파일 권한 설정
2. nohup 실행
3. exit
+) 종료 후 확인하는 방식
이다.
-1-
일단, 실행할 script.sh 이있다고 하자. 만약, 명령어를 넣고 싶다면 script.sh 파일 안에 명령어를 집어넣고 저장하는 방식으로 진행하자.
그리고나서 script.sh 의 파일 권한 설정을 진행한다.
$ chmod 755 script.sh
-2-
그 이후 nohup 을 실행한다.
$ nohup ./script.sh 1 > /dev/null 2 > /dev/null &
일단, script.sh 부분은 ./ 를 빼먹으면 안 된다. 전체 PATH 를 넣어주거나 ./ 를 통하여 PATH 를 설정하도록 하자.
그리고, 1 번의 경우 표준 출력이고, 2 번의 경우 오류 출력이다.
일단, 위 명령어의 경우 아예 출력하지 않는 방식으로 써놓은 것인데, 만약 파일로 저장하고 싶다면 /dev/null 를 /home/{user_name}/script.out 또는 .err 으로 수정하여 실행하도록 한다.
마지막에 & 를 붙이는 것은 백그라운드로 실행하겠다는 의미이다.
-3-
전부 실행이 되었다면 그 세션에서는 얌전히 exit 명령어를 호출하여 종료하도록 한다.
만약 세션을 유지하고 싶다면 종료했다가 다시 연결하는 방법이 가장 깔끔하다.
-4-
종료 후 확인하는 방식은 다음과 같다.
- Process List 를 통해 확인하기
$ ps -ef | grep script.sh
해당 명령어를 통해 실행 중인 프로세스를 확인할 수 있다.
만약 종료하고 싶다면 kill -9 {process_number} 를 통해 진행하도록 하자.
- Log 를 통해 확인하기
$ vi -R script.out script.err
현재 진행되고 있는 내용을 readonly 버전으로 열어 확인하게 된다.
의도한대로 출력이 진행되고 있는지를 확인할 수 있다.
위 방식을 토대로 nohup 을 이용하여 원활한 ssh 프로토콜을 활용하도록 하자.
내용은 여기까지입니다. 감사합니다. 피드백 언제나 환영입니다. 댓글 부탁드려요!
'컴퓨터 > 자료' 카테고리의 다른 글
Github 프로젝트(repository) 채팅방 (0) | 2020.08.16 |
---|---|
Github build passing, coverity passed (0) | 2020.08.16 |
Git Fetch Pull 차이점, Rebase Merge 차이점 (0) | 2020.08.08 |
오픈소스 목록 볼 수 있는 사이트 (0) | 2020.08.08 |
계수, 멱지수, 차수, 항, 다항식 영어로 무엇? (0) | 2020.04.18 |