열려고 하면 crontab
다음 출력이 표시됩니다.
ubuntu@macaroon:~$ crontab -l
crontabs/ubuntu/: fopen: 권한이 거부되었습니다.
그러나 sudo
이것을 추가하면 잘 열리고 거기에서 작업하면 작동하지 않습니다.
ubuntu@macaroon:~$ sudo crontab -l
# Edit this file to introduce tasks to be run by cron.
# omitted such info
* * * * * /usr/bin/env python3 /home/ubuntu/main.py date >> ~/main_script_cronjob.log
이 기계에는 무엇이 빠졌나요? 이 동작을 수정하는 방법
다른 컴퓨터는 crontab
일반 명령을 사용하면 잘 작동 하므로 sudo
.
여기서 몇 가지 해결 방법을 수행해야 합니다.
sudo crontab -u 우분투 -e
그러면 crontab
우분투 사용자에게는 올바르게 열립니다.
고쳐 쓰다:
자세한 내용은 추가 정보 crontab
:
ubuntu@macaroon:~$ ls -l /usr/bin/crontab
-rwxrwxrwx 1 root crontab 39568 Mar 23 2022 /usr/bin/crontab
ubuntu@macaroon:~$ sudo namei -l /var/spool/cron/crontabs/ubuntu
f: /var/spool/cron/crontabs/ubuntu
drwxr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x root root spool
drwxr-xr-x root root cron
drwx-wx--T root crontab crontabs
-rw------- ubuntu root ubuntu
Docker 컨테이너가 아닙니다. 물리적인 기계입니다.
답변1
명령이 crontab
권한을 잃었습니다. 예를 들어 내 (Raspbian) 시스템의 권한에는 다음이 포함됩니다.설정crontab
( s
그룹 권한 비트):
-rwxr-sr-x 1 root crontab 30452 Feb 22 2021 /usr/bin/crontab
ls -l /usr/bin/crontab
문제의 시스템에서 실행하고 결과를 질문에 추가하여 이를 확인할 수 있습니다. 누락된 setgid 비트를 수정하는 방법은 다음과 같습니다.
sudo chmod u=rwx,go=rx,g+s /usr/bin/crontab
(저는 기호 값을 선호합니다: User=rwx, Group,Others=rx, Group+setgid. 8진수도 사용할 수 있습니다 2755
.)
또한 Docker에서 실행하려고 하면 일반적으로 기본적으로 권한이 제거되므로 알려주시기 바랍니다.
답변2
문제를 해결하려면 systemd-timer를 사용할 수 있습니다.
mkdir -p ~/.config/systemd/user
systemd 서비스 단위 파일:
cat <<EOF > ~/.config/systemd/user/myservice.service
[Unit]
Description= description here
[Service]
Type=simple
ExecStart=/bin/bash -c '/usr/bin/python3 /home/ubuntu/main.py date >> ~/main_script_cronjob.log'
[Install]
WantedBy=default.target
EOF
시스템 타이머 단위 파일을 작성합니다.
cat <<EOF > ~/.config/systemd/user/myservice.timer
[Unit]
Description="Run service every 1 min"
[Timer]
OnCalendar=*-*-* *:*:00
[Install]
WantedBy=default.target
EOF
그런 다음 서비스와 타이머를 활성화합니다.
systemctl --user start myservice.{service,timer}