cronを使用してタスクをダウンロード、有効化、および追加し、コンピュータに自動更新およびアップグレードタスクを追加するスクリプトを作成しようとしています。
私が今まで持っているのは
sudo apt install cron
sudo systemctl enable cron
ここまですべてが大丈夫で、追加しました(調査後の指示に従って)。
<(crontab -l) <(echo '50 19 * * * sudo apt update -y') | crontab -
<(crontab -l) <(echo '00 20 * * * sudo apt upgrade -y') | crontab -
ファイルを確認してみるcrontab -l
スクリプトが必要に応じてジョブを作成しますが、実行されないことを確認しました。 (動作していることを確認するために、毎分apt installを実行してみました。)
50 19 * * 3 root sudo apt update -y
ただし、そのファイルにnanoを使用してこのコマンドを作成すると/etc/crontab
機能します。
ルート侵入を追加しようとしましたが、crontab -e
まだ機能しません。
解決策はありますか?
スクリプトでテキストを1行追加する方法はありますか/etc/crontab
? (オンラインで方法が見つかりませんでした)
みんなありがとう
答え1
通常のシステムではcron
これが機能します。そのため、インストールして有効にする必要はありませんcron
。ただし、これは不要なsystemctl
スクリプトに依存します。systemd
この試み:
#!/bin/bash
USER=root
FILE=input.file.cron
# or get it from the command line arguments
crontab -u $USER -l | grep -v '#--$FILE:$USER' > /tmp/cr-$USER
awk '{printf("%-100s #--$FILE:$USER\n", $$0) }' $FILE >> /tmp/cr-$USER
crontab -u $USER /tmp/cr-$USER
rm -f /tmp/cr-$USER
答え2
エディタをに設定すると、1行でこれを行うことができますed
。
printf "a\n50 19 * * * sudo apt update -y\n.\nw\nQ\n" | EDITOR=ed crontab -e
デフォルトでは、ファイルに内容を1行追加し、編集モードを終了して書き込んで保存します。