今天遇到一个比较诡异的问题,在我的mac上,使用zsh远程了登录了我们的测试服务器,启动了一个后台运行的Java服务,命令如下:
nohup ./bootstrap.sh run com.test.Demo > /tmp/output 2>&1 &
然后执行 exit 命令退出远程服务器时,终端报了一个信息:
zsh: you have running jobs.
经过查资料,找了解决方法,修改后的命令如下:
nohup ./bootstrap.sh run com.test.Demo > /tmp/output 2>&1 &!
注意在最后加了一个 ! 或 | 都可以,来自zsh官网文档的解释:
https://linux.die.net/man/1/zshbuiltins
Remove the specified jobs from the job table; the shell will no longer report their status, and will not complain if you try to exit an interactive shell with them running or stopped. If no job is specified, disown the current job.
大概意思是从jobs任务列表里删除当前的这个job,这样shell不会跟踪和上报这个任务的状态,从而才可以正常的退出交互式的 shell 终端