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

use*_*428 2 cygwin zsh

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

sleep 300 &
exit
Run Code Online (Sandbox Code Playgroud)

我收到消息zsh:您正在运行作业。

nohup sleep 300 &
Run Code Online (Sandbox Code Playgroud)

从 zsh 的手册页中,我看到有一个名为disown 的命令,从描述来看,它可能会执行我想要的操作,但我不知道如何使用它。根据手册页,它需要一个参数job,但没有说明这个参数实际上是什么。我试过

sleep 300 &
disown $!
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能正确地做到这一点?

zza*_*per 5

您需要通过职位编号来引用该职位

sleep 3000
control-z
bg
jobs
disown %3 (or whatever job number)
Run Code Online (Sandbox Code Playgroud)