如何让 "nohup ./script.sh & disown" 在 post-receive git hook 中工作?

How to make "nohup ./script.sh & disown" working in post-receive git hook?

我希望使用

调用的脚本
nohup ./script.sh & disown

将在后台执行,推送时不会看到它的输出。 但是我看到了输出,我必须等待延迟。以下是被调用脚本的内容:

#!/bin/bash
echo 'test'
sleep 5

如何使其 运行 作为我的 git 挂钩脚本的分离进程?
谢谢

更新

我知道我不需要 nohup... 出于某种原因,它阻止了 运行 在后台运行我的脚本(并且可能也拒绝了它)。所以我的钩子中有以下字符串,现在可以使用了:

./script.sh > /dev/null 2>&1 & disown

感谢@CharlesDuffy 向我指出 nohup(在这种特殊情况下)的无用性。

如果您希望脚本自行分离,请考虑:

#!/bin/bash

# ignore HUP signals
trap '' HUP

# redirect stdin, stdout and stderr to/from /dev/null
exec >/dev/null 2>&1 <&1

# run remaining content in a detached subshell
(
  echo 'test'
  sleep 5
) & disown

或者,您可以从父级执行这些操作:

(trap '' HUP; ./yourscript &) >/dev/null <&1 2>&1 & disown