sudoを使用してrootのcrontabにタスクをエコーすることはできません。 - シェルが中断されます。

sudoを使用してrootのcrontabにタスクをエコーすることはできません。 - シェルが中断されます。

私は現在、ルートのcrontabにタスクを追加するbashスクリプトを作成しています。私はコマンドを使ってそれを達成しようとしました。

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

Ubuntu Server 18.04のシェルでこのコマンドをテストしていますが、sudoパスワードを入力するとシェルが完全にフリーズします。私はこれを何度もテストしました。サーバーリソースは正常で、新しいSSH接続を確立した後はすべて正常です。

このコマンドの問題が何であるか、root 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

コードスニペットがまだルートとして実行されていない場合は、動詞の2つのインスタンスを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は変更を適用します。

関連情報