Ubuntu 16.04のCronジョブ情報

Ubuntu 16.04のCronジョブ情報

たとえば、カーネルの更新が可能なときに再起動をスケジュールするためにcronジョブを設定しましたが、次のようにします。Enode API

curl -s https://api.linode.com/v4/linode/kernels/linode/latest-64bit | grep "Latest.*$(uname -r)" > /dev/null
if [ $? -eq 1 ]
then sudo init 6
fi

詳細な変更については、grepコマンドを参照してください。

私のuname -r出力4.14.12-x86_64-linode92も比較されます。Enode API

curl -s https://api.linode.com/v4/linode/kernels/linode/latest-64bit | grep "Latest 64 bit *$(uname -r)" > /dev/null
if [ $? -eq 1 ]  ; then

systemctl ネットワークの再起動

ベストアンサー1

これには2つの問題があります。

  1. cURLのセキュリティを絶対に信頼しない限り、通常のユーザーではなくrootとして実行する必要があります。これにより、使用を取り除くことができ、sudoデバッグが簡単になります(そして他の変更なしで動作することができます)。
  2. 通常、このinitコマンドを使用して再起動を実行するのは誤った形式です。 rebootほとんどすべての Linux や他の UNIX システムで動作する汎用オプションであり、shutdown -r now通常は Linux で好まれる方法です。systemctl rebootUbuntu 16.04はsystemdを初期化システムとして使用するため、試してみることもできます。

この2つの問題を解決したら、Linode APIと式がgrep一緒に機能することを心配するだけです。

ifまた、これは実際には質問ではありませんが、ほとんどの場合、POSIXシェルスクリプトの一般的なステートメント形式は次のとおりです。

if [ <condition ] ; then
    <do something>
fi

いいえ:

if [ <conditon> ]
then <do something>
fi

ほとんどの最新のシェルはthen実際にはまったく必要とせず、状況をより良くするために存在しますが、それを必要とするいくつかのシェルがあるため、通常はそのままにしておきます。これはプログラムの実行方法にはまったく影響を与えず、シェルスクリプトを使用するほとんどの人が使用するスタイルルールにすぎません(したがって、2番目の形式を使用すると奇妙な外観があり、ほとんどの場合、サンプルコードで見ることができます)あります。最初に参照)フォーム)。

おすすめ記事