23

gitリビジョン管理下のプロジェクトにコミットした後に実行する必要のあるスクリプトがあります。したがって、サブディレクトリ/hooksのprojects.gitディレクトリにpost-commitフックを作成し、「post-commit」という名前を付けて、次の内容を指定しました。

#!/bin/sh
# I am a post-commit hook
/usr/local/bin/my_script &

my_scriptは実行可能であり、/ bin/shで正常に実行されます。実際、実行時間は数秒なので、バックグラウンドで実行して現在のシェルから切り離したいと思います。そのため、末尾の「&」をフックに配置しました。

現在の問題は、「&」が無視されているように見えることです。OSXLionでgitx0.7.1を使用してコミットすると、my_scriptを実行する必要がある期間だけgitxがハングします。

私はたくさん試しましたが、プロセス自体をバックグラウンドに入れません。

ここで何が問題になっていますか?

4

4 に答える 4

16

これが私にとってどのように機能するかです:

#!/bin/sh
# I am a post-commit hook
nohup /usr/local/bin/my_script &>/dev/null &
于 2011-11-15T07:24:56.240 に答える
4

このコマンドを使用することもできますat。最初にインストールする必要があるかもしれません

echo /path/to/your/executable | at now

また:

echo bash /path/to/your/script | at now

man atat(またはオンラインバージョン)の詳細については、at(1)のマニュアルページを参照してください。

于 2015-09-25T14:27:42.060 に答える
2

nohupを使用してみてください

#!/bin/sh
# I am a post-commit hook
nohup /usr/local/bin/my_script &
于 2011-10-27T14:25:31.673 に答える
1

(bashを使用しても問題ないと仮定して)に変更#!/bin/shし、を使用すると、例が機能するはずです。#!/bin/bashnohup

于 2015-05-07T06:05:17.763 に答える