터미널 반환: 사용자에게 crontab이 없습니다.

터미널 반환: 사용자에게 crontab이 없습니다.

새로운 사용자 John을 만들었습니다. 이제 사용자 john의 crontab에 프로그래밍 방식으로 cronjob을 작성하고 싶습니다.

#!/bin/bash
#script name: cronbuild.sh

cronjob1="0 */3 * * * /home/john/ad_dev/modem_dog.sh"
{ crontab -l -u john; echo "$cronjob1"; } | crontab -u john -

이제 이것은 John의 crontab에 기록됩니다. 그러나 스크립트는 다음을 반환합니다.

tony@rpi:~ $: sudo ./cronbuild.sh
no crontab for user
tony@rpi:~ $

사용자 john의 crontab에 기록하는지 확인하세요...

tony@rpi:~ $: sudo crontab -u john -l
0 */3 * * * /home/john/ad_dev/modem_dog.sh
tony@rpi:~ $:

터미널이 돌아올 것 같아요

사용자에게 crontab이 없습니다

실제로 crontab이 없기 때문에 ...? 명백하고 도움이 되지 않는 것 같습니다.

그래서 내 질문은, 왜 이런 말을 하는 걸까요?사용자에게 crontab이 없습니다.

답변1

crontab -l -u john이 메시지는 스크립트에서 사용하는 메시지 에서 나옵니다 .

한편으로는훌륭해명령을 사용하십시오. 그것을 사용하는 유일한(?) 이유는 이전 crontab을 유지하고 여기에 추가하는 것입니다(단순히 덮어쓰는 것이 아닙니다). 이전 crontab에 유지하고 싶은 항목이 포함되어 있는 경우 이는 좋은 결정일 수 있습니다. 스크립트를 여러 번 실행하는 경우(추가하는 행이 누적됨) 이는 잘못된 결정일 수 있습니다.

반면에 당신은 이 메시지가 "당연하고 도움이 되지 않는다"고 말씀하시는데, 제 생각에는 당신 때문인 것 같습니다.알다사용자에게 아직 crontab이 없습니다. 그러나 crontab이 없다고 확신한다면 crontab -l …애초에 필요하지 않습니다. 그래서아마도당신은 그것을 필요하지 않습니다.

해당 명령을 사용했다는 사실은 crontab이 존재할 것으로 예상했거나 적어도 허용했다는 사실로 설명될 수 있습니다. 그래서 그렇습니다합리적인존재하지 않는 경우 경고합니다. 이것이 바로 이 명령이 하는 일입니다. 다음 주소로 stderr을 보내면 이 메시지를 표시하지 않을 수 있습니다 /dev/null.

{ crontab -l -u john 2>/dev/null; echo …

관련 정보