Tôi có một kịch bản, mà tôi cần phải chạy sau khi cam kết một dự án dưới sự kiểm soát sửa đổi git. Vì vậy, tôi đã tạo ra một cam kết bài móc trong các dự án của tôi .git thư mục trong thư mục con/móc, tên nó 'post-cam' và đưa các nội dung sau:Git sau cam kết móc như là một nhiệm vụ nền
#!/bin/sh
# I am a post-commit hook
/usr/local/bin/my_script &
my_script là thực thi và chạy tốt trong/bin/sh. Trong thực tế nó có một thời gian chạy trong vài giây, vì vậy tôi muốn nó được backgrounded và tách ra khỏi vỏ hiện tại. Đó là lý do tại sao tôi đặt dấu '&' vào móc của mình.
Vấn đề bây giờ là, '&' dường như bị bỏ qua. Khi tôi cam kết sử dụng gitx 0.7.1 dưới OSX Lion, gitx bị treo cho chính xác khoảng thời gian my_script cần chạy.
Tôi đã thử rất nhiều, nhưng không tự xử lý quá trình đó.
Có gì sai ở đây?
David, trong khi đó tôi tìm thấy một cách tiếp cận tương tự: nohup/usr/local/bin/my_script 2> & 1>/dev/null & – GeorgieF
Không chính xác câu trả lời đúng, nhưng sẽ hướng dẫn một số người: xem xét triển khai thực hiện một daemon thực. Nếu trong ruby bạn có thể sử dụng Daemons hoặc đọc những điều cơ bản về những gì bạn nên làm trong mô tả này về cách một daemon hoạt động trong unix: http://daemons.rubyforge.org/Daemons.html –