Làm thế nào để chẩn đoán lỗi Upstart?


8

Tôi có một tệp conf Upstart trong / etc / init sẽ khởi động tốt nếu tôi khởi động thủ công như thế này:

sudo initctl start myconf

Nếu tôi chạy nó mà không có lệnh sudo, tôi gặp lỗi tên = (không đặt), đó là do đặc quyền của người dùng, nhưng đó không phải là vấn đề khi công việc được khởi chạy khi khởi động hệ thống khi Upstart khởi động đúng không? (vì đó là tất cả chạy bằng root).

Nội dung của kịch bản là:

start on runlevel [2345]
stop on runlevel [^2345]

exec /spatial/server_init.sh

... Trong đó server_init.sh chạy máy chủ dựa trên tập lệnh python. Khi tôi kiểm tra trạng thái của tập lệnh ngay sau khi tôi đăng nhập vào shell, nó báo dừng / chờ. Tôi cũng đã thử tập tin conf với "start on net-device-up" nhưng không có gì thay đổi. Có cách nào để xem nhật ký hệ thống Upstart hoặc một cái gì đó tương tự có thể giúp tôi gỡ lỗi vấn đề.

Cảm ơn


Đôi khi nếu bạn có một chdirtập lệnh mới bắt đầu và thư mục đó không tồn tại, sẽ không có nhật ký nào được viết và bạn sẽ nhận được thông điệp khó hiểu:start: Job failed to start
knowasilya

Câu trả lời:


13

Thử:

/var/log/upstart/JOBNAME.log

Bạn có thể muốn xem xét chuyển đổi nó thành một nhiệm vụ trong khi bạn gỡ lỗi nó.

bắt đầu từ không gian-bắt đầu

bài tập

exec /spatial/server_init.sh

sau đó từ bảng điều khiển:

initctl phát ra không gian bắt đầu
trạng thái initctl không gian bắt đầu

Cũng sẽ cho nó một shot, cảm ơn. Tôi cho rằng điều này thực sự tạo ra các vấn đề cụ thể Bắt đầu; nó có bao gồm lỗi cú pháp trong tập tin conf không?
U2ros

Đây là nơi stdout / err được chuyển hướng để tốt hơn nên dài dòng.
ppetraki

1

Được rồi, tìm thấy một cách, nhưng nó chỉ hoạt động nếu lỗi xảy ra trong chương trình đang được thực thi bởi tập lệnh (và nếu chương trình đó tất nhiên trả về các thông báo lỗi), không phải là Upstart, nhưng đó là những gì tôi cần trong trường hợp này. Những gì tôi đã làm là chuyển hướng đầu ra chương trình đến một tệp nhật ký như thế này:

exec /spatial/server_init.sh >> /spatial/ogc.log 2>&1

Đối với những người khác tôi phát hiện ra bạn có thể tăng tính dài dòng vì vậy nếu tôi cần điều đó, tôi sẽ bắt đầu từ đó.


0
  1. Kiểm tra xem thư mục khởi động có tồn tại không: / var / log / upstart (nếu không thì hãy tạo thư mục)
  2. Kiểm tra phiên bản mới nhất của bạn bằng cách: phiên bản initctl hoặc chính sách apt-cache mới bắt đầu

    Đối với tất cả các phiên bản Upstart trước v1.4, giá trị mặc định cho giao diện điều khiển là không có giao diện điều khiển . Kể từ Upstart 1.4, giá trị mặc định là nhật ký giao diện điều khiển .

  3. Thêm bảng điều khiển đăng nhập vào bạn mới bắt đầu (trước giai đoạn kịch bản)
  4. Nhật ký của bạn sẽ có tại: /var/log/upstart/"upstart-JOBNAME".log

Thí dụ :

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

kịch bản

exec /spatial/server_init.sh

kịch bản kết thúc

Nhật ký bảng điều khiển - Kết nối đầu vào tiêu chuẩn với / dev / null. Đầu ra tiêu chuẩn và lỗi tiêu chuẩn được kết nối với một đầu của thiết bị đầu cuối giả sao cho mọi đầu ra công việc được tự động đăng nhập vào một tệp trong thư mục / var / log / upstart / cho System Jobs và $ XDG_CACHE_HOME / upstart / (hoặc $ HOME /. bộ đệm / khởi động / nếu $ XDG_CACHE_HOME không được đặt) cho Công việc phiên.

Bảng điều khiển không - Kết nối đầu vào tiêu chuẩn, đầu ra tiêu chuẩn và mô tả tệp lỗi tiêu chuẩn của công việc thành / dev / null.

Để biết thêm thông tin về giao diện điều khiển, hãy nhìn vào liên kết dưới đây:

http://upstart.ubfox.com/cookbook/#console-log

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.