手動操作は人為的エラーにつながります。 cronジョブを頻繁に追加および削除することは、非常に時間のかかる作業になる可能性があります。この記事では、AWS上のUbuntuEC2インスタンスからのCronjobの追加と削除を自動化するシェルスクリプトを作成します。これらの操作を実行するには、EC2インスタンスにアクセスする必要があります。使用するユーザーは、rootに切り替えて、Cronjobの追加と削除を実行できるように、sudoアクセス権を持っている必要があります。
始めましょう。
- シェルスクリプトとcronジョブの基本的な理解。
- AWSアカウント(アカウントがない場合は作成します)。
- sudoアクセス権を持つユーザーのEC2インスタンス(EC2インスタンスがない場合、または学習したい場合は、ここをクリックしてEC2インスタンスの作成を学習してください)
- Cronjobを追加するためのシェルスクリプトを作成します。
- シェルスクリプトを実行してCronjobを追加します。
- cronジョブを削除するためのシェルスクリプトを作成します。
- シェルスクリプトを実行して、Cronjobを削除します。
Cronjobを追加するためのシェルスクリプトを作成します
ローカルのLinuxシステムでファイルを作成し、それに次のコードを追加します。次のリンクのGithubリポジトリにもコードがあります。
Githubリンク:https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-add-remove-cron-job/add-cronjob.sh
ファイル:add-cronjob.sh
#!/ bin / bashhelpFunction(){echo "" printf "\ 033 [1; 32mUsage:$ 0 -K-U -I -a "echo" "echo -e" \ t-K\"。cronジョブを追加する必要のあるサーバーの.pemキー\""echo -e" \ t-U cronジョブを追加する必要があります"echo-e" \t-cronジョブを追加する必要があるサーバーのIP"echo-e" \ t-追加するcronの名前(二重引用符で囲みます) "echo" Add a new Cron Job "echo" e.g. " echo "./add-cronjob.sh -K /Users/cloudcover/Documents/Rahul/access/rahuls.pem -U ubuntu-Iec2-35-180-234-158.eu-west-3.compute.amazonaws。 com -a \ "0 5 * * 1 testCronJob \" "echo -e" \ 033 [0m "#reset color exit 1#ヘルプの印刷後にスクリプトを終了} while getopts" I:K:U:a: "optdo case" Kの$opt")internalServerPemKey =" $ OPTARG ";; U)internalServerUser ="$ OPTARG";; I)internalServerIP ="$ OPTARG";; a)addCron ="$ OPTARG";; ? )helpFunction;; #パラメータが存在しない場合にhelpFunctionを出力しますesacdoneecho "******************"#echo $ listCronJobs#パラメータが空の場合にhelpFunctionを出力しますif [-z "$ internalServerIP" ] || [-z "$ internalServerPemKey"] || [-z "$ internalServerUser"] || [-z "$ addCron"] then printf "\ 033 [1; 31m"echo"一部またはすべてのパラメーターが空です"; helpFunctionfi#すべてのパラメーターが正しい場合はスクリプトを開始しますprintf "\ 033 [1; 33m --------------------------------- --------------------------------- ssh "echo -e" \ 033 [0m"#resetcolorecho"の前。新しいユーザーが作成されたサーバーのpemキー:$ internalServerPemKey "echo"新しいユーザーが作成されたサーバーのUserName:$ internalServerUser "echo"新しいユーザーが作成されたサーバーのIP: $ internalServerIP "echo"追加するcronの名前:$ addCron "printf" \ 033 [1; 31mLログイン: "$ internalServerPemKey" "$ internalServerUser" @ "$ internalServerIP" \ 033 [0m \ n "ssh -i" $ internalServerPemKey "" $ internalServerUser "@" $ internalServerIP "< <> EOF echo" User Switched To; " whoami printf "\ 033 [1; 33m ----------------------------------------- -------------------------追加前のcronジョブのリスト"echo-e" \ 033 [0m "#reset color crontab -l | cat -n if [-n "$ addCron"] then echo "Inside addCron" crontab -l> crontab.tmp printf'%s \ n'"$ addCron">> crontab.tmp crontab crontab.tmp &&rm -f crontab .tmp fi printf "\ 033 [1; 33m --------------------------------------- ---------------------------Cronジョブのリストを更新"echo-e" \ 033 [0m "#reset color crontab -l | cat -n printf "\ 033 [1; 31mExiting from --->" $ internalServerPemKey "" $ internalServerUser "@" $ internalServerIP "\ 033 [0m \ n"#echo"既存のユーザー--->$userName" EOFHERE
新しいCronjobを作成する前に、EC2インスタンスに既存のCronjobがあるかどうかを確認してください
EC2インスタンスにログインし、既存のCronjobsを確認します
ssh -i〜/ Downloads /howtoforge-test.pem[メール保護]
cronジョブを一覧表示する
crontab -l </ pre>シェルスクリプトを実行してCronjobを追加します ローカルのLinuxマシンに移動し、次のコマンドを使用してUbuntu18.04EC2インスタンスにCronjobを追加します。これにより、毎分トリガーされるCronjobが作成され、現在の日付がファイルに書き込まれます。要件に応じてCronjobを変更できます。
./ add-cronjob.sh -K〜/ Downloads / howtoforge-test.pem -U ubuntu -I ec2-15-236-64-128.eu-west-3.compute.amazonaws.com -a " * * * * * / bin / date>> / tmp / cron_output "
![]()
これで、EC2インスタンスに移動して、Cronjobが追加されているかどうかを確認することもできます。
ssh -i〜/ Downloads /howtoforge-test.pem[メール保護]sudo -icrontab -l </ pre>cat / tmp / cron_output次のスクリーンショットでは、Cronjobが毎分追加および実行されていることがわかります。
![]()
cronジョブを削除するためのシェルスクリプトを作成します
これで、追加したCronjobを削除する必要があると思われる場合は、Githubで利用可能なシェルスクリプトを使用して簡単に削除できます。
次のコードを使用して、ローカルシステムに新しいファイルを作成します。
Githubリンク:https://github.com/shivalkarrahul/DevOps/blob/master/aws/shell-scripts/aws-ec2-add-remove-cron-job/remove-cronjob.shファイル:remove-cronjob.sh#!/ bin / bashhelpFunction(){echo "" printf "\ 033 [1; 32mUsage:$ 0 -K-U -I -l <yes / no> "echo" "echo -e" \ t-K\"。cronジョブを削除する必要があるサーバーの.pemキー\""echo -e" \t-Ucronジョブを削除する必要があるサーバーのユーザー名削除される"echo-e" \t-cronジョブを削除する必要があるサーバーのIP"echo-e" \ t-l既存のcronジョブを一覧表示し、パラメーターとして「yes」を指定します。最初に一覧を取得して、次に、削除する必要のあるジョブ番号を指定します "echo -e" e.g. " echo"新しいcronジョブの削除"echo"./remove-cronjob.sh -K /Users/cloudcover/Documents/Rahul/access/rahuls.pem -U ubuntu -I ec2-52-47-90-247.eu- west-3.compute.amazonaws.com -l yes "echo -e" \ 033 [0m "#reset color exit 1#ヘルプの印刷後にスクリプトを終了} while getopts" I:K:U:l: "optdo case" $ opt "in K)internalServerPemKey =" $ OPTARG ";; U)internalServerUser ="$ OPTARG";; I)internalServerIP ="$ OPTARG";; l)showListOfJobs ="$ OPTARG";; ? )helpFunction;; #パラメータが存在しない場合にhelpFunctionを出力しますesacdoneecho "******************" echo $ listCronJobs#パラメータが空の場合にhelpFunctionを出力しますif [-z "$ internalServerIP"] || [-z "$ internalServerPemKey"] || [-z "$ internalServerUser"] || [-z "$ showListOfJobs"] then printf "\ 033 [1; 31m"echo"一部またはすべてのパラメーターが空です"; helpFunctionfi#すべてのパラメーターが正しい場合はスクリプトを開始しますprintf "\ 033 [1; 33m --------------------------------- --------------------------------- ssh "echo -e" \ 033 [0m"#resetcolorecho"の前。新しいユーザーが作成されたサーバーのpemキー:$ internalServerPemKey "echo"新しいユーザーが作成されたサーバーのUserName:$ internalServerUser "echo"新しいユーザーが作成されたサーバーのIP: $ internalServerIP "if [$ showListOfJobs =="yes"] then printf "\ 033 [1; 31mLogging into:" $ internalServerPemKey "" $ internalServerUser "@" $ internalServerIP "\ 033 [0m \ n" ssh -i "$ internalServerPemKey "" $ internalServerUser "@" $ internalServerIP "< " $ internalServerPemKey "" $ internalServerUser "@" $ internalServerIP "\ 033 [0m \ n"EOFHEREfiecho"削除するCronジョブ行番号を入力"readlineNumberprintf " \ 033 [1; 31mLログイン: "$ internalServerPemKey" "$ internalServerUser" @ "$ internalServerIP" \ 033 [0m \ n "ssh -i" $ internalServerPemKey "" $ internalServerUser "@" $ internalServerIP "< crontab.tmp crontab crontab.tmp &&rm -f crontab.tmp printf "\ 033 [1; 33m ------------------- -----------------------------------------------更新されたリストCron Jobs "echo -e" \ 033 [0m "#reset color crontab -l | cat -n printf "\ 033 [1; 31mExiting from --->" $ internalServerPemKey "" $ internalServerUser "@" $ internalServerIP "\ 033 [0m \ n" EOFHERE
シェルスクリプトを実行して、cronジョブを削除します
Cronjobsを削除するには、シェルスクリプトを実行します。 Ubuntu18.04EC2インスタンスで利用可能なすべてのCronjobが一覧表示されます。次に、削除するジョブを選択できます。スクリプトが自動的に削除を行います。
./ remove-cronjob.sh -K〜/ Downloads / howtoforge-test.pem -U ubuntu -I ec2-15-236-64-128.eu-west-3.compute.amazonaws.com -l yes
![]()
これで、同じスクリプトを再度実行して、EC2インスタンスのCronjobを一覧表示できます。
./ remove-cronjob.sh -K〜/ Downloads / howtoforge-test.pem -U ubuntu -I ec2-15-236-64-128.eu-west-3.compute.amazonaws.com -l yes
![]()
EC2インスタンス自体からCronjobを確認することもできます。
ssh -i〜/ Downloads /howtoforge-test.pem[メール保護]sudo -icrontab -l </ pre>
![]()
結論 この記事では、UbuntuEC2インスタンスにCronjobsを追加および削除するシェルスクリプトを見ました。これは、Cronjobを追加または削除する手動タスクを自動化するのに役立ち、手動操作によって発生する可能性のある潜在的な人的エラーを回避するのにも役立ちます。
Linux