
私は現在、ルートの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は変更を適用します。