sudo를 사용하여 루트의 crontab에 작업을 에코할 수 없습니다. - 쉘이 중단됩니다.

sudo를 사용하여 루트의 crontab에 작업을 에코할 수 없습니다. - 쉘이 중단됩니다.

저는 현재 루트의 crontab에 작업을 추가할 bash 스크립트를 작성 중입니다. 나는 명령을 사용하여 그것을 달성하려고했습니다.

sudo crontab -e -u root | { cat; echo "@reboot /home/$CURRENT_USER/scripts/reboot.sh"; } | crontab -

Ubuntu Server 18.04의 셸에서 이 명령을 테스트하고 있는데 sudo 비밀번호를 입력하면 셸이 완전히 정지됩니다. 나는 이것을 여러 번 테스트했습니다. 서버 리소스는 정상이며 새 SSH 연결을 설정한 후 모든 것이 정상입니다.

이 명령의 문제점이 무엇인지, 루트 crontab에 무언가를 쓰도록 하려면 어떻게 해야 하는지 이해하도록 도와주세요(sudo su는 새 쉘이 생성되어 스크립트가 중지되기 때문에 작동하지 않습니다).

답변1

crontab -e편집자에게 전화하세요. 편집기의 출력은 cat명령으로 전송되지만 (기껏해야) 파일을 편집하기를 기다리고 있습니다.

아마 이런 식으로 해야 할 것 같아요

job="@reboot /home/$CURRENT_USER/scripts/reboot.sh"
tab="$(crontab -l)"
{ echo "$tab" | grep -vxF -e "$job"; echo "$job"; } | crontab

코드 조각이 아직 루트로 실행되고 있지 않은 경우 동사의 두 인스턴스를 crontab다음으로 변경합니다.sudo crontab -u root

답변2

cron에 항목을 추가하기 위해 crontab을 사용할 필요는 없습니다.

어쩌면 다음과 같은 것일 수도 있습니다.

echo "59 23 * * *  /home/$CURRENT_USER/scripts/reboot.sh" | sudo tee -a /var/spool/cron/root

cron은 자동으로 변경 사항을 선택합니다.

사용자 crontab 파일은 단지 표준 텍스트 파일입니다. 필요에 따라 작업하면 cron이 변경 사항을 적용합니다.

관련 정보