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.