Linux

我無法使用 sudo 將作業回顯到 root 的 crontab - shell 掛起

  • December 19, 2020

我目前正在研究 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 連接後一切正常。

請幫助我理解這個命令有什麼問題以及我應該怎麼做才能讓它向根 crontab 寫入一些東西(sudo su 不起作用,因為創建了新的 shell,它會停止腳本)。

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

您不必使用 crontab 將條目添加到 cron。

也許是這樣的:

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

cron 將自動獲取更改。

使用者 crontab 文件只是一個標准文本文件。根據需要對其進行操作,cron 將獲取更改。

引用自:https://unix.stackexchange.com/questions/625191