Upstart không thấy kịch bản mới của tôi


27

Tôi đã thêm một tập lệnh mới để /etc/init/gọi minecraft.confcó chứa tập lệnh:

start on startup
stop on shutdown
respawn
respawn limit 20 5

script
  export HOME="/root"
  exec /root/minecraft/start.sh 2>&1 >> /var/log/minecraft.log
end script

post-start script
   echo "minecraft started"

Khi tôi thử start minecrafttôi nhận được lỗi:start: Unknown job: minecraft

Tôi đã thử chạy initctl listvà công việc minecraft của tôi không được liệt kê. Tôi đã thử chạy initctl reload-configurationvà nó không tạo ra sự khác biệt nào.

Các công việc khác được liệt kê bởi initctl listcông việc tốt với bắt đầu, dừng lại và khởi động lại.

Tại sao không bắt đầu thấy kịch bản mới của tôi?



Đây có thể là một câu hỏi ngu ngốc nhưng ... không phải là kịch bản của bạn trong /etc/init.d/?
Wolfer

@snow cảm ơn, nhưng tôi đã đọc nó và tôi vẫn gặp vấn đề.
Jasarien

@Wolfer theo hướng dẫn bắt đầu mới bắt đầu, nó nói "Một khi hạnh phúc, hãy đặt các tệp vào /etc/initvà bây giờ bạn đã sẵn sàng để khởi động lại và sử dụng khởi động."
Jasarien

Tôi đã cố gắng tái tạo vấn đề nhưng không thành công. Tôi sao chép mã của bạn vào /etc/init/minecraft.conf và được cấp sudo start minecraftmà không gặp vấn đề gì. Đây là nội dung của tệp nhật ký ~$ sudo cat /var/log/upstart/minecraft.log minecraft started /proc/self/fd/9: 3: exec: /root/minecraft/start.sh: not found minecraft startedBạn có thể cung cấp thêm chi tiết về phiên bản Ubuntu bạn đang sử dụng và bất kỳ thông tin hữu ích nào từ syslog không?
Goran Miskovic

Câu trả lời:


12

Kiểm tra nhật ký khởi động (trong đó /var/log/syslog) trong khi tải lại cấu hình bằng cách sử dụng initctl reload-configuration. Nếu có lỗi cú pháp, nó sẽ hiển thị ở đó. Đó thường là lý do tại sao bạn không thể sử dụng cấu hình mới bắt đầu của mình.


11

Một cách dễ dàng để kiểm tra cú pháp tập lệnh của bạn là bằng lệnh sau:

init-checkconf -d /etc/init/service_name.conf

Tôi đã thấy rằng ngay cả với tệp Upstart hợp lệ nếu tệp không tồn tại khi máy chủ được khởi động lần trước, tôi phải khởi động lại máy chủ để Upstart xem tệp.


9

Tôi cảm thấy hơi ngu ngốc ... Nhưng đây là:

Tôi đã bỏ lỡ khổ thơ "kịch bản kết thúc" từ cuối kịch bản mới nổi ...

post-start script
   echo "minecraft started"

nên đã được

post-start script
   echo "minecraft started"
end script

Tôi không chắc tại sao nó hoạt động cho @schkovich mà không có end script...


2
Bởi vì tôi đã thêm đoạn cuối kịch bản. Được xây dựng trong (tâm) hoàn thành mã tự động. :(
Goran Miskovic

Tôi gặp vấn đề tương tự nhưng cực kỳ tức giận, không có gì xuất hiện trong / var / log và initctl reload-configure --verbose im lặng.
Neil McGill

4

Trong trường hợp của tôi, đó là một authortrường trống , như thế này:

author ""

Nó chỉ hoạt động sau khi thêm một cái gì đó trong dấu ngoặc kép.

# initctl reload-configuration

cũng đã ném /etc/init/servicename.conf:2: Expected token vào syslog thay vì stdout . Quá bận để nộp báo cáo lỗi cho gói chết.


3

Có lẽ không thể áp dụng cho điều này một cách cụ thể, nhưng đáng nói: Nếu bạn chỉnh sửa tệp cấu hình Upstart cho một dịch vụ đang chạy, chạy restartKHÔNG tải lại cấu hình. Bạn phải chạy stopstartđể có những thay đổi mới có hiệu lực.

http://upstart.ubfox.com/cookbook/#restart

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.