디렉토리 (dropbox 디렉토리)에서 chmod / chown을 기억 적으로 수행하는 cron 작업을 설정하고 싶습니다.
이것은 다음과 같이 수동으로 명령을 실행할 때 작동합니다.
sudo chown -R $USER ~/Dropbox
sudo chmod -R u+rw ~/Dropbox
나는 이것을 다음과 같이 크론 작업으로 변환하려고 시도했다.
10 * * * * sudo chown -R $USER ~/Dropbox
그러나 그것은 일을하지 않는 것 같습니다.
이것을하는 방법?
답변
루트 크론 스크립트 (를 실행 sudo crontab -e
하여 편집 )는 다음과 같습니다.
55 * * * * /bin/chown -R somename /home/somename/Dropbox && /bin/chmod u+rw /home/somename/Dropbox
사용자의 이름이 지정 somename
되었고 /home/somename/Dropbox
Dropbox 디렉토리의 전체 경로 라고 가정합니다 . 루트 사용자로서 ~는로 이동합니다 /root
.
답변
sudo
해야 거의 결코 예약 된 작업에 사용되지 않습니다. 터미널과 통신 할 수있을 것으로 예상되며 그렇게하지 않으려면 특정 플래그가 필요합니다.
대신 cron 작업을 루트로 작성하십시오 (in- /etc/crontab
이 파일의 형식은 약간 다릅니다 :).
또한 설치되지 않은 시스템에서 작업 할 수 있다는 이점이 있습니다 .minute hour mday month wday
user
command
sudo
답변
두 가지 문제 :
1) 경로는 일반적으로 로그인 할 때와 같은 방식으로 cron에 설정되지 않습니다. / usr / bin / sudo / bin / chown … (또는 시스템의 해당 프로그램에 대한 올바른 경로)을 시도하십시오.
2) sudo는 일반적으로 암호를 요청하거나 비 대화식으로 실행하는 것이 행복하지 않을 수 있습니다. 대신 sudo없이 루트의 crontab에 명령을 넣은 다음 명령을 루트로 실행하는 것이 좋습니다.
답변
crontab에 여러 가지 문제가 있습니다.
10 * * * sudo chown -R $USER ~/Dropbox
문제 :
sudo
여기서 사용해서는 안됩니다. 터미널 입력이 필요합니다chown
완전히 지정해야합니다 (예/bin/chown
)USER
실제 변수가 존재하지 않을 수 있습니다. 일부 시스템 사용LOGNAME
~
(물결)은 단지 쉘에 의해 인식됩니다 – 베어chown
뜻을 이해하지- 루트의 crontab에서 HOME을 지정하면 루트의 홈으로 이동
실제로 스크립트를 작성했다고 생각합니다.
#!/bin/bash
# FILE: /usr/local/bin/myscript
USER=$1
eval chown -R $1 ~$1/Dropbox
eval chmod -R u+rw ~$1/Dropbox
합니다 (이 eval
변환에 필요 ~$1
에 ~user
다음 에 /home/user
.)
루트의 crontab에서이 스크립트를 실행하십시오.
# root's crontab
10 * * * /usr/local/bin/myscript someuser