在zsh中分离后台进程,以便我可以关闭终端

时间:2017-08-24 08:09:44

标签: cygwin zsh

我有一个在Cygwin环境中运行zsh的终端进程。我想启动后台进程,然后关闭终端进程并运行后台进程。但是,当我退出终端时,我收到它无法退出的错误消息,因为后台进程仍在运行。例如:

sleep 300 &
exit

我收到消息 zsh:你有正在运行的工作。

相同
nohup sleep 300 &

在zsh的手册页中,我看到有一个名为 disown 的命令,从描述中可能会做我想要的,但我不知道如何使用它。根据手册页,它需要一个参数 job ,但是并没有说出这个参数究竟是什么。我试过了

sleep 300 &
disown $!

但是得到消息 disown:job not found:3964 ,所以作业显然不是PID。

我该如何正确地做到这一点?

2 个答案:

答案 0 :(得分:2)

您需要通过作业号

来参考作业
sleep 3000
control-z
bg
jobs
disown %3 (or whatever job number)

答案 1 :(得分:1)

希望这对其他读者来说还是有帮助的:disown,不带任何参数将断开作业编号为%1的作业。

此外,您可能想签出AUTO_CONTINUE on Ctrl-Z功能。