SE.com에서 cronjob, crontab 및 cron 작업 일정을 변경하는 방법에 대한 많은 게시물을 읽었습니다. 하지만 내 데비안 환경에서는 세션 정리 작업이 단순히 "php"라고 예약되고 /etc/cron.d에 존재하며 루트를 사용자로 지정하고 현재 30분마다 실행되는 것 같습니다.재부팅하지 않으면 일정을 변경할 수 없습니다..
cat /etc/cron.d/php
반품:
9,39 8-20 * * * root [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean 2>>/dev/null; fi
/etc/init.d/cron restart에도 불구하고 내가 변경한 시간/분 변경 사항은 고려되지 않습니다. 프로덕션 서버에 있으므로 호스트를 쉽게 다시 시작할 수 없거나 실험용으로 사용할 수 있습니다.
crond에게 일정 변경을 고려하도록 명령을 내릴 수 있나요?
답변1
데비안에 오신 것을 환영합니다. 더 이상 cron을 사용하지 않습니다.
M. Kitt의 말이 맞습니다. Stack Exchange는 질문당 하나의 질문을 선호하지만 이 경우 두 질문 모두 근본적인 실수에서 비롯됩니다.귀하는 크론 작업을 실행하고 있다고 잘못 생각하고 있습니다.
이전 크론 작업 설명에서 본 것처럼 크론 작업은자기 비활성화시스템에서 systemd가 실행되는 것을 볼 수 있기 때문입니다.
… && 만약에[ ! -d /run/systemd/system ];그런 다음... ;Phi
/etc/cron.d/php
그건 그렇고, 이것은 비공식적이지 않습니다. 그 설치방법은데비안 PHP-공통 패키지. 실행 중인 항목도 동일한 패키지에서 설치됩니다.바꾸다해당 크론 작업:
- systemd라는 타이머 유닛
phpsessionclean.timer
- 이름이 지정된 systemd 서비스 단위
phpsessionclean.service
오늘날 점점 더 많은 데비안 패키지에서 이 패턴을 찾을 수 있습니다. cron 작업은 systemd 장치로 대체되고 systemd가 실행되는 동안에만 자체적으로 비활성화됩니다.
따라서 cron 테이블에서 일정을 조정해도 아무런 효과가 없습니다. (쉘 명령의 실행 시간을 변경하는 것 외에는)아무것도 하지 않았다예정). 마찬가지로 cron 테이블에 환경 변수를 설정해도 아무런 효과가 없습니다. 타이머 단위에서 스케줄을 변경하고, 서비스 단위에서 환경변수를 변경해야 합니다.
systemctl cat
자세한 내용은 이 답변의 범위를 벗어나지만 시스템 단위, 단위 재정의 파일 및 systemctl status
및 명령을 간략하게 이해해야 합니다 systemctl edit
.
추가 읽기
- Lennart Petlinget al. "환경".
systemd.exec
. 시스템 매뉴얼 페이지. freedesktop.org. - Lennart Petlinget al. "옵션".
systemd.timer
. 시스템 매뉴얼 페이지. freedesktop.org. - .service를 수정하고 지속적으로 유지하려면 어떻게 해야 하나요?
- 사용자가 생성한 시스템 단위 파일을 저장할 위치
- https://unix.stackexchange.com/a/196252/5132