답변:
루트 크론 스크립트 (를 실행 sudo crontab -e하여 편집 )는 다음과 같습니다.
55 * * * * /bin/chown -R somename /home/somename/Dropbox && /bin/chmod u+rw /home/somename/Dropbox
사용자의 이름이 지정 somename되었고 /home/somename/DropboxDropbox 디렉토리의 전체 경로 라고 가정합니다 . 루트 사용자로서 ~는로 이동합니다 /root.
$PATHcronjob에있는 사용자에 서명 한 자에게 해당 정의 할을 (예를 들어, 내 linuxbox의 $에 집이 정의되어 있지만, $ PATH로 설정되어 /usr/bin와 /bin의 crontab과 $ USER에서 이 경우 /binchmod / chown 전에 지정할 필요가 없습니다. ) (b) sudo스크립트에서 피하십시오 (cron 작업을 root사용자 로 실행 ), (c) 루트 사용자 $HOME는 일반 사용자가 아닌 / root를 참조하므로 , (d) ~는 cron 스크립트에서 피해야합니다 (기본적으로 #!/bin/sh.
find) 등 만 스크립트에 넣는 것 이상으로 실행하기로 결정한 경우 .
sudo해야 거의 결코 예약 된 작업에 사용되지 않습니다. 터미널과 통신 할 수있을 것으로 예상되며 그렇게하지 않으려면 특정 플래그가 필요합니다.
대신 cron 작업을 루트로 작성하십시오 (in- /etc/crontab이 파일의 형식은 약간 다릅니다 :).
또한 설치되지 않은 시스템에서 작업 할 수 있다는 이점이 있습니다 .minute hour mday month wdayusercommandsudo
55 * * * * root chown -R somename ~/Dropbox
somename어디에나있을 수 있습니다. 상대 경로입니다. 둘째, ~껍질 만 이해합니다. 사용하십시오 $HOME. 다음과 같은 명령을 사용하십시오 : chown -R /some/path/somename $HOME/Dropbox( root's 홈 디렉토리를 사용할 것입니다 ...)
somename는 경로는 아니지만 사용자 이름 (및 그룹 이름도 포함해야 함 somename:somegroup
~은 매우 중요 합니다. cron 및 crontab 매뉴얼 페이지에서 시간을 보내고 진행 상황을 이해해야합니다 (의심 할 경우) , Cron 작업을 작성 echo "what you want to do" > /tmp/what-i-would-run하고 결과를보고
crontab에 여러 가지 문제가 있습니다.
10 * * * sudo chown -R $USER ~/Dropbox
문제 :
sudo여기서 사용해서는 안됩니다. 터미널 입력이 필요합니다chown완전히 지정해야합니다 (예 /bin/chown)USER실제 변수가 존재하지 않을 수 있습니다. 일부 시스템 사용LOGNAME~(물결)은 단지 쉘에 의해 인식됩니다 - 베어 chown뜻을 이해하지실제로 스크립트를 작성했다고 생각합니다.
#!/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
incron+inotify는 더 깨끗한 솔루션이 될 것입니다 :)