Computer >> 컴퓨터 >  >> 스마트폰 >> Linux

Linux에서 nohup을 사용하여 백그라운드에서 프로세스를 실행하는 방법

이 가이드에서는 'nohup' 명령을 사용하여 백그라운드에서 프로세스를 실행하여 로그아웃하거나 연결이 끊긴 경우에도 계속 실행되도록 하는 방법을 보여줍니다.

저는 원격 서버에서 많이 일합니다. SSH를 사용하여 서버에 연결합니다. SSH 연결을 닫은 후에도 실행해야 하는 프로세스를 자주 실행합니다. 이것은 내 로그 파일 또는 매우 큰 mysql 데이터베이스 복원을 통해 구문 분석하는 셸 스크립트일 수 있습니다. 그때 "nohup"이라는 Linux 명령줄 유틸리티를 사용합니다. "Nohup"은 "No hangup"의 줄임말로 "전화 끊기 신호 무시"로 번역됩니다. "전화 끊기" 신호는 로그아웃할 때 발생합니다. "nohup"이 하는 일은 서버에 로그인하고, 프로세스를 시작하고, 로그아웃할 수 있도록 하는 것입니다. 로그아웃한 후에도 프로세스가 계속 실행됩니다. 다시 로그인하면 여전히 실행 중인 프로세스에 다시 액세스할 수 있습니다.

"nohup"의 기본 구문은 다음과 같습니다.

# nohup [명령] &

"[command]"를 쉘 스크립트의 이름 또는 명령으로 바꾸십시오. 끝에 "&"는 명령 또는 스크립트가 백그라운드 프로세스로 실행되도록 합니다. 다음은 원격 서버에서 대규모 mysql 데이터베이스를 백업하기 위해 "nohup"을 사용하는 방법의 예입니다. 먼저 SSH를 사용하여 원격 서버에 로그인합니다.

# ssh [email protected]

그런 다음 명령 앞에 "nohup"을 추가하고 명령 뒤에 "&"를 추가하여 "nohup" 모드에서 "mysqldump -ucalvin -phobbes largedatabase> largedatabase.db" 명령을 실행합니다.

# nohup mysqldump -ucalvin -phobbes largedatabase> largedatabase.db &
[1] 3999
# nohup:`nohup.out'에 출력 추가

두 줄의 출력이 나타납니다. 첫 번째 줄의 "3999"는 내가 방금 생성한 프로세스의 프로세스 ID이고 "nohup:`nohup.out'에 출력 추가""는 일반적으로 터미널에 오는 출력이 다음으로 전달됨을 의미합니다. 명령을 실행한 디렉토리에 "nohup.out"이라는 파일이 있습니다. 프로세스 ID를 사용하여 실행 중인 모든 프로세스를 검색하여 프로세스가 아직 실행 중인지 확인할 수 있습니다.

# ps -ef | grep 3999
캘빈 3999 29848 0 18:42 ? 00:00:00 /usr/bin/mysqldump
calvin 6575 31852 0 18:44 pts/2 00:00:00 grep 3999

프로세스 실행이 완료되면 명령줄에 다음과 같은 출력이 표시됩니다.

[1]+ 완료 nohup mysqldump -ucalvin -phobbes largedatabase> largedatabase.db

"nohup.out" 파일을 확인하여 프로세스가 실행되는 동안 출력된 오류 또는 기타 메시지를 확인할 수 있습니다. 파일이 비어 있으면 괜찮습니다. 프로세스가 실행되는 동안 메시지가 출력되지 않았음을 의미합니다.

이제 백그라운드에서 프로세스를 실행하는 방법을 알았으므로 몇 가지 다른 Linux 팁과 트릭을 배우지 않겠습니까?