/etc/init.d/스크립트를 직접 실행 하지 마세요 .

/etc/init.d/스크립트를 직접 실행 하지 마세요 .

저는 Debian Jessie를 사용하고 있는데 init.d에서 일부 스크립트(시작, 중지, 다시 시작)를 사용하려고 합니다. 일부 함수는 log_failure_msg log_daemon_msg log_end_msg표준 출력에서 ​​무언가를 제공해야 하지만 그렇지 않습니다. 이전 버전의 데비안에서는 잘 작동했던 것으로 기억합니다. 실패한 스크립트를 사용하려고 시도하는 경우에도 항상 동일한 출력을 얻습니다.

kuban@lenovo-y510p:/etc/init.d$ sudo /etc/init.d/parstart 재시작

[ ok ] parstart를 다시 시작합니다(systemctl을 통해): parstart.service.

답변1

init.d[...]의 일부 스크립트를 사용하려고 합니다 .

/etc/init.d/스크립트를 직접 실행 하지 마세요 .

시스템 운영 체제에서는 이러한 스크립트가 귀하의 서비스에 특정한 스크립트라는 것은 물론이고 존재한다는 보장도 없습니다. Debian 7에도 System 5 스크립트를 대체한 systemd 장치가 있습니다 rc. Debian 8에서는 더욱 그렇습니다. 사용할 올바른 명령은 다음과 같습니다.

  • systemctl및 해당 하위 명령 status, start, stop, enabledisable
  • service
  • update-rc.dinvoke-rc.d, 그러나 패키지 관리자 스크립트인 경우에만 해당됩니다.

이것이 바로 당신에게 일어난 일입니다. 스크립트에 대한 직접 호출은 널리 사용되는 데비안 스크립트 라이브러리의 후크를 통한 호출(이 경우)로 대체됩니다.

systemctl 재시작 parstart.service

앞의 출력에서도 이를 확인할 수 있습니다. 그게 (via systemctl): parstart.service내 뜻이야. 확실히 실패와는 거리가 멀었다성공서비스를 다시 시작하도록 systemd에 지시합니다.

스크립트의 대화형 종소리와 휘파람 rc(컬러 메시지 포함)이 더 이상 작동하지 않습니다. 귀하의 서비스가 하위 프로세스로 실행되고 있지 않습니다 systemctl. 이는 하위 프로세스로 실행되며 systemd대화형으로 명령을 실행하는 터미널에 대한 연결이 없습니다.

그럼에도 불구하고 이 모든 /etc/szarp/parstart.cfg스캐폴딩 및 로그 메시지 생성은 systemd에 전혀 필요하지 않습니다. systemd는 서비스를 활성화 및 비활성화하고 자동으로 다시 시작하기 위한 서비스 간 메커니즘을 제공합니다. 서비스에 그렇게 하지 않고도 서비스가 시작되고 중지되는 시기를 기록합니다. 내 계산에 따르면 이 스크립트는 각 서비스마다 하나씩, rc16개의 일반 단위로 쉽게 대체될 수 있습니다 . .service그 모습은 다음과 같습니다.

[단위]
설명=SZARP pserver-lite 서버
이후 = network.target

[제공하다]
유형=단순
ExecStart=/usr/local/bin/pserver-lite --no-daemon

[설치하다]
WantedBy=다중 사용자.대상

호출하고 /usr/local/etc/systemd/system/pserver-lite.service, 실행 systemctl daemon-reload하고...

  • ...사용 가능한 상태 정보가 있습니다 systemctl status pserver-lite.service.
  • ...를 사용하여 부트로더에서 실행되도록 할 수 있습니다 systemctl enable pserver-lite.service.
  • ....를 사용하여 systemd의 시작 및 중지 로그 항목을 볼 수 있습니다 journalctl.

나머지 15명에게는 거의 쉬웠습니다.

추가 읽기

관련 정보