Debian에서 정책을 준수하는 시스템 사용자 정의 작업을 구현하는 방법은 무엇입니까?

Debian에서 정책을 준수하는 시스템 사용자 정의 작업을 구현하는 방법은 무엇입니까?

맞춤 작업은 무엇을 의미하나요? 여기 몇 가지 예가 있어요.

sudo service apache2 stop-htcacheclean   
sudo service apache2 graceful-stop
sudo service apache2 start-htcacheclean
sudo service apparmor recache

sysvinit 스크립트를 systemd 서비스로 포팅할 때 이를 어떻게 다시 구현합니까?

systemd의 문제점은 구별 데몬 매개변수를 조건부로 사용할 수 없다는 것입니다.

데비안 정책을 준수하면서 이를 수행하는 방법은 무엇입니까?

아니면 이미 그러한 사용자 정의/레거시 작업을 지원하는 데비안 시스템 서비스의 예를 알고 있습니까?

답변1

systemd는 단위에 대한 사용자 정의 작업을 지원하지 않습니다.

"이유"를 설명하십시오. 단위는 (주로) 종속성 그래프에 참여하는 것입니다. 사용자 정의 작업을 추가한다는 것은 사용자 정의 유형의 종속성을 추가할 수 있는 방법이 있어야 함을 의미합니다. 이는 구문과 논리를 불필요하게 복잡하게 만듭니다.

사실, "하나의 유닛 - 하나의 행동"이라는 규칙으로 생각할 수도 있습니다. 애플리케이션당 여러 단위를 갖는 것을 막을 수는 없습니다 $application-$action. 예를 들면 다음과 같습니다.

  • apache2 graceful-stop아마도 아파치를 중지하는 기본 방법이어야 할 것입니다.(비정상적인 정지의 경우 항상 존재함 systemctl kill)
  • apache2 {start,stop}-htcachecleanapache2-htcacheclean.service단위 로 직접 변환해야 합니다.
  • apparmor recacheExecReload=~에 있을 수도 있다apparmor.service (또는 apparmor-recache.service와 별도의 장치 Type=oneshot)

관련 정보