저는 현재 루트의 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이 변경 사항을 적용합니다.