2011-04-20 48 views
8

Tôi đang cố chạy một tập lệnh dừng và khởi động Tomcat trên Linux.Kịch bản Tomcat không hoạt động khi chạy từ Hudson

Khi tôi chạy nó từ dòng lệnh, nó hoạt động tốt. Nhưng nó dường như không hoạt động khi tôi chạy cùng một kịch bản từ bước thực hiện "Execute Shell" trong một công việc Jenkins/Hudson. Jenkins không báo cáo bất kỳ lỗi nào nhưng nếu tôi cố truy cập trang tomcat thì tôi sẽ gặp lỗi trang không tìm thấy.

Vì vậy, Jenkins dường như có thể dừng máy chủ nhưng không thể sao lưu máy chủ.

Tôi rất biết ơn vì bất kỳ trợ giúp nào.

+0

Lỗi nào bạn nhận được * chính xác *? Có phải là 404 không? Hoặc "kết nối bị từ chối"? –

Trả lời

18

Hãy thử unset các BUILD_ID trong 'shell của bạn thực hiện ' khối. Thậm chí bạn có thể không cần phải sử dụng nohup trong trường hợp này

BUILD_ID= 
./your_hudson_script_that_starts_tomcat.sh 
+1

Cảm ơn, có vẻ như việc thay đổi BUILD_ID đã sửa nó. Mặc dù tôi không thể có được ví dụ của bạn để làm việc vì vậy tôi đã thử [link] này (http://www.tikalk.com/alm/starting-tomcat-part-build-process-with-hudson-ci-0) dường như làm điều này. –

+0

Ngừng BUILD_ID cũng hoạt động với tôi. – excid3

+0

Vâng, hoạt động hoàn hảo và KHÔNG cần cho nohup – Anton

1

Nếu không thấy tập lệnh của bạn, bạn sẽ khó đưa ra câu trả lời chính xác. Tuy nhiên bạn có thể thử thêm dòng sau vào đầu script của bạn (giả sử nó là một kịch bản bash):

# Trace executed commands. 
set -x 

# Save stdout/stderr in files 
exec >/tmp/my_script.stdout 
exec 2>/tmp/my_script.stderr 

Bạn cũng có thể thử thêm

set -e 

để làm cho lối ra vỏ ngay lập tức nếu một lệnh trả về trạng thái lỗi.

Nếu nó trông như thể Hudson đang giết chết Tomcat sau đó bạn có thể muốn chạy nó trong nohup (nếu bạn chưa làm điều đó):

nohup bin/startup.sh >/dev/null 2>&1 & 
+0

Nếu tôi đặt một giấc ngủ dài sau đó cố gắng để đi đến trang tomcat, nó xuất hiện OK cho đến khi công việc hoàn thành. Vì vậy, tôi đã tự hỏi liệu Jenkins có tự động giết bất kỳ quá trình nào mà nó bắt đầu hay không, khi công việc hoàn thành. –

+1

Tôi đã thêm một chút về nohup vào câu trả lời của tôi ở trên (không thể định dạng mã trong nhận xét này). Hy vọng rằng có thể giúp đỡ. –

+0

Cảm ơn bạn đã phản hồi nhanh. Tôi tạo ra một kịch bản mới với các cuộc gọi nohup như bạn nói: 'nohup /usr/tomcat5/bin/startup.sh>/dev/null 2> & 1 &' mà tôi đã nhận Jenkins dụ của tôi để gọi, nhưng nó vẫn không dường như hoạt động. Mặc dù nó hoạt động OK khi tôi chạy kịch bản theo cách thủ công. –

Các vấn đề liên quan