자체를 배경에 넣는 명령을 실행하고 싶습니다 (또는 가능하면 명령을 포어 그라운드 모드로 실행하고 직접 백그라운드로 실행하십시오). 그리고 pid를 얻으십시오 배경 과정. 어떻게 Go에서이 작업을 수행합니까? 즉시 ~golang exec 백그라운드 프로세스와 그 pid를 얻으십시오
cmd := exec.Command("ssh", "-i", keyFile, "-o", "ExitOnForwardFailure yes", "-fqnNTL", fmt.Sprintf("%d:127.0.0.1:%d", port, port), fmt.Sprintf("%[email protected]%s", serverUser, serverIP))
cmd.Start()
pid := cmd.Process.Pid
cmd.Wait()
이 반환 백그라운드에서 실행 ssh를 잎하지만 PID는 실행중인 ssh를 프로세스의 PID 아니다 (이 갈래 전에 부모 ssh를 프로세스의 아마 그것 PID 및 자체를 백그라운드로) : 내가 시도 .
어떻게 올바르게 수행 할 수 있습니까?
"배경"이란 무엇을 의미합니까? 'Cmd'를'Start()'할 때 Go 어플리케이션과 동시에 실행되는 별도의 자식 프로세스 (적절한'Process.Pid'와 함께)가 있습니다. 아마도 ssh 플래그에서'-f'를 제거 할 필요가 있을까요? –
이동 프로세스가 종료 된 후에도 프로세스를 계속 실행해야합니다. 나는 그후 pid를 저장해야 할 미래의 ssh 프로세스를 죽일 수 있어야한다. – sbs
흠, 사실 당신 말이 맞아요. 내가 그걸 기다리지 않고 그냥 나가면 프로세스가 계속됩니다. – sbs