"systemd-run --on-calendar"를 사용하여 생성된 타이머 제거

"systemd-run --on-calendar"를 사용하여 생성된 타이머 제거

systemd-run --on-calendar ...."이제 올바른 파일로 교체했습니다."를 사용하여 .timer시스템 작업을 생성했지만 .service이전 작업을 삭제할 수 없습니다. 중지하고 비활성화할 수 있지만 호출하면 systemctl list-timers여전히 임의의 이름으로 나타납니다 run-r0d0dc22.... 또한 해당 문서를 찾았 .timer지만 찾을 수 없습니다.

답변1

임시 파일은 결국 나타나며 /run/user/사용자가 로그오프(용)하거나 다시 시작(다시 생성)할 때까지 삭제되지 않는 것 같습니다 systemd-run --user./run

예를 들어, 주어진 시간에 한 번만 실행되는 명령을 생성하는 경우:

systemd-run --user --on-calendar '2017-08-12 14:46' /bin/bash -c 'echo done >/tmp/done'

다음 위치에서 파일을 얻을 수 있습니다 /run.

/run/user/1000/systemd/user/run-28810.service
/run/user/1000/systemd/user/run-28810.service.d/50-Description.conf
/run/user/1000/systemd/user/run-28810.service.d/50-ExecStart.conf
/run/user/1000/systemd/user/run-28810.timer
/run/user/1000/systemd/user/run-28810.timer.d/50-Description.conf
/run/user/1000/systemd/user/run-28810.timer.d/50-OnCalendar.conf

--user이외의 파일의 경우/run/systemd/system/

파일을 삭제 systemctl [--user] daemon-reload하고 다음을 수행하면 list-timers장치 이름만 실행된 경우 마지막 기록과 함께 표시됩니다. 이 정보는 systemd의 내부 상태나 로그 파일에 저장될 수 있습니다.

답변2

허용된 답변(파일을 삭제하고 a 수행 )이 작동하지 않았습니다. 대신 ;를 사용하여 타이머를 삭제할 daemon-reload수 있었습니다 . systemd --user stop unitfile다만, 유닛 파일을 사용했기 때문에 다를 수도 있습니다.


내 질문 "Systemd as atreplacement"가 "정확히 동일함"으로 표시되었으므로 삭제하고 다음과 같이 게시하겠습니다.

systemd 등을 사용하고 싶습니다 at. 쉘 스크립트를 실행하는 유닛 파일을 생성했지만("%I" 전달) 예약하는 데 문제가 있습니다. 이것을 사용하면 실행 후 타이머를 삭제하는 대신 내일 실행되도록 타이머를 활성 상태로 유지합니다.~/.config/systemd/user/[email protected]systemd-run --user --unit say@'test message' --on-calendar='13:54'

오늘 특정 시간에 한 번 단위 파일을 실행하도록 systemd에 어떻게 지시해야 합니까? 임시 타이머를 자동으로 정리하여 systemd --user stop say@'test message'나중에 정리할 필요가 없도록 하는 솔루션을 원합니다 .


A: 완전한 날짜를 지정해야 합니다. 그래서- ... --on-calendar='2018-04-16 13:54:00'. 이것도 자체적으로 올바르게 정리되는 것 같습니다.

답변3

나는해야만한다

systemctl --user stop Remove_Me.{service,timer}

systemd 버전 245를 사용하여 임시 타이머 장치를 제거합니다.

{service,timer}부분은 Bash 기능입니다.버팀대 확장


이리단의 대답달리기는 systemctl --user stop Remove_Me나에게 적합하지 않습니다. 나는 이것을 얻습니다:

경고: Remove_Me.service를 중지하는 중이지만 다음을 통해 계속 활성화할 수 있습니다: Remove_Me.timer

그리고 그 장치는 여전히 나타납니다 systemctl --user list-timers *Remove*.

읽다야옹의 대답, .timer 및 .service 파일을 /run/user/1000/systemd/transient/. 파일을 삭제하고 작업을 수행한 후에도 출력에는 systemctl --user daemon-reload여전히 남아 있습니다 .Remove_Me.timerRemove_Me.servicesystemctl --user list-timers

단위를 읽어서 느린 타이머를 없앴습니다

systemd-run --user --on-calendar=2025-01-01 -u "Remove_Me" touch ~/test_file

그럼 삭제해

systemctl --user stop Remove_Me.{service,timer}

이제 systemctl --user list-timers *Remove*단위가 표시되지 않습니다.

관련 정보