我无法使用 sudo 将作业回显到 root 的 crontab - shell 挂起

我无法使用 sudo 将作业回显到 root 的 crontab - shell 挂起

我目前正在编写 bash 脚本,它将向 root 的 crontab 添加作业。我试图用命令来实现它:

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

我正在 Ubuntu Server 18.04 的 shell 中测试此命令,在输入 sudo 密码后,shell 完全挂起。我已经测试过好几次了。服务器资源正常,建立新的 ssh 连接后一切正常。

请帮助我理解这个命令有什么问题,我应该做什么才能让它向 root crontab 写入一些内容(sudo su 不起作用,因为创建了新的 shell,这会停止脚本)。

答案1

crontab -e调用编辑器。编辑器的输出将发送到cat命令,但(最多)它正在等待您编辑文件。

你可能应该做这样的事情

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

如果该代码段尚未以 root 身份运行,请将动词的两个实例更改crontabsudo crontab -u root

答案2

您不必使用 crontab 向 cron 添加条目。

也许是这样的:

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

cron 将自动获取更改。

用户 crontab 文件只是一个标准文本文件。根据需要对其进行操作,cron 将接收更改。

相关内容