如何让 "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
我希望使用
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