시작 스크립트가 시작되지 않습니다


33

우분투 10.04

이 시작 스크립트 ( /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

그러나...

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

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


뭐가 문제 야?
더 많은 것을해야합니까?
/etc/init.d에도 하나의 스크립트를 작성해야합니까?


나는 같은 문제를 만났다. 콘솔에서 initctl 명령을 시도하십시오. 콘솔 세션을 시작하려면 Ctrl + ALT + F1을 누르고 로그인하십시오. (이유는 이해할 수 없지만이 방법으로 성공했습니다)

답변:


25

일반적으로 .conf파일에 오류가 있음을 의미합니다. 예를 들어 pid스탠자가 10.04에서 지원 되는지 확실 stop하지 않으며 스크립트 등에서 사용할 수 없습니다.

나는 (단지로 처음부터 파일을 시작하려고 할 것 start, stop더 많은 라인을 추가하고를 통해 테스트하여 구축 천천히 다음 등),과 start pure-ftpd.

예를 들면 다음과 같습니다.

# 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

위키의 정보는 매우 구식입니다 ( upstart.ubuntu.com/wiki ). 다른 측면에서, Lucid의 upstart 버전은 0.6.5-8이고 pid 파일은 지원되어야합니다 : upstart.ubuntu.com/wiki/…
Juan Simón

1
AFAIK pid스탠자는 버전 이후로 제거되었습니다 0.5.0 2008-08-12 "One of those deaf-mutes". 사용하지 마십시오.
정렬

누군가 업데이트 된 문서가 어디에 있는지 알고 있습니까?
Juan Simón

46

init-checkconf구문을 확인하기 위해 실행할 수도 있습니다.

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

1
이 명령은 10.04에는 없지만 12.04에는 존재합니다.
Mark Stosberg

6
그러나 헤드리스 Ubuntu 12.04 서버 (아직)에서는 작동하지 않습니다. 참조 bugs.launchpad.net/upstart/+bug/881885
FVD

1
문제를 바로 발견했습니다! - start명령에 내장되어 보다 유익한 오류 메시지를 표시해야합니다 ...
AT

26

먼저 작업이 실제로 시작된 것으로 확인되었는지 확인할 수 있습니다.

sudo initctl list | grep your_job_name

... 여기서 your_job_nameupstart 스크립트의 이름에서 .conf확장자를 뺀 것 입니다.

찾을 수 없으면 구성을 다시로드 한 다음 다시 확인하십시오.

sudo initctl reload-configuration

# re-check
sudo initctl list | grep your_job_name

그런 다음 작업을 다시 시작하십시오.

sudo start your_job_name

로그인 /var/log/daemon.log하거나 /var/log/syslog이전에 로그인하지 않은 경우 지금 로그인 했을 수 있습니다.


1
그리고 구문이 정확하고 / etc / init에 상주하더라도 작업이 시작되지 않은 것으로 표시되는 경우 어떻게해야합니까?
FvD

1
제안 된대로 "sudo initctl reload-configuration"을 시도 했습니까? 권한, 로그, 문서를 확인 했습니까?
Mark Stosberg

나는 당신의 의견을 읽은 후 다시했습니다. 사용자가 시스템 사용자 (useradd -r)인지 확인하십시오. 아마도 upstart와 관련이없는 다른 문제가있을 수 있으므로 시작하려는 서비스 개발자에게 문제를 게시했습니다 (부팅시 시작하려는 반짝이는 서버입니다).
FvD

1
그리고 결국 허가였습니다! 디렉토리를 나열 할 때 모든 것이 복숭아처럼 보였지만 chmod 644가 initctl이 스크립트를 가져온 후에 만 ​​복잡했습니다. 다시 감사합니다.
FvD

1
your_job_name은 파일의 .conf로 끝나지 않습니다. 알아 내려면 한 시간이 걸렸습니다.
Marcel

6

명령을 실행할 때 작업 파일 구문에 대한 가장 관련성이 높은 참조를 사용할 수 있습니다.

man 5 init

시스템에서. 이전 답변에서 찾은 Ubuntu 10.04의 경우 pid 파일 구문이 올바르지 않습니다.

'알 수없는 작업'오류가 다시 발생하면 로그를 확인하는 것이 좋습니다 (pre 11.04, /var/log/daemon.log, 11.04 이상). 모든 것이 / var / log / syslog에 있습니다.

다음과 같은 오류가 표시 될 수 있습니다.

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

3

어쨌든 나는 같은 문제가 있었기 때문에 여기에 있지만 내 구문은 100 % 정확했습니다.

디버깅 후이 "알 수없는 작업" 오류를 일으킬 수있는 다른 문제를 발견했습니다 .

upstartsinotify 를 사용 하여 .conf 파일 변경 및 자동 설치 작업을 모니터링합니다. 매우 멋지 지만 ( upstart와 함께 update.rc와 같은 것이 필요하지 않습니다!) 원격 서버에서 구성을 업로드하고 편집하는 일부 FTP / SCP GUI 프로그램의 경우 파일을 편집 할 때 시작시 작업을 자동으로 제거 할 수 있습니다.

간단히 해결하기 위해 (나를 구했다)

touch /etc/init/*

모든 upstart conf를 새로 고치기 위해 inotify 이벤트를 생성합니다.


2

내 우분투 14.04 Docker 컨테이너에서 동일한 문제가 발생했습니다. Docker의 Ubuntu 14.04 이미지 (다른 사람이 아닌 경우) 이미지는 전체 가상 머신과 동일한 방식으로 Upstart를 지원하지 않습니다.

이 질문에 답하기 위해 서비스가 시작되지 않는 이유는 initctl이 실제 Upstart 프로그램이 아니기 때문입니다. / bin / true에 매핑됩니다.

Ubuntu 14.04 Docker 컨테이너와 Vagrant 및 DigitalOcean 드롭 릿에서 다음을 실행하려면

$ ls -al /sbin/initctl

Docker와 initctl이 동일하지 않다는 것을 알 수 있습니다.

더 이해하기 쉽도록 링크 .. https://github.com/docker/docker/issues/1024


2
docker와 동일한 문제가 발생했습니다. 간단히 말하면 docker는 한 번에 하나의 프로세스 만 실행하므로 시작과 다른 것을 실행할 수 없습니다. 서비스가 죽었을 때 서비스를 다시 시작하기 위해 감독자를 사용했습니다. 추신 : 컨테이너에서 여러 서비스를 실행해서는 안됩니다. 컨테이너를 사용하는 요점은 마이크로 서비스를 구축하는 것이므로 별도의 컨테이너에 조각을 만들고 Docker-Compose와 함께 가져 오십시오
MrE

1
난 그냥이 글에 달려 그 문제를 분리하는 방법에 대한 좋은 조언을 제공합니다 blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker 아마도 짝수 감독자를 사용하는 것보다 사용하기에 더 나은 전략
MrE
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.