非エンジニアのエンジニア道

非エンジニアからエンジニアに転向!その勉強の軌跡を載せていきます。

シェルスクリプト(cron)

大変!久しく書いてなかったようです!!
ちゃんと書かねば・・・と思いつつ。

cronとは

Linuxの内蔵時計によって、指定された時間に指定のコマンドを実行するためのシステム
実際に使用するには、crontabコマンドかatコマンドで時間とコマンドを設定する。
crontabは定期的に実行させたい場合、 atは1回だけ実行させたい場合に使用する。

実行準備

crond が起動していなくてはいけない。


と思ったら、そもそも入ってなかった

# yum -y install vixie-cron


crond の状態を確認

# /etc/init.d/crond status

実行していたら、crond (pid XXXX) を実行中... と表示される


見てみたら、停止してたので起動

# /etc/init.d/croud start

他の説明は、crontabの記述とかぶるので、割愛

注意

  • コマンド実行やディレクトリ指定は絶対パスを指定する
  • 使用できない場合は、cdで明示的にカレントディレクトリを移動する
  • 実行権限があるか確認する(ファイルのパーミッションを確認)
  • 改行コードをLFにする

時刻をcronで

例としてやってみた。
※ntpdをdaemonとして起動している場合には、使えない

準備

# which ntpdate  パスを調べる
# which hwclock  パスを調べる
# cd /root
# mkdir cron
# cd cron

ファイル編集

# vi /root/cron/ntp.sh

#!/bin/sh
/usr/sbin/ntpdate ntp.nc.u-tokyo.ac.jp 
/usr/sbin/hwclock --systohc

# chmod u+x ntp.sh

権限も変更する

cron登録と確認

# crontab -e

# 0 0 * * * /root/cron/ntp.sh > dev/null 2>&1

# crontab -l 


と登録したものの、動いてるかわかんなかったので、
ログがでるようにしてテスト。(実際は毎分にして試しました)

# 0 0 * * * /root/cron/ntp.sh >> /var/log/ntp/cron.log 2>&1


無事該当ファイルに書き込まれてました!

というわけで、時刻についてそもそも詳しく書いてなかったので、
次回書く。