두 개의 보완 타이머 중 하나를 일시적으로 재정의합니다.

두 개의 보완 타이머 중 하나를 일시적으로 재정의합니다.

밝은 색 구성표와 어두운 색 구성표 사이를 전환하기 위해 각각의 타이머에 의해 트리거될 때 흰개미 구성 파일에 대한 심볼릭 링크를 생성하는 스크립트를 실행하는 두 개의 장치를 설정했습니다. 링크된 파일에는 적절한 밝은 구성표 또는 어두운 구성표가 포함되어 있으며 흰개미가 이를 수신하면 SIGUSR1해당 구성을 다시 로드합니다. 문제 없다.

$ systemctl --user list-timers
NEXT                         LEFT          LAST                         PASSED  UNIT             ACTIVATES
Mon 2018-11-05 14:20:00 CET  9min left     Mon 2018-11-05 14:10:13 CET  1ms ago brightside.timer brightside.service
Mon 2018-11-05 16:00:00 CET  1h 49min left n/a                          n/a     darkside.timer   darkside.service

$ cat ~/.config/systemd/user/brightside.timer
[Unit]
Description=Ensure a bright colorscheme every ten minutes during the day.

[Timer]
OnCalendar=*-*-* 09..15:0/10

[Install]
WantedBy=timers.target

그래서 낮에는 10분 brightside.service간격으로 연결됩니다 termite_light.conf. ${XDG_CONFIG_HOME}/termite/config그런 다음 darkside.timer인계받습니다.

[Timer]
OnCalendar=*-*-* 16..23:0/10
OnCalendar=*-*-* 00..08:0/10

~/.config/systemd/user/{dark,bright}side.d/override.conf이제 쉘 스크립트를 사용하여 심볼릭 링크를 생성하거나 삭제하여 타이머 중 하나 또는 둘 다를 재정의 하고 싶습니다 . 궁극적으로 나는 전기 콘센트 타이머와 같이 프로그래밍 가능한 타이머 설정을 원합니다. (그러나 계절에 따른 낮의 길이를 바꿀 수 있다는 장점이 있습니다). 여기서 아이디어는 4방향 스위치를 제공하는 것입니다.

  • 브라이트【주의사항】
  • 밝음[자동]
  • 어둠【수동】
  • 다크 [자동]

낮에 모드를 설정 하면 dark [automatic]스크립트는 먼저 어두운 구성표를 설정합니다. 그런 다음 brightside.timer타이머를 일시적으로 무시하거나 중지하여 즉시 다시 전환하지 않도록 해야 합니다 .darkside.timer하지만 시간이 다 되면 brightside.d/override.conf삭제되거나 Brightside.timer가 다시 시작 되도록 하려면 어떻게 해야 합니까 ?

AssertPathExists이전에는 타이머를 덮어쓰기 위해 /tmp의 빈 파일을 사용했습니다 . 아마도 override.conf를 병합하기 위해 데몬을 다시 로드할 것이기 때문에 이것이 여전히 최선의 솔루션일 것입니다. 그렇지 않습니까?

답변1

한 가지 옵션은 하루에 한 번 전환 시간(오전 9시와 오후 4시)에만 실행되는 두 개의 타이머(및 서비스)를 더 도입하고 해당 서비스에서 재정의를 제거하고 필요에 따라 타이머를 다시 활성화하여 제거하도록 하는 것입니다. 수동으로 설정하고 자동으로 돌아갑니다.

그러나 나는 정말로 당신이 이것을 어느 정도 과도하게 엔지니어링하고 있다고 생각합니다... 비록 당신이 단일 쉘 스크립트 없이 이 모든 것을 구현할 수 있었고 매우 유연한 달력 사양과 같은 시스템 기능을 최대한 활용했지만 당신은 공로를 인정합니다. 타이머 단위와 파일 덮어쓰기의 편리성 때문에 systemd에서 시스템 상태(어두움 대 밝음, 수동 대 자동)를 인코딩하는 것은 실제로 전체 솔루션을 단순화하지 못한다고 생각합니다.

연습으로 포트폴리오가 더 크다고 상상해보세요. 예를 들어, 매일 두 가지가 아니라 세 가지 색 구성표를 사용한다면 어떨까요? 아니면 매 시즌마다 하나씩 네 가지 "밝은" 색상 구성표가 있다면 어떨까요? 아니면 일출/일몰 시간에 따라 전환 시간을 조정하고 싶으십니까?

내 생각에는 단일 시스템 타이머 + 서비스를 사용하여 색 구성표를 전환하고 서비스에서 스크립트(셸, Python 등)를 호출하여 현재 시간을 고려하여 색 구성표를 선택하는 것이 더 적절할 것입니다. 또한 기존 오버레이를 관리할 수도 있습니다(아마도 /run의 상태 파일을 사용할 수도 있습니다).

이러한 시스템은 시스템 단위만 사용하여 구축한 시스템보다 전반적으로 더 간단하고 확장성이 뛰어납니다.

관련 정보