Kịch bản mới bắt đầu không bắt đầu


33

Ubuntu 10.04

Tôi đã tạo tập lệnh khởi động này ( /etc/init/pure-ftpd.conf ):

# pure-ftpd - FTP server

description "Pure-FTPd server"

start on filesystem
stop on runlevel S

respawn
respawn limit 10 5
pid file /var/run/pure-ftpd.pid
console output

pre-start script
    test -x /usr/local/sbin/pure-ftpd || { stop; exit 0; }
end script

exec /usr/local/sbin/pure-ftpd --maxclientsnumber 2 --maxclientsperip 10 --prohibitdotfileswrite --prohibitdotfilesread --noanonymous --chrooteveryone --dontresolve --nochmod --pidfile /var/run/pure-ftpd.pid

Nhưng...

# start pure-ftpd
start: Unknown job: pure-ftpd

# service pure-ftpd start
start: Unknown job: pure-ftpd


Có vấn đề gì vậy?
Có cần thiết phải làm một cái gì đó nhiều hơn?
Có cần thiết phải tạo một tập lệnh trong /etc/init.d không?


Tôi gặp rắc rối tương tự. Vui lòng thử lệnh initctl tại console. Để vào phiên giao diện điều khiển, nhấn Ctrl + ALT + F1 và đăng nhập. (Tôi không thể hiểu tại sao, nhưng tôi đã thành công theo cách này)

Câu trả lời:


26

Nó thường có nghĩa là bạn có lỗi trong .conf tệp - ví dụ: tôi không chắc pidđoạn thơ được hỗ trợ trong 10.04, stopkhông thể được sử dụng trong tập lệnh, v.v.

Tôi sẽ thử bắt đầu tệp từ đầu (chỉ với start, stopv.v.), rồi từ từ xây dựng nó bằng cách thêm ngày càng nhiều dòng và kiểm tra nó qua start pure-ftpd.

Ví dụ:

# cat pure-ftpd.conf 
start on filesystem
stop on runlevel S

respawn
respawn limit 10 5

# start pure-ftpd
pure-ftpd start/running

# cat pure-ftpd.conf 
start on filesystem
stop on runlevel S

respawn
respawn limit 10 5
pid file /var/run/pure-ftpd.pid

# start pure-ftpd
start: Unknown job: pure-ftpd

Thông tin trong wiki rất lỗi thời ( upstart.ubfox.com/wiki ). Mặt khác, phiên bản mới nhất trong Lucid là 0,6,5-8 và tệp pid nên được hỗ trợ: upstart.ub Ubuntu.com/wiki/ Kẻ
Juan Simón

1
AFAIK các khổ pidthơ đã được gỡ bỏ kể từ phiên bản 0.5.0 2008-08-12 "One of those deaf-mutes". Đừng sử dụng nó.
sắp xếp

Ai đó biết tài liệu cập nhật ở đâu?
Juan Simón 17/03/2016

46

Bạn cũng có thể chạy init-checkconfđể kiểm tra cú pháp

init-checkconf /etc/init/job.conf
File /etc/init/job.conf: syntax ok

1
Lệnh không tồn tại trong 10.04, nhưng nó tồn tại trong 12.04.
Mark Stosberg

6
Nhưng nó không hoạt động trên máy chủ Ubuntu 12.04 không đầu (chưa). Xem bugs.launchpad.net/upstart/+bug/881885
FVD

1
Tìm thấy vấn đề ngay lập tức! - Nên được tích hợp vào startlệnh để nó cung cấp cho bạn thông báo lỗi nhiều thông tin hơn ...
AT

26

Đầu tiên, bạn có thể kiểm tra xem công việc của bạn có thực sự được biết đến khi mới bắt đầu:

sudo initctl list | grep your_job_name

... Đâu your_job_namelà tên của tập lệnh khởi động của bạn trừ .confphần mở rộng.

Nếu không tìm thấy, bạn có thể thử tải lại cấu hình và sau đó kiểm tra lại:

sudo initctl reload-configuration

# re-check
sudo initctl list | grep your_job_name

Sau đó thử lại để bắt đầu công việc của bạn:

sudo start your_job_name

Nếu bạn không nhận được bất kỳ đăng nhập /var/log/daemon.loghoặc /var/log/syslogtrước đó, bạn có thể có một số bây giờ.


1
Và điều gì xảy ra nếu điều này cho thấy rằng công việc không được biết để bắt đầu, mặc dù cú pháp là chính xác và nó nằm trong / etc / init?
FvD

1
Bạn đã thử "sudo initctl tải lại cấu hình" như đề xuất chưa? Bạn đã kiểm tra quyền, nhật ký, tài liệu?
Mark Stosberg

Tôi đã làm, và làm lại sau khi đọc bình luận của bạn. Thậm chí đảm bảo rằng người dùng là người dùng hệ thống (useradd -r). Có lẽ có thể có điều gì đó không đúng - liên quan đến việc khởi động - vì vậy tôi đã đăng một vấn đề cho các nhà phát triển dịch vụ mà tôi đang cố gắng khởi động (đó là máy chủ sáng bóng Tôi đang cố gắng khởi động).
FvD

1
Và đó là quyền sau tất cả! mặc dù mọi thứ trông có vẻ đào khi liệt kê thư mục, chỉ sau khi một chmod 644 đã khởi động tập lệnh. Cảm ơn một lần nữa.
FvD

1
Hãy nhớ rằng, your_job_name không có kết thúc .conf của tệp. Mất một giờ để tìm hiểu.
Marcel

6

Tham chiếu phù hợp nhất cho cú pháp tệp công việc sẽ có sẵn khi bạn chạy lệnh:

man 5 init

trên hệ thống của bạn. Đối với Ubuntu 10.04, như bạn đã tìm thấy trong câu trả lời trước, cú pháp tệp pid không chính xác.

Bất cứ khi nào bạn nhận được lỗi 'công việc không xác định "đó, bạn nên kiểm tra nhật ký (trước 11.04, /var/log/daemon.log, 11.04 và mọi thứ lớn hơn sẽ xuất hiện trong / var / log / syslog)

Bạn có thể thấy một lỗi như thế này:

init: /etc/init/test.conf:2: Unknown stanza

3

Dù sao tôi cũng ở đây vì tôi gặp vấn đề tương tự, nhưng cú pháp của tôi đã đúng 100%.

Sau khi gỡ lỗi, tôi phát hiện ra một vấn đề khác có thể gây ra lỗi "Công việc không xác định" này:

upstarts sử dụng inotify để theo dõi các thay đổi tập tin .cs và tự động cài đặt công việc, điều này rất tuyệt (vì điều này bạn không cần một cái gì đó như update.rc với upstart!) nhưng không thể hoàn hảo nếu bạn (như tôi trong trường hợp đó) sử dụng một số chương trình GUI FTP / SCP để tải lên và chỉnh sửa cấu hình trên các máy chủ từ xa, công việc có thể được gỡ cài đặt âm thầm khi mới bắt đầu khi bạn chỉnh sửa tệp theo cách đó.

để khắc phục chỉ cần làm điều đó (điều đó đã cứu tôi)

touch /etc/init/*

nó sẽ tạo ra các sự kiện inotify để làm mới tất cả các confs mới bắt đầu.


2

Tôi gặp vấn đề tương tự trong các container Docker Ubuntu 14.04 của tôi. Hóa ra, hình ảnh Ubuntu 14.04 (nếu không phải là hình ảnh khác) cho Docker không hỗ trợ Upstart giống như cách mà một máy ảo đầy đủ sẽ làm.

Để trả lời câu hỏi này, tại sao dịch vụ không khởi động, đó là vì initctl không phải là chương trình Upstart thực tế: nó được ánh xạ tới / bin / true.

Để xác minh, hãy chạy các mục sau trên bộ chứa Docker Ubuntu 14.04 so với Vagrant và so với giọt DigitalOcean

$ ls -al /sbin/initctl

Bạn sẽ thấy initctl không giống nhau trong Docker so với những cái khác.

Một liên kết có thể giúp bạn hiểu thêm .. https://github.com/docker/docker/issues/1024


2
Gặp vấn đề tương tự với docker: tóm lại và tóm tắt, docker chỉ chạy một tiến trình tại một thời điểm để nó không thể chạy khởi động và một cái gì đó khác. Để đảm bảo khởi động lại dịch vụ nếu / khi nó chết, tôi đã kết thúc bằng cách sử dụng giám sát. PS: bạn không nên chạy nhiều dịch vụ trong một container: toàn bộ mục đích của việc sử dụng các container là xây dựng các dịch vụ vi mô, vì vậy hãy xây dựng các phần trong các container riêng biệt và kết hợp chúng với Docker-Compose
MrE

1
Tôi vừa xem bài viết này và đưa ra lời khuyên rất tốt về cách phân tách các mối quan tâm: blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker có lẽ là thậm chí sử dụng chiến lược tốt hơn là sử dụng người giám sát
MrE
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.