서비스를 활성화 또는 비활성화하는 방법은 무엇입니까?


821

우분투에서 서비스를 활성화 및 비활성화하는 방법에 대해 읽었으며 다른 방법으로 관리 할 수있는 것 같습니다.

내가 찾은 첫 번째 방법은 update-rc.d시작에 새 서비스를 추가 하는 것입니다.이 서비스는 /etc/init.d폴더와 그 내용 을 목표로합니다 .

내가 찾은 다른 하나 .conf/etc/init폴더의 파일 을 편집 하는 것입니다 .

서비스를 활성화 / 비활성화 / 추가하는 권장 방법은 무엇이며 그 이유는 무엇입니까?

우분투에서 서비스를 추가하고 활성화 및 비활성화하는 방법에 대한 간단한 방탄 단계를 단계별로 설명해 주시겠습니까?


1
네트워킹에 대해서는 다음을 참조하십시오 : askubuntu.com/questions/230698/…
Jorge Castro

이것은 Fedora 12에 붙어 있고 여기에 착륙 한 사람들에게 도움이 될 것입니다. linkrot chkconfig이 찾고있는 경우.
출혈 손가락

3
Ubuntu 14.04의 답은 여전히 ​​여기에 없습니다.
Reinier Post

2
@MarcelloNuccio : Ubuntu 15.04부터 Systemd를 위해 Upstart가 더 이상 사용되지 않습니다.
Dan Dascalescu

자동 시작 프로그램으로 구성되어 autostart매니페스트 또는에서 *.service뿐만 아니라 같이 여러 위치에있는 파일 init.d이나 crontab. 다음을 참조하십시오 : unix.stackexchange.com/a/525845/43233
Noam Manos

답변:


831

GUI ( startup응용 프로그램 과 같은 ) 또는 터미널을 사용하여 활성화 / 비활성화 할 수있는 서비스가 있습니다 .

터미널에는 몇 가지 옵션이 있습니다. 먼저 터미널을여십시오 (예 : 대시에 "터미널"을 입력하고여십시오). 그때:

임시 활성화 / 비활성화 서비스

서비스를 일시적으로 중지하고 시작하려면 (나중에 부팅 할 때 서비스를 활성화 / 비활성화하지 않음)을 입력 할 수 있습니다 service SERVICE_NAME. 예를 들면 다음과 같습니다.

  • sudo service apache2 stop( 다시 부팅 할 때까지 또는 다시 시작할 때까지 Apache 서비스를 중지 하십시오.)

  • sudo service apache2 start( Apache 서비스가 이전에 중지되었다고 가정하면 시작 됩니다.).

  • service apache2 status (서비스가 활성화 / 비활성화 / 실행 중이 아닌 경우 서비스 상태를 알려줍니다.)

  • sudo service apache2 restart(윌 재시작 서비스를. 이것은 가장 일반적으로 사용되는 변경 한 경우, 설정 파일을.이 경우, 당신은 PHP 구성 또는 아파치 설정 중 하나를 변경 한 경우. 다시 시작 중지하는 수고를 / 2 명령 줄에서 시작 )

  • service apache2(이 경우 서비스에 대해 수행 할 ACTION을 언급하지 않았으므로 해당 특정 서비스에 사용 가능한 모든 옵션이 표시됩니다.)이 측면은 서비스에 따라 다릅니다 (예 : MySQL의 경우 서비스에 따라 다름). 매개 변수가 누락되었습니다. 네트워킹 서비스와 같은 다른 서비스의 경우 사용 가능한 모든 옵션의 작은 목록을 언급합니다.


SYSTEMD

Ubuntu 15.04부터는 시스템 시작을 위해 Upstart가 더 이상 사용되지 않습니다. Systemd를 사용하여 서비스를 관리하면 다음을 수행 할 수 있습니다.

systemctl start SERVICE-서비스를 시작하는 데 사용하십시오. 재부팅 후에도 지속되지 않습니다

systemctl stop SERVICE-서비스를 중지 할 때 사용하십시오. 재부팅 후에도 지속되지 않습니다

systemctl restart SERVICE -서비스를 다시 시작하는 데 사용

systemctl reload SERVICE -서비스가 지원하는 경우 서비스를 사용중인 프로세스를 중단하지 않고 관련 구성 파일을 다시로드합니다.

systemctl status SERVICE-서비스 상태를 보여줍니다. 서비스가 현재 실행 중인지 알려줍니다.

systemctl enable SERVICE-다음에 다시 부팅하거나 다음에 시작할 때 서비스를 켭니다. 재부팅 후에도 지속됩니다.

systemctl disable SERVICE-다음에 다시 부팅하거나 다음 중지 이벤트에서 서비스를 끕니다. 재부팅 후에도 지속됩니다.

systemctl is-enabled SERVICE -다음에 다시 부팅 할 때 서비스가 현재 시작되도록 구성되어 있는지 확인하십시오.

systemctl is-active SERVICE -서비스가 현재 활성화되어 있는지 확인하십시오.

systemctl show SERVICE -서비스에 대한 모든 정보를 표시하십시오.

sudo systemctl mask SERVICE-서비스를 연결하여 서비스를 완전히 비활성화합니다 /dev/null. 서비스를 수동으로 시작하거나 서비스를 활성화 할 수 없습니다.

sudo systemctl unmask SERVICE-링크를 제거 /dev/null하고 서비스를 활성화하거나 수동으로 시작하는 기능을 복원합니다.


UPSTART (15.04부터 사용되지 않음)

공식적인 Upstart 방식을 사용하려는 경우 (현재 모든 서비스가 Upstart로 변환 된 것은 아닙니다) 다음 명령을 사용할 수 있습니다.

status SERVICE-변환 된 서비스가 실행 중인지 여부를 알려줍니다. 이 찬성 사용되지 않습니다 start, stop, status& restart. 또한 서비스가 아직 시작으로 변환되지 않았는지 알려줍니다.

변환 된 서비스는 일반적으로 현재 상태 (시작 중, 실행 중, 중지 중 ...) 및 프로세스 ID를 출력합니다. 변환되지 않은 서비스는 알 수없는 작업 에 대해 오류를 발생시킵니다 .

일부 단축키 service는 100 %가 시작 서비스로 변환되지 않는 한 위 의 명령 에서만 작동 하지만 아래의 명령에서는 작동하지 않을 수 있습니다.

  • 시작 -sudo start mysql

  • 중지 -sudo stop mysql

  • 다시 시작 -sudo restart mysql

  • 상태 -sudo status smbd

서비스 활성화 / 비활성화

서비스가 영구적으로 시작 또는 중지되지 않도록 전환하려면 다음을 수행해야합니다.

echo manual | sudo tee /etc/init/SERVICE.override

여기서 스탠자 manual는 다음 부팅시 Upstart가 서비스를 자동으로로드하지 못하게합니다. 이있는 모든 서비스 .override결말은 원래 서비스 파일보다 우선합니다. 이후에는 수동으로 서비스를 시작할 수 있습니다. 이를 원하지 않으면을 삭제하십시오 .override. 예를 들면 다음과 같습니다.

echo manual | sudo tee /etc/init/mysql.override

MySQL 서비스를 manual모드 로 전환합니다. 이것을 원하지 않으면 나중에 간단하게 할 수 있습니다.

sudo rm /etc/init/mysql.override

서비스가 자동으로 다시 시작되도록 재부팅하십시오. 물론 서비스를 활성화하려면 가장 일반적인 방법은 서비스를 설치하는 것입니다. Apache, Nginx, MySQL 등을 설치하면 설치가 완료되면 자동으로 시작되며 컴퓨터가 부팅 될 때마다 시작됩니다. 위에서 언급 한 바와 같이 비활성화하면 서비스가 사용 manual됩니다.


.service모든 명령 에 추가해야 합니까? systemctl mongod status잘 작동했습니다.
Dan Dascalescu

@ DanDascalescu 아니 당신은하지 않지만 거기에 명확하게하겠습니다.
Luis Alvarado

4
.override 파일을 /etc/init.d/에 배치해야합니까 (예 : 서비스가있는 위치)?
Obi Wan-PallavJha

15.04에서 Upstart가 더 이상 사용되지 않는 이유는 무엇입니까? 우분투 16.04 이상에서 시작 / 다시 시작할 때 스크립트를 실행하는 올바른 방법은 무엇입니까?
Kamalakannan J

1
이 포괄적 인 답변에 감사드립니다. systemd명령 세트는 우분투 18.04에서 치료를 작동합니다.
Doktor J

355

현재 Ubuntu, SysV , Upstartsystemd 에서 소프트웨어를 서비스로 시작하는 방법에는 실제로 세 가지가 있습니다 . 여기서 서비스는 사용자가 직접 시작하고 실행하는 것과 달리 백그라운드에서 시스템이 실행하는 프로그램으로 정의됩니다.

SysV

Linux에서 서비스를 시작하는 전통적인 방법은에 스크립트를 /etc/init.d넣은 다음 update-rc.d명령 (또는 RedHat 기반 배포판 chkconfig) 에서 스크립트 를 활성화 또는 비활성화하는 것입니다.

이 명령은 약간 복잡한 논리를 사용 /etc/rc#.d하여에서 서비스 시작 순서를 제어하는 심볼릭 링크를 만듭니다 . 실행 ls /etc/rc2.d하면 파일 이름과 같은 파일 이름으로 서비스가 종료 K##xxxx되고 파일 이름으로 시작 되는 순서를 볼 수 있습니다 S##xxxx. ##에서이 S##xxxx서비스에 대해 "시작 순서"를 의미한다 xxxx. 반대로 ##in K##xxxx은 서비스의 킬 순서를 의미합니다 xxxx.

SysV의 한 가지 주요 문제 는 시스템을 부팅 할 때 모든 것이 순차적으로 순차적으로 이루어져야하므로 시스템 부팅 시간이 정말 느려진다는 것 입니다. 이것을 병렬화하려고 시도했지만, 우연히도 최대한 활용하기가 어려웠습니다. 이것이 Upstart 가 만들어진 주된 이유입니다 .

건방진 녀석

Upstart는 작업 정의 파일 /etc/init을 사용하여 서비스를 시작해야하는 이벤트를 정의합니다. 따라서 시스템이 부팅되는 동안 upstart는 다양한 이벤트를 처리 한 다음 여러 서비스를 병렬로 시작할 수 있습니다. 이를 통해 예를 들어 다른 CPU 바인딩 서비스가 실행되는 동안 디스크 바인딩 서비스를 시작하거나 네트워크가 동적 IP 주소가 할당되기를 기다리는 동안 시스템 리소스를 완전히 활용할 수 있습니다.

다음을 실행하여 모든 시작 작업 파일을 볼 수 있습니다 ls /etc/init/*.conf

여기서 멈추고 서비스가 무엇인지 또는 무엇을 모르는 경우 비활성화하지 마십시오.

모든 서비스가 가동되지는 않았습니다. 지난 몇 달 동안 Canonical의 서버 팀에서 일하면서 수많은 변환 작업 파일을 작업했으며 가장 좋은 점은 모든 스크립트 "마법"을 제거하고 서비스를 시작하는 방법을 정확하게 정의하는 몇 가지 명령이 있습니다. 그러나 현재로서는 오징어삼바 와 같은 소수의 기존 네트워크 서비스 만 변환되었습니다.

서비스는 스타트 업 기반입니까?

서비스가 시작 기반인지 확인하기 위해 status 명령을 실행할 수 있습니다.

status servicename

그것이 있다면 신출내기 작업이,이 표시됩니다 :

$ status statd
statd start/running, process 942

그러나 그렇지 않은 경우 다음과 같은 내용이 표시됩니다.

$ status apache2
status: Unknown job: apache2

이 경우 upstartapache2 로 변환되지 않았습니다 . 그래서, 당신 이 비활성화 하려면 그냥 실행apache2

sudo update-rc.d apache2 disable
sudo service apache2 stop

시작시 서비스 (작업) 비활성화

시작 작업 정의에는 update-rc.d명령 이 없습니다 . 작업을 비활성화하려면 작업 파일을 직접 편집하여 비활성화해야합니다. 이를 수행하는 두 가지 방법이 있습니다.

여전히 수동으로 시작하려면 start on조건 을 주석 처리해야합니다 . samba 를 설치하려고하는데 자동으로 시작하지는 마십시오. 다음은 작업 파일입니다 (natty).

description "SMB/CIFS File Server"
author      "Steve Langasek <steve.langasek@ubuntu.com>"

start on local-filesystems
stop on runlevel [!2345]

respawn

pre-start script
    RUN_MODE="daemons"

    [ -r /etc/default/samba ] && . /etc/default/samba

    [ "$RUN_MODE" = inetd ] && { stop; exit 0; }

    install -o root -g root -m 755 -d /var/run/samba
end script

exec smbd -F

사용하지 않으려면 삼바 , 당신은 단지를 넣을 수 있습니다 #은 "앞에 start on local-filesystems". 부팅시 백업을 시작하지는 않지만 이번에는 여전히 멈춰야합니다.

sudo service smbd stop

그러나 삼바 를 시작 하지 않으려면 실제로 패키지를 제거하는 것이 좋습니다. 그러나 설치를 원하지만 시작할 수없는 경우 다음을 수행 할 수도 있습니다.

mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled

시작 / 중지 스탠자를 사용하여 서비스 사용 안함 (11.04 기준)

11.04에있는 upstart 버전으로 시작하여 start onstop on스탠자 를 비활성화하는 새 키워드가 manual있습니다. 따라서 11.04 현재 서비스를 비활성화하는 다른 방법은 다음과 같습니다.

echo 'manual' | sudo tee /etc/init/mysql.override

# command from root shell
echo manual >> /etc/init/mysql.override

키워드를 입력하기 override만하면 작업 정의를 전혀 편집하지 않고 서비스를 비활성화 하는 파일을 만들 수 있습니다 manual.


20
11.04도 재정의 된 것 같습니다. 따라서 echo manual >> /etc/init/<service>.override원래 .conf 파일은 그대로 유지하는 것이 좋습니다. 어쨌든, 그러한 기본 활성화 / 비활성화가 개발하는 데 3 년이 걸렸지 만 여전히 GUI가 없습니다.
MestreLion

3
update-rc.d 는 정말 중요합니다
Timofey

2
원래 질문 포스터에 의해 결정된 답변으로 태그 된 답변보다 원래 주제를 훨씬 더 잘 다루는 것 같습니다. 감사! :)
Henning

1
내 경우, 파일은 /etc/init/ssh.conf존재하지만 status ssh하고 status sshd모두 "알 수없는 일」이라고한다. 이 답변은 그러한 가능성을 다루지 않는 것 같습니까?
Brian Z

1
status ssh나도 '알 수없는 직업'을 제공하지만 service ssh status나를 위해 작동
ptim

129

sysv-rc-conf

sysv-rc-conf를 사용해보십시오

sudo apt-get install sysv-rc-conf

서비스 관리를 시작하려면

sudo sysv-rc-conf

다음과 같은 대화식 창이 나타납니다.

여기에 이미지 설명을 입력하십시오

Ctrl+n다음 페이지와 Ctrl+p이전 페이지를 사용하여 페이지를 더 탐색 할 수 있습니다 . SPACE원하는 런레벨 을 선택하여 서비스를 활성화 및 비활성화 할 수 있습니다 .

작업 관리자

다른 대안은 다음을 통해 설치하여 작업 관리자입니다.

sudo apt-get install jobs-admin

어느 것도 이런 GUI를 제공합니다

작업 관리자 미리보기

더 많은 작업을 표시 하려면 메뉴에서 보호 된 작업 표시 를 선택해야합니다.

chkconfig

세 번째 옵션은 chkconfig입니다 .

sudo apt-get install chkconfig

CLI를 통해 사용할 수 있으며 chkconfigOn / Off 작업 목록이 표시됩니다. 또한 우리는 다음을 사용하여 시스템 서비스를 볼 수 있습니다chkconfig –list

다음을 사용하여 서비스를 켤 수 있습니다

chkconfig <service> on

서비스를 사용하여 끌 수 있습니다

chkconfig <service> off

또한 적절한 표제를 가진 적절한 init 스크립트를 사용하여 자체 서비스를 추가 할 수도 있습니다.

chkconfig --add <service>

update-rc.d

그리고 또 다른 옵션을 참조 할 수 업데이 트 - rc.d 여기에 , 간단히 설명 여기 .

Ubuntu Server 12.04 update-rc.d 의 경우 chkconfig 대신 사용됩니다.


1
우분투 서버에서 :Package chkconfig is not available, but is referred to by another package.
pwned

@pwned 서버 에디션에 관한 업데이트 된 정보를 자유롭게 편집하고 게시 할 수 있습니다. 감사합니다.
atenz

나는 당신이 제안한대로, 지금은 동료 검토를위한 것입니다.
pwned

jobs-admin 은 작업 변경을 허용하지 않으며 (우분투 14.04) 대신 충돌 보고서를 생성합니다 ;-)
Sadi

5
sysv-rc-conf는 upstart 또는 systemd와 함께 사용하기에 적합하지 않으며, 거의 10 년 동안 Ubuntu Linux에서 기본값으로 사용되지 않은 기존 System 5 rc 시스템에만 적용됩니다. 데비안 버그 # 791689는이를 인정하고 시스템과 충돌하는 것으로 표시되지 않은 이유에 대해 의문을 제기합니다.
JdeBP

48

ssh를 통해 Ubuntu를 실행하는 사람들에게는 가장 좋은 옵션은 rcconf텍스트 기반 프로그램 이라고 생각합니다 .

sudo apt-get install rcconf
sudo rcconf

대체 텍스트

탭 및 화살표 키로 탐색하고 스페이스 바를 눌러 활성화 / 비활성화합니다. 다시 시작해도 변경 사항이 유지됩니다.

스크린 샷에서 빌린 이 블로그 게시물 도 보여주고, sysv-rc-conf또한 당신이 실행 레벨을 설정할 수 있습니다 비슷한 도구 -. (런레벨에 대해 충분히 신경을 쓰는 사람들은 변경하기를 원합니다.)

불행히도 rcconf는 /etc/init/*전통적인 메커니즘 ( ls -l /etc/init.d/*심볼릭 링크가 아닌 메커니즘)만으로 upstart (에 나열된 서비스)와 작동하지 않습니다 .

다행히 서버에 ssh-ing 할 때 관련되는 많은 서비스 (Apache, Tomcat, mdadm, boinc-client ...)는 아직 가동되지 않았습니다.


6
이것은 여전히 ​​upstart와 함께 작동합니까?
oKtosiTe

3
불행하게도. 그러나 그것은 내가 변경하고 싶었던 모든 경우에 효과가있었습니다. 시작 작업은 하드웨어 시계, 로그 데몬, 네트워크 등 (적어도 우분투 서버에서) 절대 비활성화하지 않는 것 같습니다. 그러나 그것은 알아야 할 것입니다 (나는하지 않았습니다 :), 게시물을 업데이트했습니다.
jg-faustus

불행히도 mysql은 upstart로 변환되었습니다. 그게 내가 프로젝트를 할 때만 사용하는 서비스입니다.
MestreLion

Ubuntu 12.04에는 rcconf에 버그가있어서 프로그램이 시작되지 않습니다. 이 문제를 해결하려면 대화 상자 패키지를 설치해야합니다.
devius

1
이 답변이 작성 되었으므로update-rc.d 변경 되었으며 사용되지 않는 기능 중 일부가 제거되었습니다 . 데비안 버그 # 727735는 rcconf가 일치하도록 변경되지 않았습니다. 그리고 rcconf는 systemd 와도 작동하지 않으므로 지난 10 년간 Ubuntu Linux의 기본 초기화 시스템에 적용 할 수 없습니다.
JdeBP

18

이 GUI 도구가 BUM과 같지만 Upstart와 호환된다는 것을 알았습니다.

  • 작업 관리자

    sudo apt-get install jobs-admin
    

그러나 너무 간단하고 "보호 된 작업"을 변경할 수 없습니다 (작업이 무엇입니까? Apple에 작업이 있고 운영 체제에 데몬이 있습니다!)
kakaz

심지어 "보호되지 않은 작업"(Ubuntu 14.04)을 변경하여 충돌 보고서 대신 ;-)를 만들 수도 없습니다.
Sadi

12

기존의 upstart 구성 파일을 편집하는 것은 좋은 생각이 아닙니다. 업데이트 된 패키지는 업데이트 된 구성을 제공 할 수 있으며 변경 사항을 반복해서 반복해야했습니다.

man 5 init하나를 살펴보면 재정의 구성을 사용하는 것이 더 적절한 해결책을 찾을 수 있습니다. 간단한 예 : "foobar"라는 서비스가 있다고 가정 해 봅시다. 그러면 /etc/init/foobar.confupstart 구성으로 불리는 파일이있을 것 입니다. 이제 파일을 제거하거나 수정하고 싶지는 않지만이 서비스를 실행하고 싶지 않습니까? 그래서 장소 재정의 옆에 파일을 : /etc/init/foobar.override대신 (설명과와 선택적 헤더)를 포함 start on/의 stop on라인은 하나 개의 단어로 라인을 넣습니다 manual. 이 방법으로 upstart에게 기본적으로을 사용하도록 지시 foobar.conf하지만 시작 정의를 재정 의하여 수동으로 시행 할 때만 해당 서비스를 시작하도록하십시오 (이 service foobar start예에서는).



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