cronjob ジョブ発生スクリプト

cronjob ジョブ発生スクリプト

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行追加し、編集モードを終了して書き込んで保存します。

関連情報