output-file2>error-file]& 매개변수의 의미는 다음과 같습니다. COMMAND: 수행해야 하는 명령 또는 스크립트 백그라운드에서 실행됩니다. ARGS: 명령이나 스크립트에 대한 인수입니다. > 출력 -"> Linux에서 nohup 명령을 사용하는 방법-리눅스 운영 및 유지 관리-php.cn

Linux에서 nohup 명령을 사용하는 방법

PHPz
풀어 주다: 2023-05-12 08:52:10
앞으로
3747명이 탐색했습니다.

nohup이란 무엇입니까

nohup는 Linux 및 Unix 시스템의 명령으로, 터미널이 종료될 때 프로세스가 백그라운드에서 계속 실행되도록 하는 것입니다. 정식 명칭은 "No Hang Up"인데, 이는 "No Hang Up"을 의미합니다.nohup명령을 사용하면 터미널을 종료하거나 SSH 연결을 닫은 후에도 명령을 계속 실행할 수 있습니다.nohup是Linux和Unix系统中的一个命令,其作用是在终端退出时,让进程在后台继续运行。它的全称为“no hang up”,意为“不挂起”。nohup命令可以让你在退出终端或关闭SSH连接后继续运行命令。

nohup语法规则

nohup命令的基本语法如下:

nohup COMMAND [ARGS ...] [> output-file 2> error-file] &
로그인 후 복사

其中的参数含义如下:

  • COMMAND:需要在后台运行的命令或脚本。

  • ARGS:命令或脚本的参数。

  • > output-file:输出重定向到指定的文件中。

  • 2> error-file:错误信息重定向到指定的文件中。

  • &:将命令放在后台运行。

nohup命令的执行过程分为以下几个步骤:

  • nohup命令将当前shell的标准输入、标准输出和标准错误输出全部重定向到/dev/null设备中,避免被关闭终端的信号所中断。

  • nohup命令将进程放到后台执行,并将进程的PID输出到终端。

  • 进程开始执行,并将标准输出和标准错误输出重定向到指定的文件中。

  • 用户可以退出终端或关闭终端窗口,进程仍然在后台运行。

nohup使用方法

使用nohup命令非常简单,按照上面的基本语法即可。以下是一些nohup命令的用法示例:

后台运行命令

要在后台运行命令,只需要在命令行中输入以下命令即可:

nohup COMMAND &
로그인 후 복사

例如,在后台运行一个Bash脚本:

nohup bash test.sh &
로그인 후 복사

标准输出重定向到文件

nohup bash test.sh > stdout.txt &
로그인 후 복사

标准错误输出重定向到文件

nohup bash test.sh 2> stderr.txt &
로그인 후 복사

将标准输出和标准错误输出都重定向到文件

1. 重定向到同一文件

nohup bash test.sh > output.txt 2>&1 &
로그인 후 복사

2. 重定向到不同文件

nohup bash test.sh > stdout.txt 2> stderr.txt &
로그인 후 복사

3. 一个更为复杂的例子,重定向标准输入(stdin):

nohup ./myprogram > foo.out 2> foo.err < /dev/null &
로그인 후 복사

这里多出来一个< /dev/null,意思是将标准输入重定向到/dev/null,以确保程序不会从标准输入中读取任何数据。

这个是为了解决一个实际问题:SSH会话常常拒绝注销(或者挂起),因为它不愿意去丢失与后台job(s)进行交互的数据。当遇到这个问题的时候,可以使用上面的命令,通过三次重定向来解决。

nohup后台进程管理

使用jobs命令可以查看当前 shell 中后台运行的任务列表,包括任务编号、状态和命令。

例如,我们在后台执行一个sleep 1000命令,使用jobs命令查看:

$ jobs [1]+ Running nohup sleep 1000 &amp;
로그인 후 복사

其中,方括号中的数字表示任务编号,加号或减号表示任务的优先级,Running表示任务正在后台运行。除此之外,还有其他可能的状态,包括Stopped(已停止)、Done(已完成)等。

我们还可以使用fg命令将一个后台任务移动到前台继续运行,例如:

$ fg %1
로그인 후 복사

这个命令会将任务编号为 1 的任务移动到前台,继续执行。如果希望将任务暂停或恢复,可以使用Ctrl-Z键,在当前 shell 中发送SIGTSTP信号。

$ fg %1 nohup sleep 1000 ^Z [1]+ Stopped nohup sleep 1000
로그인 후 복사

此时如果想要恢复运行,可以使用bg命令:

$ bg %1 [1]+ nohup sleep 1000 &amp;
로그인 후 복사

如果想要杀死该任务,可以使用kill命令:

$ kill %1 [1]+ Terminated nohup sleep 1000
로그인 후 복사

如果你想杀死所有后台任务,但是又觉得一个个地比较麻烦,可以使用disown命令来解决:

$ disown -a
로그인 후 복사

这个命令可以杀死所有后台任务,但不会有任何提示,你可以通过jobs

nohup 구문 규칙nohup 명령의 기본 구문은 다음과 같습니다. rrreee매개변수의 의미는 다음과 같습니다.
  • COMMAND: 필수 백그라운드에서 실행되는 명령 또는 스크립트입니다.
  • ARGS: 명령 또는 스크립트의 매개변수.
  • > 출력 파일: 출력을 지정된 파일로 리디렉션합니다.
  • 2&gt; error-file: 오류 메시지가 지정된 파일로 리디렉션됩니다.
  • &: 백그라운드에서 명령을 실행합니다.
nohup 명령 실행 과정은 다음 단계로 나뉩니다.
  • nohup 명령은 현재 표준 입력과 표준 출력을 변경합니다. 터미널을 닫는 신호로 인해 중단되는 것을 방지하기 위해 쉘 및 표준 오류 출력은 모두/dev/null장치로 리디렉션됩니다.
  • nohup 명령은 실행을 위해 프로세스를 백그라운드에 두고 프로세스의 PID를 터미널에 출력합니다.
  • 프로세스가 실행을 시작하고 표준 출력 및 표준 오류 출력을 지정된 파일로 리디렉션합니다.
  • 사용자는 터미널을 종료하거나 터미널 창을 닫을 수 있으며 프로세스는 계속 백그라운드에서 실행됩니다.
nohup 사용 방법nohup 명령 사용은 매우 간단합니다. 위의 기본 구문을 따르면 됩니다. 다음은 nohup 명령의 몇 가지 사용 예입니다.

백그라운드에서 명령 실행

백그라운드에서 명령을 실행하려면 명령줄에 다음 명령을 입력하세요. rrreee예를 들어, 백그라운드에서 Bash 스크립트 실행 :rrreee

표준 출력을 파일로 리디렉션

rrreee

표준 오류 출력을 파일로 리디렉션

rrreee

표준 출력과 표준 오류 출력 모두 리디렉션 파일로

1. 동일한 파일로 리디렉션rrreee2. 다른 파일로 리디렉션rrreee3. 더 복잡한 예는 표준 입력(stdin)을 리디렉션합니다. code>< /dev/null은 프로그램이 표준 입력에서 데이터를 읽지 않도록 표준 입력을 /dev/null로 리디렉션하는 것을 의미합니다. 이것은 실질적인 문제를 해결하기 위한 것입니다. SSH 세션은 백그라운드 작업과 상호 작용하는 데이터를 잃지 않기 때문에 종종 로그아웃(또는 중단)을 거부합니다. 이 문제가 발생하면 위 명령을 사용하여 세 번 리디렉션하여 문제를 해결할 수 있습니다.

nohup 백그라운드 프로세스 관리

jobs명령을 사용하면 작업 번호, 상태 및 명령을 포함하여 현재 셸의 백그라운드에서 실행 중인 작업 목록을 볼 수 있습니다. 예를 들어 백그라운드에서 sleep 1000명령을 실행하고 jobs명령을 사용하여 다음을 확인합니다. rrreee 그중 대괄호 안의 숫자는 작업을 나타냅니다. 숫자, 더하기 또는 빼기 숫자는 작업의 우선순위를 나타내고 실행 중은 작업이 백그라운드에서 실행 중임을 나타냅니다. 또한 중지됨(중지됨), 완료(완료됨) 등 다른 가능한 상태도 있습니다. 또한 fg명령을 사용하여 백그라운드 작업을 전경으로 이동하여 계속 실행할 수 있습니다. 예: rrreee이 명령은 작업 번호 1이 있는 작업을 전경으로 이동하고 실행을 계속합니다. . 작업을 일시 중지하거나 재개하려면 Ctrl-Z키를 사용하여 현재 셸에서 SIGTSTP신호를 보낼 수 있습니다. rrreee지금 작업을 재개하려면 bg명령을 사용하면 됩니다. rrreee작업을 종료하려면 kill을 사용하면 됩니다. 명령: rrreee모든 백그라운드 작업을 종료하고 싶지만 하나씩 수행하는 것이 번거롭다면 disown명령을 사용하여 문제를 해결할 수 있습니다. rrreee이 명령 모든 백그라운드 작업을 종료할 수 있지만 jobs명령으로 이를 확인할 수 있습니다.

위 내용은 Linux에서 nohup 명령을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!