nohup 작업을 포그라운드로 가져오기

nohup 작업을 포그라운드로 가져오기

다음을 고려하세요nohup실행:

nohup script.sh > script.out &

터미널에서 로그오프하고 다시 연결한 후 프로세스를 다시 포그라운드로 가져오고 키보드를 사용하여 상호 작용할 수 있는 방법이 있습니까?

답변1

안돼터미널에서 명령 연결을 끊지 않고 스크립트를 무시하게 만듭니다.SIGHUP, 로그아웃 후에도 명령이 백그라운드에서 계속 실행될 수 있도록 stdout/stderr파일로 리디렉션됩니다 .nohup.out

nohup백그라운드에서 실행되는 명령을 자동으로 넣지 않습니다. 명령줄을 &.

$ nohup ./script.sh &
[1] 3390
$ nohup: ignoring input and appending output to ‘nohup.out’

jobs현재 실행 중인 작업과 해당 상태를 인쇄할 수 있습니다. 명령이 jobs이를 찾을 수 없으면 더 이상하위 프로세스그 껍질의.

$ jobs 
[1]+  Running                 nohup ./script.sh &

fg로 실행되더라도 bash를 사용하여 백그라운드 작업을 전경으로 되돌릴 수 있습니다 nohup. 하지만 그게 상황을 바꾸진 않을 거야출력 리디렉션(여전히 파일로 이동)nohup.out.

$ fg
nohup ./script.sh

쉘/터미널을 닫거나 로그오프하면 명령은 더 이상 해당 쉘의 하위 명령이 아닙니다. 에 속한다init프로세스. 검색하면 pstree이제 프로세스 1( )이 소유하고 있음을 알 수 있습니다 init. 전경이 더 이상 존재하지 않기 때문에 전경으로 다시 가져올 수 없습니다.

답변2

스크립트를 시작하고 터미널에 방해가 되는 출력 없이 스크립트를 실행한 다음 나중에 불러와서 상호 작용하려면 터미널 멀티플렉서를 살펴보는 것이 좋습니다. 귀하의 시스템에 따라 tmux또는 를 권장합니다 screen. 아래 링크에서 사용 방법에 대한 정보를 찾을 수 있습니다.

티먹스:

화면:

편집: tmux 프라이머에 대한 링크 추가

답변3

두 번째로 터미널 멀티플렉서를 사용하겠습니다. 하지만티먹스, 화면이 아닙니다. 모든 의도와 목적을 위해 화면은 유지 관리되지 않습니다. 그 구성은 어둠의 예술이며, 아마도 네크로노미콘의 부록에 처음 기록되었을 것입니다. 자신만의 구성을 작성하려고 시도하는 것은 Cthulu를 엿보는 것과 같습니다. 진지하게. 사람들의 주변을 둘러보세요.screenrc 파일. 확실히 화면의 구성 파일에 대한 혐오감을 중재하는 방법이 있습니다.뵤부필멸의 사용자와 부정한 코드 사이의 장막 역할을 하는 훌륭한 역할을 수행합니다. 감각적인 색상, 메뉴 인터페이스, 그리고 아마도 가장 중요한 것은 상태 표시줄이 함께 제공됩니다.

하지만 제가 말했듯이 저는 추천합니다티먹스대신에. 여전히 약간의 구성이 필요하지만잘 기록 된, 구성 파일은 횡설수설처럼 보이지 않습니다. 또한 색상과 상태 표시줄로 시작합니다. 내 screenrc 및 tmux.conf 파일을 비교하십시오.

답변4

&모든 Linux 명령은 마지막에 ' '를 추가하여 백그라운드로 보낼 수 있습니다 .

모든 백그라운드 작업을 보려면 다음을 실행하세요.jobs

jobs
[1]  + suspended  nohup sh zookeeper-server-start.sh ../config/zookeeper.properties
[2]    running    nohup sh kafka-server-start.sh ../config/server.properties
[3]  - running    nohup sudo mongod --dbpath=/var/lib/mongodb

여기에서는 사육사, kafka 및 mongo 데몬이라는 3가지 작업을 백그라운드에서 실행하고 있습니다. [1], [2] 및 [3]은 이러한 작업에 대한 각각의 작업 번호입니다.

다음을 사용하여 해당 작업을 전경으로 가져올 수 있습니다.fg %$taskNumber.

관련 정보