Làm thế nào để tôi gỡ lỗi một công việc mới bắt đầu?


10

Tôi có công việc sau đây trong /etc/init/collector:

start on runlevel [2345]
stop on runlevel [!2345]

expect daemon

exec /usr/bin/twistd -y /path/to/my/tac/file

Khi tôi bắt đầu công việc sudo service collector start, nó bị treo. Nếu tôi ctrl-cvà chạy initctl list, tôi thấy điều này:

collector start/killed, process 616

Tôi không thể thấy một phiên bản của twistdtrình nền trong ps và máy chủ HTTP mà nó được cung cấp không tồn tại.

Tôi thậm chí đã thử điều này mà không 'mong đợi daemon' và với một cuộc gọi đơn giản đến tập lệnh bash một dòng bằng cách sử dụng một khổ scriptthơ, và nó vẫn không hoạt động. Tôi nghĩ rằng tôi đang làm một cái gì đó rất sai. Nó có thể là gì?


Không có câu trả lời, nhưng tôi đang vật lộn với một vấn đề tương tự. Nó thậm chí có thể là một lỗi trong Upstart: bug.launchpad.net/ubfox/+source/upstart/+orms/438313 Tôi không biết cách lấy từ trạng thái treo này sau đó khởi động lại. Ngoài ra tôi tin rằng nó phải làm với expect daemondòng.
làm hại

Câu trả lời:


14

Bạn có thể chuyển hướng stdoutstderrtoàn bộ hệ vỏ bằng cách sử dụng scriptpragma (thay vì exec) kết hợp với exec >FILE 2>&1, như vậy:

script
    exec >/path/to/some_log_file 2>&1
    exec your_command_here
end script

Điều đó hy vọng sẽ cung cấp cho bạn cái nhìn sâu sắc hơn về những gì đang xảy ra. Tôi đã thấy điều này hữu ích để nắm bắt tất cả các loại vấn đề trong các kịch bản mới nhất của tôi. Bạn có thể đặt lệnh của bạn stdout/ stderrtrực tiếp, nhưng bạn sẽ bỏ lỡ các lỗi xuất phát trong trình bao (như lỗi cú pháp).

Mặt khác, nếu servicebị treo, nó thậm chí có thể không nhấn vào tập lệnh của bạn, trong trường hợp đó, điều này sẽ không giúp ích gì, tất nhiên.


Cảm ơn, điều này đưa tôi đi đúng hướng. Cuối cùng, tôi dẫn đầu ra logger, để tôi có thể theo đuôi /var/log/syslog.
Cera

Ngoài ra, lỗi trong chính tập tin conf được hiển thị trong dmesg. Tôi phát hiện ra điều này sau khi tôi không nhận được bất kỳ đầu ra nào khi sử dụng ở trên. Tôi đã đánh máy trong chỉ thị chdir.
mã hóaFoo

Bạn đặt mã đó ở đâu?
kev

2

Ngoài ra còn có phần console logkhai báo, như được định nghĩa ở đây: http://upstart.ubfox.com/cookbook/#console-log

Tôi không biết đủ về khởi động để biết nếu nó được bật theo mặc định, nhưng bạn có thể bật nó trên cơ sở công việc mới bắt đầu, theo mặc định, nó sẽ xuất ra /var/log/upstart/<job>.log


0

Xác thực rằng giám đốc mới bắt đầu tồn tại và thêm nhật ký giao diện điều khiển trước giai đoạn kịch bản. (trong phiên bản mới nhất, sau đó là 1.4, mặc định)

nhật ký giao diện điều khiển

tập lệnh thực thi> / path / to / some_log_file 2> & 1 thực thi tập lệnh kết thúc your_command_here

Để biết thêm thông tin, hãy kiểm tra chủ đề: https://askubfox.com/questions/207143/how-to-diagnose-upstart-errors/932155#932155

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.