Ubuntuサーバーを自動的に更新するbashスクリプトを作成しました。スクリプトは次のとおりです。
#!/bin/bash
apt-get update
apt-get upgrade
echo "Update am $(date "+%d. %m. %y|%H:%M:%S) >> /var/log/update.log
exit 0
ログファイルは常に空です。 crontab:
0 3 * * * /drives/files/scripts/update.sh
Ubuntu Serverが設定で自動的に更新されることは設定できますが、これはcronと少しのスクリプトについて学習することです。
ありがとう
私はあなたがcrontabを通常のユーザーで使用していると思います。つまり、彼はSudoを提供せずにシステムを更新/アップグレードすることはできません。
また、apt-get update
およびapt-get upgrade
はユーザーに確認を求めるため、事前にこの確認に合格する必要があります。
yes | apt-get update
yes | apt-get upgrade
そのため、Sudoを使用してコマンドを実行する必要がありますが、これにより、Sudoにパスワードを提供する方法が問題になります。
さらに
echo "Update am "$(date "+%Y-%m-%d %H:%M:%S") >> /var/log/update.log
/ var/log/...に書き込んでいます。これは、通常のユーザーにはないアクセス許可を行う必要があることを意味します。
これを解決するには、ルートcronでスクリプトを実行する必要があります。
Sudo crontab -e
デフォルトのエディターでルートcronファイルを開きます。
スクリプトのエントリを追加します
0 3 * * * /drives/files/scripts/update.sh
ここで保存して終了します。
[〜#〜] ps [〜#〜]:念のため、スクリプトの実行許可を必ず与えてください。それを行うには、次のコマンドを実行します。
chmod +x /path-to-script
なぜ機能しないのですか?
apt-get update
およびapt-get upgrade
を実行するには、Sudoユーザーになる必要があります。つまり、スクリプトはSudo特権で実行する必要があります。
その他の停止?
はい、あなたは-y
を与えていないので、更新後にアップグレードコマンドが自動的にダウンロードされます。
それは主要なことですか?
はい、コマンドとともに-yを渡さない場合、cronは停止し、「-y」引数を探し、「-y」を取得するまで実行されません。
rootユーザーとしてcronスクリプトを実行する方法?
Sudo crontab -e
エディターを選択してnanoを選択してから、行を追加するように求められます。しかし、完全なスクリプトはこれでなければなりません
apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
お役に立てば幸いです。