Ubuntu12.04 : 시작시 데몬 프로세스를 비활성화하는 방법


23

나는 일반적으로 사용 service start/stop하거나 initctl start/stop시작하거나 데몬 프로세스를 중지하지만 지금은 내가 무엇을 찾고 있어요 것은 시작 예제를 시작 데몬 프로세스를 비활성화하는 것입니다하기 mysqld.

현재하고있는 일은 이름 /etc/init/mysql.conf을 바꾸고 /etc/init/mysql.conf.bak있지만 조금 읽은 후에 는 위의 작업에 systemd대한 enable & disable옵션을 제공한다는 것을 알게 되었습니다.

우분투 12.04와 비슷한 것이 있습니까 upstart?


당신은 systemd를 사용하고 있다고 말합니까? Fedora 17 컴퓨터에서 사용합니다. systemctl [enable|disable|is-enabled] mysqld.service
BenjiWiebe

1
@ BenjiWiebe : 아니요 systemd를 사용하지 않습니다. 우분투 12.04 / 12.10의 systemd가 기본값이 아니기 때문에 upstart를 사용하고 있습니다.
RanRag

1
오, 지금 봤어 ... 내가 무슨 생각을했는지 모르겠어
BenjiWiebe

답변:


26

다음 명령을 실행하여 서비스를 비활성화 할 수 있습니다.

sudo update-rc.d -f <service name> disable

맨 페이지 발췌 :

disable [S | 2 | 3 | 4 | 5] 옵션으로 실행할 때 update-rc.d는 시작 링크의 이름을 바꾸어 시퀀스 번호가 동일한 링크를 중지하여 스크립트 /etc/init.d/name에 대한 기존 실행 레벨 링크를 수정합니다. 100에서 원래 시퀀스 번호를 뺀 차이로


2
나는 이것을 다운 투표 할만 큼 평판이 충분하지 않으며 설명없이 그렇게하는 것은 어쨌든 무례 할 것입니다. 따라서 의견 : @Noob의 질문은 Upstart (/etc/init/*.conf 구성을 사용하는 Ubuntu 12.04와 관련이 있습니다. @Noob에서 언급 한 것처럼 대부분의 시스템 데몬에 대해서는 /etc/init.d / * (이전 SysV 스타일)의 스크립트를 사용하여 시작된 데몬에 대해서만 제안합니다. 편집 : 레코드의 경우 warl0ck가 정답입니다 (감사합니다!).
xolox

3
문제는 mysql을 특정 국소 사례로 사용하는 가상의 상황이나 일반적인 상황에 관한 것입니다. OP는 적어도이 답변에 대해 부분적으로 알고있는 것처럼 보였지만 일부 유용한 패키지는 (시작 시점에 소스 패키지에서 webmin 및 자체 빌드 된 많은 것처럼) 시작 형식을 존중하지 않으며 그렇지 않을 것이라는 점을 잘 알고 있습니다. . 즉,이 방법은 warl0ck 및 Mark의 답변이 패키지 관리자와 함께 설치된 가상 mysql 서비스의 특정 지점을 해결하기 위해 수행하는 것과 같이 컨텍스트에 대한 유효한 부분 답변이 될 수 있습니다.
JustinC

-f 플래그는 필요하지 않습니다.
dannyman

20

서비스를 비활성화하고 시작하는 올바른 방법은 XX.override 파일을 작성하는 것입니다.

echo 'manual' > /etc/init/mysqld.override

그렇게하면 upstart 서비스가 자동으로 시작되지 않습니다


이것은 여전히 ​​작동 Ubuntu 12.04합니까?
RSK

@ RSK 예, 시도해보십시오.
데이지

1
나는 노력했고 나를 위해 일하지 않았다. Lemme 다시 시도하고 업데이트합니다.
RSK

아니요, Ubuntu-14.04에서는 작동하지 않습니다.
Hi-Angel

1
@RSK yes, why don't you just give it a try?이 페이지의 모든 조언에 "시도"를 사용하여 시스템을 다시 시작하는 것이 매우 불편하기 때문입니다.
user907860

7

@ warl0ck가 옳습니다. 이 정보가 Upstart 문서에 잘 설명되어 있다고 덧붙이고 싶습니다 : http://upstart.ubuntu.com/cookbook/#disabling-a-job-from-automatically-starting

구체적으로 :

Upstart 1.3을 사용하면 대체 파일과 수동 스탠자를 사용하여보다 간단한 방식으로 동일한 결과를 얻을 수 있습니다 [27] :

# echo "manual" >> /etc/init/myjob.override

이렇게하면 동일한 효과를 얻을 수 있습니다.

# echo "manual" >> /etc/init/myjob.conf

그러나 대체 기능을 사용하면 원래 작업 구성 파일을 그대로 둘 수 있습니다.

원래 동작으로 되돌리려면 대체 파일을 삭제하거나 이름을 바꾸거나 ".conf"파일에서 수동 스탠자를 제거하십시오.


5

이를 지원할 수있는 멋진 소프트웨어도 있습니다. rcconf라고합니다.

다음을 사용하여 다운로드하십시오.

sudo apt-get install rcconf

명령과 함께 사용하십시오.

rcconf

서비스를 비활성화 / 활성화하기위한 멋진 (명령 줄) 인터페이스가 제공됩니다.


이것은 시스템에 포함되어 있지 않으므로 더 많은 물건을 설치하는 것이 더 나은 대답은 아닙니다.
m3nda 2016 년

하지만 정말 유용합니다 : D
Magico

1

시작할 때 실행 하지/etc/rc2.d 않으려는 항목으로 이동하여 이름을 바꾸 십시오. (초기, 대문자) "S"를 "K"로 변경하십시오 (예 : 로 ). 마음이 바뀌면 반대로 바꾸십시오. 2는 실행 수준을 의미한다고 생각합니다. 어떤 경우 2는 기본 다중 사용자 실행 수준입니다. 아마도 그것은 당신이 일상적인 컴퓨터 사용을 위해 대부분의 물건을 가지고있는 곳일 것입니다.S02mysqlK02mysql

편집 : 아래 James O'Gorman의 의견을 읽으십시오.


1
예 '2'는 실행 수준을 나타냅니다. who -r또는을 사용하여 현재 실행 수준을 확인할 수 있습니다 runlevel.
RanRag

사실 who --runlevel입니다.
Emanuel Berg

1
이것이 원하는 것을 달성하지만 기술적으로 잘못된 일입니다. SysV 초기 조건에서 'S'스크립트는 시작 스크립트이고 'K'는 종료 스크립트입니다. 즉, S는 시작시 순서대로 실행되고 K는 종료시 순서대로 실행됩니다 (또는 낮은 실행 수준으로 변경).
James O'Gorman

@ JamesO'Gorman : Debian에 관심이 있습니다. 종료시 "K 스크립트"가 실행되고 있습니까? 스크립트를 사용하지 않도록 설정하는 데 사용할 수있는 문자가 있습니까? (원하는 곳에서 새로운 상황이 발생하면 같은 폴더에 보관하는 것이 실용적입니다.)
Emanuel Berg

@EmanuelBerg 예, 종료시 init'KXXscript stop'이 실행됩니다. 심볼릭 링크를 제거하거나 실제 init 스크립트에서 실행 비트를 제거해야합니다. 데비안 update-rc.d이 이것을 관리하는 데 사용한다고 생각 합니다. RHEL (및 파생 상품)이 사용 chkconfig됩니다.
James O'Gorman

0

Upstart에서 서비스 구성은의 파일에 /etc/init/있습니다. 예를 들어 ssh는 구성 파일을 사용하여 제어됩니다./etc/init/ssh.conf

이 파일은 "이벤트"를 지정하여 Upstart가 "작업"을 시작하도록 프롬프트합니다.

서비스가 자동으로 시작되지 않도록하려면 여러 가지 방법 중 하나를 사용할 수 있습니다.
a) .conf로 끝나지 않도록 service.conf 파일의 이름을 바꿉니다.
b) service.conf 파일에서 "start on"줄을 주석 처리합니다.

최신 버전의 upstart (최소 v1.3 이후)에서는 service.override 파일을 사용하여 온라인 시작을 재정의 할 수 있으므로 다음을 사용할 수 있습니다.
# echo manual > /etc/init/service.override

마지막으로 다음과 같은 방법으로 키워드 "manual"을 서비스 구성 파일의 끝에 추가 할 수도 있습니다.
# echo manual >> /etc/init/service.conf

이렇게하면 실행중인 서비스가 "중지"되지 않고 자동으로 시작되지 않습니다. "수동"시작으로 설정된 동안 SSH 데몬을 중지하고 시작하는 등 initctl을 사용하여 서비스를 제어합니다.
# initctl stop ssh
# initctl start ssh

아마도 Upstart에 대한 최고의 문서는 http://upstart.ubuntu.com/cookbook/있습니다.

섹션 11.44는 "자동 시작에서 서비스 비활성화하기, 여기에 있습니다 : http://upstart.ubuntu.com/cookbook/#disabling-a-job-from-automatically-starting


0

글쎄, 나는 그 진술을

echo "manual" >> /etc/init/myjob.override

재정의 파일을 추가한다는 의미이므로 약간 오해의 소지가 있습니다. 14.04에서 네트워크 관리자로 테스트했으며 다음과 같이 작동하지 않았습니다.

vim /etc/init/network-manager.override:
start
manual

그러나 이것은 효과가 있었다

vim /etc/init/network-manager.override:
#start
manual

따라서 initctl 인 IMO는 주석 처리되지 않은 첫 번째 행을 찾아서 실행합니다. 어쩌면 내가 틀렸을 수도 있지만, 이것이 내 테스트 결과였습니다. 입력을 환영합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.