Cygwin 在zsh中分离后台进程以便关闭终端

Cygwin 在zsh中分离后台进程以便关闭终端,cygwin,zsh,Cygwin,Zsh,我有一个终端进程在Cygwin环境中运行zsh。我想启动一个后台进程,然后关闭终端进程并运行后台进程。但是,当我退出终端时,会收到错误消息,它无法退出,因为后台进程仍在运行。例如: sleep 300 & exit 我得到消息zsh:你有正在运行的作业 同 nohup sleep 300 & 从zsh的手册页上,我看到有一个名为disown的命令,从描述上看,它可以做我想做的事情,但我不知道如何使用它。根据手册页,它需要一个论点工作,但没有说明这个论点实际上是什么。我试过了

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

sleep 300 &
exit
我得到消息zsh:你有正在运行的作业

nohup sleep 300 &
从zsh的手册页上,我看到有一个名为disown的命令,从描述上看,它可以做我想做的事情,但我不知道如何使用它。根据手册页,它需要一个论点工作,但没有说明这个论点实际上是什么。我试过了

sleep 300 &
disown $!
但是得到消息disown:job not found:3964,所以作业显然不是PID


如何正确执行此操作?

您需要通过作业编号来引用作业

sleep 3000
control-z
bg
jobs
disown %3 (or whatever job number)

你需要通过作业编号来引用作业

sleep 3000
control-z
bg
jobs
disown %3 (or whatever job number)

希望这至少对其他读者有所帮助:
disown
不带任何参数会断开作业编号为
%1
的作业


此外,您可能还想查看该函数。

希望这至少对其他读者有所帮助:
不带任何参数的disown
会断开作业编号为
%1
的作业


此外,您可能还想查看该功能。

我认为cygwin环境不可能在您关闭窗口的瞬间停止运行我认为cygwin环境不可能在您关闭窗口的瞬间停止运行这确实有效。由于我想从.zshrc提供的shell函数中执行此操作,这意味着我必须解析jobs命令的输出。好的,不方便,但可以做到。非常感谢。这确实有效。由于我想从.zshrc提供的shell函数中执行此操作,这意味着我必须解析jobs命令的输出。好的,不方便,但可以做到。谢谢。