기계적 인조 인간

리눅스 nohup 명령

PHP - Send Shell Commands with shell_exec()

PHP - Send Shell Commands with shell_exec()

차례:

Anonim

nohup 명령은 인수로 지정된 다른 프로그램을 실행하고 모든 SIGHUP (hangup) 신호를 무시합니다. SIGHUP 은 제어 터미널이 닫힐 때 프로세스로 전송되는 신호입니다.

일반적으로 SSH를 통해 프로그램을 실행할 때 연결이 끊어 지거나 로그 아웃하면 세션이 종료되고 터미널에서 실행 된 모든 프로세스가 중지됩니다. 이것은 nohup 명령이 유용한 곳입니다. 모든 중단 신호를 무시하고 프로세스가 계속 실행됩니다.

nohup 명령을 사용하는 방법

nohup 명령의 구문은 다음과 같습니다.

nohup COMMAND

이 명령은 표준 --help --version 제외한 다른 옵션을 허용하지 않습니다.

다음 예제를 보자.

nohup mycommand

nohup: ignoring input and appending output to 'nohup.out'

nohup 은 포 그라운드에서 mycommand 명령을 실행하고 명령 출력을 nohup.out 파일로 경로 재 지정합니다. 이 파일은 현재 작업 디렉토리에 작성됩니다. 명령을 실행하는 사용자에게 작업 디렉토리에 대한 쓰기 권한이 없으면 파일이 사용자의 홈 디렉토리에 작성됩니다.

로그 아웃하거나 터미널을 닫으면 프로세스가 종료되지 않습니다.

백그라운드에서 명령 실행

포 그라운드에서 nohup 을 사용하는 것은 명령이 완료 될 때까지 쉘과 상호 작용할 수 없으므로 매우 유용하지 않습니다.

백그라운드에서 명령을 실행하려면 명령 끝에 & 기호를 추가하십시오.

nohup mycommand &

출력에는 쉘 작업 ID (괄호로 묶음) 및 프로세스 ID가 포함됩니다.

25177

fg 명령을 사용하여 작업 ID를 사용하여 명령을 포 그라운드로 가져올 수 있습니다.

어떤 이유로 프로세스를 종료하려면 kill 명령 다음에 프로세스 ID를 사용하십시오.

kill -9 25132

출력을 파일로 리디렉션

기본적으로 nohup 은 명령 출력을 nohup.out 파일로 리디렉션합니다. 출력을 다른 파일로 경로 재 지정하려면 표준 쉘 경로 재 지정을 사용하십시오.

예를 들어 표준 출력 및 표준 오류를 mycommand.out 으로 리디렉션하려면 다음을 사용하십시오.

nohup mycommand > mycommand.out 2>&1 &

표준 출력 및 표준 오류를 다른 파일로 리디렉션하려면

nohup mycommand > mycommand.out 2> mycommand.err &

대안

터미널을 닫거나 연결을 끊을 때 명령이 종료되는 것을 방지하기 위해 사용할 수있는 대체 프로그램이 몇 가지 있습니다.

화면

Screen 또는 GNU Screen은 화면 세션을 시작하고 해당 세션 내에서 여러 창 (가상 터미널)을 열 수있는 터미널 멀티플렉서 프로그램입니다. 화면에서 실행중인 프로세스는 연결이 끊어져도 해당 창이 보이지 않으면 계속 실행됩니다.

툭스

Tmux는 GNU 화면의 현대적인 대안입니다. Tmux를 사용하면 세션을 생성하고 해당 세션 내에서 여러 창을 열 수도 있습니다. Tmux 세션은 영구적이므로 터미널을 닫아도 Tmux에서 실행중인 프로그램이 계속 실행됩니다.

자기 것이 아니라고 말하다

disown 은 쉘의 작업 제어에서 쉘 작업을 제거하는 쉘 내장 기능입니다. nohup 과 달리 실행중인 프로세스에서도 disown 을 사용할 수 있습니다.

결론

nohup 사용하면 터미널을 로그 아웃하거나 종료 할 때 명령이 종료되는 것을 방지 할 수 있습니다.

노 h 터미널