LoginSignup
0
0

cronって何?~実務半年エンジニアの備忘録~

Last updated at Posted at 2024-04-16

はじめに:beginner:

こんにちは、実務経験半年のエンジニアのTunです。
今回は、初案件で学んだことの備忘録になっています。
 案件に入るや否や、未経験で四苦八苦しながら詳細設計を作成し、プログラム製造、単体試験、総合試験を経て、無事、リリースすることができました。

今回の初案件で、多くのことを学びましたので、cronについてですが、今後はいろいろなことを書いていきたいと思います。

cronとは何ぞや?

cronとは、ジョブを自動実行するためのデーモンプロセスです。
Linuxシステムの管理を行う場合、ログローテやバックアップなど、定期的に自動実行したいジョブが数多くあり、その中でもバックアップ等の処理は、システムへの負荷が大きいため、ユーザのアクセスの少ない、深夜や早朝に行われるのが一般的です。

cronはcrondというデーモンによって管理することができます。

cronの設定等はcrontabコマンドを使用しますが、詳細はデーモンなども含めて後程記述したいと思います。

...cron?ジョブを自動実行?何ぞや? と思ったそこのあなた

 私自身も、書籍やUdemy等で学習していた時期は、cronは言葉でしか理解していませんでいたし、コマンドに至っても叩いたことはあるけど、使い方丸暗記、オプションの意味も丸暗記で、全く使い物になりませんでした。

 では、例題で考えてみましょう。

Aさんは会社で上司から、

毎月1日にQiita部署の全員分のフォルダを、社員名でQiitaフォルダ配下に作成してくれ、頼んだよ

と言われたとします。(正直こんなことは自分でやれと思いますが、、、

 この部署が2,3人だったら「新規作成で名前を設定する」で全然問題ないと思いますが、規模が大きくなっていき100人、200人となると骨が折れます。

 そこでAさんは、このタスクのためにcron君を契約社員として採用しました!!
このcron君は、根っからの真面目で、言われたことはいつ何時でもその仕事を遂行します。

 毎月1日になると、莫大なフォルダを作り上げるのです!!
しかし、手作業で行うとなると、ミスも出てきますし、その日が出勤ではない場合、その仕事は行われないことになります。

どんなに優秀な人材でもヒューマンエラーは起きないとは限りません!

そんな時は定時処理はLinuxのcronに任せよう!!

 ここで登場するのが、cronです。cronに登録しておけば、人件費もかからず、かつ正確に超高速にタスクをこなしてくれます。

今回上司に言われた仕事は以下の通りです

  • 毎月1日にフォルダを作成
  • フォルダ名は社員名で作成
  • 作成するフォルダは、Qiitaフォルダの配下に

上記のタスクをcronシェルに処理を分担します。

注意:warning:
cronは定時処理はできますが、複雑な処理を記述するのには適していません。
シェルなどに複雑な処理を記述し、そのシェルをcronで呼び出して定時処理を実現します。

システム構築の注意点:no_entry_sign:
システムによっては、常駐プログラムが多く存在してしまうケースがありますが、負担が大きくなり、パフォーマンスが低下したり、常駐プログラムが急停止して多大な経済的損失が発生したりすることがあります。
常駐プログラムをなるべく少なくし、サーバの負担を軽減して、定時処理に代用できるのであれば、cronに任せたほうが良きかなと思います。

 「毎月1日に...」はcronに、「フォルダ作成...」はシェルに任せます。
以下は例になるので、細かい処理や説明は省きます。

定時処理_cron
0 0 1 * * /qiita/make_dir.sh
make_dir.sh
#!/bin/bash
for name in 社員名リスト
do
  mkdir -p /qiita/$name
done
  • cronは、毎月1日の0:00にフォルダ作成のシェルを実行

  • シェルは、qiitaフォルダ配下に社員名のフォルダを人数分作成

    これで、crondデーモンが起動しておけば、今後は誰も何もせずとも自動的に作成されます!!

cronとは

ここまで読んでいただければ、ある程度cronで何がしたいか、cronはなにをしているのかがぼんやり理解できたと思います。

cronとは、ある決まった時間に、決まった処理を行いたいときに使用する。

 この程度の理解で、最初は問題ないかと...

もっと詳しく言うと、cronは各ユーザ1ファイル持っており、cronの実体は/var/spool/cron配下にあり、cronを編集するときは crontab -eコマンドを使ったり、anacronも名前は似ているけどちょっと違う動きをしたり、、、

詳しいことは次回以降まとめていきま~す:wave:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0