저는 다음 두 가지 Cron 작업을 배치하려고 합니다.
0 3 * * * ! sudo -u asterisk /var/lib/asterisk/bin/module_admin --repos extended,standard,unsupported upgradeall
30 3 * * * ! sudo -u asterisk /var/lib/asterisk/bin/module_admin reload
실행할 수 있도록 저장소에
wget www.website.com cronjob.(zip or text)
crontab에 주입할 수 있도록 어떻게 저장하고 어떻게 해야 합니까?
간단하다면 죄송합니다. 하지만 저는 매우 초보이고 다른 웹 리소스가 도움이 되지 않았습니다.
답변1
이는 보안상의 큰 위험이지만,
wget www.website.com cronjob.txt
crontab -u username cronjob.txt
하지만 crontab이 제대로 보이지 않습니다. sudo, cron 작업을 설치한 사용자로 실행하려면 왜 필요한가요? 따라서 이 줄을 별표의 crontab에 넣는 것이 좋습니다.
sudo crontab -u asterisk
그런 다음 추가
0 3 * * * /var/lib/asterisk/bin/module_admin --repos extended,standard,unsupported upgradeall
30 3 * * * /var/lib/asterisk/bin/module_admin reload
답변2
wget -O - www.website.com/cronjob.gz|zcat|sudo tee -a /etc/crontab
또는
crontab -l | cat - <(wget -O - www.website.com/cronjob.gz|zcat)| crontab -
이러한 명령의 단점은 명령이 존재하지 않는지 확인하지 않는다는 것입니다. crontab.d 또는 cron.d 디렉토리(존재하는 경우)를 사용하고 사용 중인 서비스가 포함된 파일을 생성하는 것이 가장 좋습니다. 또 다른 옵션은 다음과 같은 더 멋진 스크립트입니다.
grep '^### Next three lines added by script 456' /etc/crontab && exit
sudo tee -a /etc/crontab <<< EOF
0 3 * * * ! sudo -u asterisk /var/lib/asterisk/bin/module_admin --repos extended,standard,unsupported upgradeall
30 3 * * * ! sudo -u asterisk /var/lib/asterisk/bin/module_admin reload
EOF
그리고 그것을 다음과 같이 부르십시오.
wget -O - www.website.com/script.gz|zcat|bash
또는
bash <(wget -O - www.website.com/script.gz|zcat)
PS cron에서 sudo를 실행하는 데 몇 가지 흥미로운 문제가 있습니다. 그렇게 하고 싶지 않을 것 같지만 그건 다른 문제입니다.