때로는 그놈 터미널에서 앱을 실행하지만 갑자기 그놈이나 무언가를 다시 시작해야합니다. 질문에 대한 답변도 유용하다고 생각되면 무언가 일어나고있는 SSH에서 연결을 끊고 싶습니다.
그놈의 터미널 트리는 다음과 같습니다 :
gnome-terminal
bash
some-boring-process
캔 I ‘분리’ bash
에서 gnome-terminal
(또는 분리 some-boring-process
의 출력 곳 bash가 및 리디렉션)? 난 그냥 죽일 경우 gnome-terminal
, bash
모든 서브 프로세스를 뜻 살해됩니다
답변
some-boring-process
현재 bash 세션에서 실행중인 경우 :
ctrl-z
당신에게 bash 프롬프트를 제공하기 위해 그것을 중단- 와 배경에 넣어
bg
- 작업 번호를 기록하거나
jobs
명령을 사용하십시오. - 이 bash 세션에서 프로세스를 분리하십시오
disown -h %1
(실제 작업 번호를 대체하십시오).
그것은 출력을 리디렉션하기 위해 아무것도하지 않습니다-당신은 지루한 프로세스를 시작할 때 그것을 생각해야합니다. [편집] https://gist.github.com/782263 를 리디렉션하는 방법이있는 것 같습니다
그러나 진지하게 화면을 들여다보십시오. 몇 달 동안 실행 된 원격 서버에 쉘이 있습니다.
답변
이것은 정확히 스크린 과 tmux 가 만들어진 것입니다. screen / tmux 세션 내에서 쉘을 실행하면 마음대로 연결을 끊거나 다시 연결할 수 있습니다. 하나의 gnome-terminal 내에서 여러 개의 셸 세션을 실행할 수도 있습니다.
답변
답변
자식 프로세스를 배경 화하고 계속 진행하는 것이 아니라 자식 프로세스와 계속 상호 작용하려면 프로세스를 현재 tty에서 “스틸 링”하고 프로세스에 다시 첨부하는 개념 증명 인 retty 라는 프로그램 이 있습니다. 현재 하나.
그러나 일부 어셈블리 코드를 다시 연결된 응용 프로그램의 스택에 붙이는 것을 포함하여 몇 가지 끔찍한 일을합니다. 그리고이 코드는 x86_64 용으로 업데이트되지 않았습니다.
아마도 사용자 공간의 프로세스를 파일로 동결하여 나중에 복원 할 수있는 다른 프로그램이있을 수 있습니다 (다른 tty에서 가능할 수도 있습니다). 이것은 cryopid 이며 프로젝트도 중단되었습니다. 개념 증명 단계이며 최신 Linux에서는 코드가 작동하지 않습니다. 아 잘
이것이 완성을 위해 여기에 있어야한다고 생각했습니다. 당신이 끔찍한 부두에 의지하지 않는다면, 이것은 적어도 이론적 인 가능성입니다.
답변
시스템 재부팅이 얼마 남지 않더라도 끝내고 싶은 것을 nohup
실행하면 백그라운드에서 사용 하고 실행합니다. 화면 등과 달리 프로세스에 다시 연결할 수 없습니다. 그러나 다른 곳에서 출력을 금지하면에서 찾을 수 있습니다 nohup.out
.
screen
프로세스를 위해 터미널을 전환하고 싶을 때 사용 합니다. 가정 / 직장에서 프로세스를 시작하고 다른 프로세스로 전환하는 등. 다른 터미널 세션 출력과 마찬가지로 결국 버퍼 상단에서 스크롤됩니다.
편집 : 이미 프로세스를 시작한 경우 프로세스가 닫힐 때 신호가 전송 disown
되지 않도록 HUP
프로세스를 진행할 수 있습니다.
답변
터미널 세션이 종료되면 프로세스 (PID)가 HUP 신호를받지 않도록 할 수 있습니다. 다음 명령을 사용하십시오.
nohup -p PID
답변
이 스크립트는 자식 프로세스를 부모 프로세스에서 분리하여 init 프로세스에 할당합니다 .
toDetach=$1
./$toDetach & # Runs the process - script on background
disown -h %$(jobs -l | grep $(ps -A | grep $toDetach | cut --delimiter=' ' -f1) | cut --delimiter=' ' -f1 | tr -d '[]+') # and then disowns it from parents process