SSH 연결이 끊어지고 실행 중인 쉘 스크립트도 중단됩니다.

배경

최근 chatGLM을 훈련하고 있는데 훈련하는데 2시간 가까이 걸리는 경우가 많은데, 불안정한 네트워크로 인해 SSH 연결이 이유 없이 끊어지는 경우가 많아 훈련을 다시 시작해야 하는 시간낭비입니다.
여기에 이미지 설명을 삽입하세요.

해결책

백그라운드에서 명령을 실행하는 방법을 알려드리겠습니다. ssh 연결이 끊어져도 백그라운드에서 쉘 스크립트가 자동으로 실행됩니다!

백그라운드 실행

먼저, 백그라운드에서 셸 명령을 실행하고 출력을 파일로 인쇄하려면 리디렉션 기호 ">"를 사용하여 출력을 파일로 리디렉션할 수 있습니다. 예를 들어, "command.sh"라는 쉘 스크립트가 있다고 가정하면 다음 명령을 사용하여 백그라운드에서 이를 실행하고 "output.txt"라는 파일에 출력을 인쇄할 수 있습니다.

nohup command.sh > output.txt 2>&1 &  

이 명령은 다음을 의미합니다.

  • nohup: 백그라운드에서 명령을 실행하는 데 사용됩니다.
  • command.sh: 실행할 쉘 스크립트의 이름입니다.
  • > output.txt: 명령 출력을 "output.txt"라는 파일로 리디렉션합니다. 파일이 없으면 새 파일이 생성되고, 파일이 이미 있으면 새 출력이 파일 끝에 추가됩니다.
  • 2>&1: 명령의 오류 출력도 파일에 인쇄되도록 표준 오류(2)를 표준 출력(1)과 병합합니다.
  • &: 실행을 위해 명령을 백그라운드에 둡니다.

로그 보기

"output.txt" 파일의 내용을 보려면 tail다음 명령을 사용하면 됩니다.

tail -n 100 output.txt  

이 명령의 의미는 "output.txt" 파일의 끝부터 100줄의 내용을 표시한다는 것입니다. tail명령의 옵션은 -n표시할 줄 수와 -f표시할 파일 이름을 나타냅니다.

일반적으로 백그라운드에서 실행되는 프로그램은 어떠한 정보도 출력하지 않지만, tail 명령어를 사용하면 실시간으로 포그라운드에서 출력되는 로그를 볼 수 있습니다.

추천

출처blog.csdn.net/chy555chy/article/details/132168604