退出后保留外部进程 运行
keep external process running after exit
如何在主退出后保留进程 运行?
更新: 原来只有你在goland运行的时候。接受的答案包括评论解决了这个问题。
信息:我有一个监视文件夹更改的可执行文件,我需要从 go 启动它并在退出后保留它 运行。
我看到了但是没有解决运行进程退出后的问题
package main
import "os/exec"
func main() {
cmd := exec.Command("sh", "long_running process", "&")
cmd.Start()
}
fmt.Println("Sleeping...")
time.Sleep(8 * time.Second) // I can see the process running
之后当我执行“ps”时,进程随主应用程序一起终止。
我无法重现您遇到的问题。当我 运行 sleep
命令和 goroutine 终止时,当我用 ps
搜索它时它仍然是 运行ning
更新
- 不起作用运行使用 GoLand 中的调试器进行调试。
- Except 如果您在调试选项 window.
中启用 运行 作为 sudo
- 没有
sudo
:使用 go run
,或者使用 dlv debug
或 ,没有 GoLand 中的调试器。
package main
import (
"os/exec"
)
func main() {
cmd := exec.Command("sleep", "99999999")
cmd.Start()
}
~/tempgo/process
▶ go run process.go
~/tempgo/process
▶ ps -ax | grep "sleep"
29907 ttys002 0:00.00 sleep 99999999
29925 ttys002 0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox sleep
~/tempgo/process
如何在主退出后保留进程 运行?
更新: 原来只有你在goland运行的时候。接受的答案包括评论解决了这个问题。
信息:我有一个监视文件夹更改的可执行文件,我需要从 go 启动它并在退出后保留它 运行。
我看到了
package main
import "os/exec"
func main() {
cmd := exec.Command("sh", "long_running process", "&")
cmd.Start()
}
fmt.Println("Sleeping...")
time.Sleep(8 * time.Second) // I can see the process running
之后当我执行“ps”时,进程随主应用程序一起终止。
我无法重现您遇到的问题。当我 运行 sleep
命令和 goroutine 终止时,当我用 ps
更新
- 不起作用运行使用 GoLand 中的调试器进行调试。
- Except 如果您在调试选项 window. 中启用 运行 作为
- 没有
sudo
:使用go run
,或者使用dlv debug
或 ,没有 GoLand 中的调试器。
sudo
package main
import (
"os/exec"
)
func main() {
cmd := exec.Command("sleep", "99999999")
cmd.Start()
}
~/tempgo/process
▶ go run process.go
~/tempgo/process
▶ ps -ax | grep "sleep"
29907 ttys002 0:00.00 sleep 99999999
29925 ttys002 0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox sleep
~/tempgo/process