systemd의 SysV init 스크립트를 사용할 수 있나요?

systemd의 SysV init 스크립트를 사용할 수 있나요?

Ubuntu 14에는 여러 개의 SysV초기화 스크립트( /etc/init.d/)가 있습니다.

systemd단위 파일을 동적으로 생성하는 Ubuntu 16으로 마이그레이션한 후에는 실제로 작동하지 않았습니다 . 일부 서비스는 시작할 수 있고 일부 서비스는 시작할 수 없습니다.

내 의견은 다음과 같습니다.

  1. SysV초기화 스크립트( /etc/init.d/-> )를 재배치 /var/lib/my-services/하고 해당 스크립트를 통해 서비스를 시작할 수 있는지 확인하세요.

  2. 적절한 systemd유닛 파일 생성( /etc/systemd/system) 및 재배치된 SysV초기화 스크립트 사용( /var/lib/my-services/)

SysVinit 스크립트를 재사용할 수 있나요 ? 아니면 SysV적용되지 않는 특정 내용을 포함할 수 있나요 systemd?

업데이트 #1:SysVUbuntu 16의 Apache2는 초기화 스크립트( ) 와 함께 기본으로 제공됩니다 /etc/init.d/apache2. systemdApache2에 대한 예가 있습니까 ?

답변1

systemd에는 이전 버전과의 호환성이 있지만 일대일은 아닙니다. 예를 들어 SysV init 스크립트에서는 사용자 정의 하위 명령을 추가할 수 있지만 systemd에서는 추가할 수 없습니다.

내 경험에 따르면 이전 init 스크립트를 정상적으로 실행하려고 하면 추가 디버깅이나 이상한 동작이 발생할 수 있습니다.

init 스크립트를 시스템 단위 파일로 다시 작성하면 장기적으로 시간을 절약할 수 있다고 생각합니다.

표준 타사 소프트웨어를 사용하는 경우 프로젝트는 이미 사용할 수 있는 자체 시스템 단위 파일을 제공할 가능성이 높습니다.

답변2

SysV init 스크립트와의 시스템 호환성은 다음에 의해 제공됩니다.systemd-sysv-생성기, 시스템 단위를 동적으로 작성하고 시작/중지/다시 로드를 구현하기 위한 적절한 매개변수를 사용하여 init 스크립트를 호출합니다.

작업을 수행하기 위해 systemd-sysv-generator는 다음에 크게 의존합니다.LSB 헤더아래와 같이 SysV 초기화 스크립트:

### BEGIN INIT INFO
# Provides: lsb-ourdb
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start:  2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop OurDB
# Description: OurDB is a very fast and reliable database
#    engine used for illustrating init scripts
### END INIT INFO

SysV init 스크립트에 올바른 LSB 헤더가 없으면 systemd-sysv-generator가 이를 자동으로 systemd 장치로 변환하지 못할 수 있습니다.

systemd-sysv-generator에 의해 생성된 유닛은 systemd-sysv-generator 아래에 저장되므로 /run/systemd/system여기서 파일을 찾 *.service거나 이 systemctl cat명령을 사용하여 유닛의 내용을 나열할 수 있습니다. 또한 이 systemctl edit명령을 사용하여 SysV 초기화 스크립트에서 생성된 셀에 재정의를 추가할 수도 있습니다. (예를 들어 장치에 추가 종속성을 추가하거나 주문 지침을 추가하려는 경우 유용합니다.)

그러나 SysV init 스크립트를 기본 systemd 단위로 변환하는 위험을 감수하는 것이 더 나은 접근 방식이며 장기적으로 이익을 얻을 수 있습니다. 특히 명령이 포그라운드(데몬 대신) 및 SysV init에서 실행될 수 있는 경우 더욱 그렇습니다. 스크립트가 Daemonize 명령으로 실행 중입니다. (이 경우 systemd가 더 잘할 수 있으며 명령 자체를 데몬화하면 더 좋을 것입니다.)

확인하다Fedora 매거진의 이 기사SysV init 스크립트를 시스템 단위로 변환하는 방법에 대한 팁과 요령이 시작되길 바랍니다. 초기화 스크립트를 변환하는 데 문제가 있는 경우 주저하지 말고 여기로 돌아와 자세한 내용을 문의하세요. 행운을 빌어요!

관련 정보