명령 행에서 실행 된 서비스를 시작 / 중지 / 다시 시작하는 방법은 무엇입니까?


149

GUI를 사용하지 않고 Mac OS X> = 10.5 (Leopard-)를 실행하고 시스템 환경 설정-> 공유 로 이동 하고 "웹 공유"를 선택 해제 / 체크 해제 하지 않고 httpd 또는 afpd와 같이 어떻게 다시 시작 합니까?

데비안과 동등한 표준을 찾고 invoke-rc.d apache2 restart있습니다.

편집 : 문제는 일반적으로 Apache가 아닌 일반적으로 시작된 제어 서비스에 관한 것 입니다.


1
지금까지 답변 에서 서비스 를 다시 시작 하는 단일 launchctl 명령이 없다고 가정하는 것이 맞 습니까?
— JS.

@JS. 매뉴얼 페이지에 따르면 옵션 kickstart과 함께 -k트릭을 수행하는 것 같습니다. 아래 내 대답을 참조하십시오 ...
— jochen

답변:


158

안녕하세요 launchctl (8)은 당신의 친구입니다. 구성 파일에서 일부 서비스 (예 : sshd)가 비활성화되어 있으므로 -w로드 할 때 스위치 를 사용해야 합니다. 다음은 sshd 예입니다.

$ sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist 

unload하위 명령을 사용하여 서비스를 중지 할 수 있습니다 .

$ sudo launchctl unload  /System/Library/LaunchDaemons/ssh.plist 

이미 짐작했듯이 서비스를 나열하려면 'list'하위 명령을 사용하십시오.

재밌다, n


9
또한 launchctl list불평하지 않고 모든 것을 보여주지는 않습니다 sudo launchctl list.
— conny

9
모든 것을 표시하지는 않으며 완전히 다른 목록을 표시합니다. launchctl일반 사용자로 실행하면 사용자 세션에서 실행중인 LaunchAgent를 표시 / 관리합니다. 루트로 실행하면 시스템 전체의 LaunchDaemon을 표시 / 관리합니다.
— Gordon Davisson

1
해당 목록에서 "com.openssh.sshd"를 볼 수 있으므로 구성이 "로드"된 것 같습니다. 자, 예를 들어 sudo launchctl start com.openssh.sshd어떻게 아무것도 하지 않고 , 오류 메시지로 에반이 실패 하지 않고 , 실제로 실제로 아무것도 실행하지 않습니까?
— conny

2
@conny 일반적인 경우에는 혼란 스러울 수 있지만 서비스를 작성 중이고 시작시 문제가 발생하는 것으로 의심되는 경우 한 번로드하면 'stop'/ 'start'를 사용하여 문제를 디버깅 할 수 있습니다. .
— nayden

6
launchctl start <label>또는에 대한 언급이없는 이유는 무엇 launchctl stop <label>입니까? launchctl에 의해 이미 시작된 경우 plist 파일을 다시로드 할 필요가 없습니다 (변경되지 않는 한)? restart또는 reload명령 이 없다는 것이 짜증납니다 . mongod가 구성 파일 변경을 선택하는 단일 명령 방법을 아는 사람이 있습니까? 난 그냥 만족하지 않습니다 ... stop ... && ... start ....
— Brian

7

sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist


5

서비스를 다시 시작하려면 옵션 launchctl kickstart과 함께 명령을 사용할 수 있습니다 -k. 예를 들어, 아파치를 다시 시작하려면

sudo launchctl kickstart -k system/org.apache.httpd

이 정보는 launchctl매뉴얼 페이지에서 제공됩니다.

 kickstart [-kp] service-target
          Instructs launchd to run the specified service immediately, regardless of its
          configured launch conditions.

          -k       If the service is already running, kill the running instance before
                   restarting the service.
          [...]

1
이 서비스를 중단했을 때 잠시 기다린 후에도 멈추지 않았습니다 .pid에서 "kill"이 도움이되지 않았습니다 .pid에서 "kill -9"를 수행하면 프로세스가 종료되고 킥 스타트가 시작되었습니다 (다른 시스템에서 실행 중임) 프로세스를 종료하려고 시도하는 동안 콘솔) 서비스를 계속하고 다시 시작하십시오. 나는 물건을 수동으로 죽이기 시작하기 전에 오랫동안 기다리지 않았으므로 오랫동안 기다리면 문제를 해결할 수있을 것입니다.
— Samuel Åslund

3

당신은 단순히 할 수 있습니다

sudo launchctl stop com.openssh.sshd

전체 서비스 이름을 모르면 할 수 있습니다

sudo launchctl list

여전히 원하는 서비스를 찾지 못하면 루트 ID없이 실행 해보십시오.

launchctl list

또한 서비스를 언로드 및로드 할 필요가 없습니다.


1
나는 이것을 시도했고 지금 ssh은 내 Mac에서 사용할 수 없습니다 . 재부팅해도 문제가 해결되지 않습니다. 교체 stop로 start도 해결되지 않습니다.
— P i

1
나는 이것을 시도했지만 여전히 내 Mac으로 ssh 할 수 있습니다!
— Michael

@ dmitriy-apollonin 작동하지 않습니다 sudo unload /System/Library/LaunchDaemons/ssh.plist. 대신 사용해야 합니다.
— SebMa

문제는 서비스를 다시 시작하는 것에 관한 것이지만 서비스를 다시 시작한다고 생각하지 않습니다 launchctl stop.
— jochen

2

찾고 있습니다 launchctl.

SYNOPSIS
 launchctl [subcommand [arguments ...]]

DESCRIPTION
 launchctl interfaces with launchd to load, unload daemons/agents and gen-
 erally control launchd.  launchctl supports taking subcommands on the
 command line, interactively or even redirected from standard input.
 These commands can be stored in $HOME/.launchd.conf or /etc/launchd.conf
 to be read at the time launchd starts.

2
그러나 맨 페이지를 읽는 invoke-rc.d my-little-daemon restart다고 해서 그에 해당하는 것이 무엇인지는 알 수 없습니다. "job_label"을 참조하지만 "job_label"을 나열하는 방법은 알려주지 않습니다.
— conny

나는 nayden의 응답이 이것을 커버했다고 생각합니다.
— eric.s

2

만약 당신이 찾고 있다면 launchctl reload, ~/.bashrc/.zshrc내가했던 것처럼 쉘 함수를 정의 할 수 있습니다 :

function lctl {
    COMMAND=$1
    PLIST_FILE=$2
    if [ "$COMMAND" = "reload" ] && [ -n "$PLIST_FILE" ]
      then
        echo "reloading ${PLIST_FILE}.."
        launchctl unload ${PLIST_FILE}
        launchctl load ${PLIST_FILE}
      else
        echo "either command not specified or plist file is not defined"
    fi
}

명령 실행은 다음과 같습니다-> lctl reload <your-plist-name>.plist


1
sudo apachectl restart

다른 OS와 함께 작동하며 Apache의 일부입니다.


1
비록 주제가 아파치를 언급하지 않더라도, 나는이 해석을 예상했을 것이다 .... 미안하지만, 그것이 내가 찾고 있던 것은 아니었다 :)
— conny

좋아, 나는 apachectl을 사용하는 것이 더 쉬운 변형 인 httpd 부분을 잡았다 :)
— Sven

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