gpt4 book ai didi

linux - 使用命令 & + disown 而不是 nohup

转载 作者:可可西里 更新时间:2023-11-01 11:48:26 25 4
gpt4 key购买 nike

我今天尝试使用 nohup命令执行 rsync命令以便处理一些文件从一个 VM 到另一个虚拟机的副本,即使我关闭了控制台也是如此。

然后我说为什么不用rsync [parameters] <b>&</b> + disown %1

两者有什么区别?

最佳答案

disown 是更好的做法(内置于 shell 而不是依赖于外部工具),但它需要更多的工作:您需要自己重定向 stdin、stdout 和 stderr(而 nohup 将使用硬编码的 nohup.out 名称进行重定向(如果您自己没有这样做的话)。

因此:

rsync "${args[@]}" </dev/null >logfile 2>&1 & disown -h "$!"

作为风格说明,如果您对 PID 的唯一用途是将其传递给 disown,我确实建议将 disown 与调用在同一行,如上所示:这确保了 $! 引用是对之前 fork 的后台进程的引用,即使 future 的更改添加了更多代码,可能会 fork 其他后台进程进程,在 rsync 启动后。 (另一方面,如果你想稍后引用 PID,你可以在同一行上放置一个变量赋值:rsync ... & rsync_pid=$!,然后 disown - h "$rsync_pid" 在单独的一行)。

关于linux - 使用命令 & + disown 而不是 nohup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47517765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com