이전 시작/중지/상태 초기화 스크립트를 systemd로 옮기고 싶습니다.
기본적으로 시작하는 방법은 다음과 같습니다.
ifconfig eth0:vip 10.0.0.1/24 up
멈추다:
ifconfig eth0:vip down
상태:
ifconfig | grep 'eth0:vip'
시스템 서비스 단위를 생성하려고 합니다.
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/path/myscript start
ExecStop=/path/myscript stop
Restart=no
그러나 systemctl status
eth0:vip가 다운된 시점을 수동으로 감지할 수 있는 방법은 없습니다 ifconfig eth0:vip down
.
내 스크립트가 systemd와 호환되도록 하려면 어떻게 해야 합니까?
답변1
본 장치는 규정을 준수합니다. 이런 의미에서 개선할 점은 없습니다.
System V init의 스크립트와 달리 systemctl status foo
systemd는 사용자 정의 작업 정의를 전혀 지원하지 않습니다. 실행 중인 데몬만 확인할 수 있습니다(또는 제공하지 않을 수도 있음).init.d
systemd
RemainAfterExit
systemd는 네트워크 상태, IP 주소 또는 사용 중인 이전 인터페이스 별칭 단위를 추적하지 않습니다.
두 번째 IP 주소를 포함하도록 기본 네트워크 구성 시스템을 변경할 수 있습니다. 모든 네트워크 주소 구성을 같은 장소에 유지하고 싶을 수도 있습니다 :).
시스템 네트워크지원하다동일한 인터페이스에서 DHCP와 정적 주소를 실행합니다. NetworkManager에서는 지원되지 않지만 이제 생성할 수 있습니다.키 파일가상 생성맥에버랜드인터페이스는 물리적 인터페이스의 하위 항목입니다. (이론적으로 이를 통해 여러 DHCP 주소를 요청할 수도 있습니다.) 여러 구성 시스템의 구성을 동일한 이름의 인터페이스에 적용하려고 시도하지 마십시오. NetworkManager를 이미 실행하고 있다면 사용하는 것이 가장 쉬운 방법일 것입니다.
systemd-network(networkctl) 및 NetworkManager(예: nmcli)는 모두 네트워크 인터페이스를 직접 변경했는지 감지하고 표시합니다.
기존 구성 시스템을 구성하는 것도 가능합니다 [1][2] macvlan 인터페이스를 생성합니다. 그러나 내가 이해하는 바로는 뒤에서 인터페이스를 조작하면 매우 혼란스러워질 수 있습니다.
필요한 경우 대부분의 구성 시스템에서 추가 사용자 정의 사전 또는 사후 작업을 수정할 수 있습니다.삼], systemd-networkd에는 그러한 시스템이 내장되어 있지 않습니다. NM 시스템은 실제로 특정 인터페이스용으로 작성된 스크립트를 실행하도록 설계되지 않았기 때문에 "해킹됐다"고 말합니다.