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 at
replacement"가 "정확히 동일함"으로 표시되었으므로 삭제하고 다음과 같이 게시하겠습니다.
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.timer
Remove_Me.service
systemctl --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*
단위가 표시되지 않습니다.