Cron&crontab、説明

ルカイン 公表 少し前に cronとcrontabに関する優れたチュートリアル 共有する価値があると思います。 cronは、Windowsのスケジュールされたタスクに相当するものです。、端末から処理されることのみ。 同じ目標を達成するために視覚的なインターフェースを好む人は、これを見ることができます 別の項目.

cronとは何ですか?

cronという名前は、「時間」を意味するギリシャのクロノスに由来しています。 Unixオペレーティングシステムでは、cronは、プロセスまたはスクリプトを定期的に(たとえば、毎分、日、週、または月ごとに)実行する通常のバックグラウンドプロセスマネージャー(デーモン)です。 実行する必要のあるプロセスとそれらを実行する必要のある時間は、crontabファイルで指定されます。

コモfunciona

cronデーモンは /etc/rc.d/ o の/ etc / init.dディレクトリ 分布に応じて。 cronはバックグラウンドで実行され、crontabタスクテーブルを毎分チェックします / etc / crontab またはで / var /スプール/ cron 達成すべきタスクを探して。 ユーザーとして、いくつかのプロセスを自動化するために、タスクを含むコマンドまたはスクリプトをcronに追加できます。 これは、たとえば、システムまたは適切なバックアップシステムの更新を自動化する場合に役立ちます。

関連記事
チュートリアル:.tar.gzおよび.tar.bz2パッケージをインストールする

Crontabとは何ですか?

Crontabは、ユーザーが指定した時間に実行されるコマンドのリストを格納する単純なテキストファイルです。 Crontabは、スクリプトまたはコマンドを実行する日時、実行権限を確認し、バックグラウンドで実行します。 各ユーザーは独自のcrontabファイルを持つことができます。実際には / etc / crontab これはrootユーザーのcrontabファイルであると見なされます。通常のユーザー(およびrootでさえ)が独自のcrontabファイルを生成したい場合は、crontabコマンドを使用します。

Crontabは、単純なシステムユーザーまたはrootユーザーとして、マルチユーザーシステムでcronタスクを管理する最も簡単な方法です。

crontabの使用

簡単な例から始めます。

システムの更新を自動化して、「常に更新する必要があり、気に入らない!」という煩わしさを解消します。

方法
関連記事
システムを知るためのコマンド(ハードウェアといくつかのソフトウェア構成を特定する)

まず、スクリプトを作成します。 このスクリプトはcronによって呼び出され、実行するすべての命令が含まれます。したがって、cronに含める前に、いくつかのケースといくつかの方法でテストする必要があります。次のような単純な更新スクリプトです。

#!/ bin / bash #script update example#ディストリビューションを選択#debian-ubuntu#apt-get update&apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu

ディストリビューションラインから#を削除します。 Ubuntu / Debianの場合、apt-getで始まります。

スクリプトをupdate.shとして保存します(例:スクリプトディレクトリを自宅に)。 上記のスクリプトの実行権限を次のように変更します。

chmod a + x〜 / scripts / update.sh

スクリプトを数回実行して、すべてがスムーズに実行されることを確認し、必要なものを変更します(エラーが含まれていてはなりません。含まれていない場合、cronはエラーを何度も繰り返すだけです)。 次に、タスクをcrontabに追加します。

crontabにタスクを追加する

crontab -eを使用してcrontabのエディションを実行します。一部のディストリビューション(Ubuntuなど)では、必要なテキストエディターを選択するオプションが提供され、残りはviのままです。 crontabファイルは次のようになります。

#mh dom mondowユーザーコマンド

ここで:

  • m スクリプトが実行される分に対応し、値の範囲は0〜59です。
  • h 正確な時間、24時間形式が処理され、値の範囲は0〜23で、0は深夜12:00です。
  • 太陽 月の日を指します。たとえば、15日ごとに実行する場合は15を指定できます。
  • ダウ は曜日を意味し、数値(0から7、0と7は日曜日)または英語での日の最初の3文字(月、火、水、木、金、土、太陽)を指定できます。
  • user コマンドを実行するユーザーを定義します。rootにすることも、スクリプトを実行する権限がある場合は別のユーザーにすることもできます。
  • command 実行するコマンドまたはスクリプトの絶対パスを指します。例: /home/usuario/scripts/update.sh、スクリプトを呼び出す場合は実行可能である必要があります

明確にするために、cronタスクのいくつかの例を説明しました。

15 10 * **ユーザー/home/user/scripts/update.sh

毎日午前10時15分にupdate.shスクリプトを実行します

15 22 * **ユーザー/home/user/scripts/update.sh

毎日午後10時15分にupdate.shスクリプトを実行します

00 10 * * 0 root apt-get -yupdateルートユーザー

毎週日曜日の午前10時に更新を実行します

45 10 * * 太陽のルート apt-get -y 更新

ルートユーザーは毎週日曜日(日)午前10時45分に更新を実行します

30 7 20 11 *ユーザー/home/usuario/scripts/update.sh

20月7日の30:XNUMXに、ユーザーはスクリプトを実行します

30 7 11 11sunユーザー/home/usuario/scripts/petal_con_velitas.sh

11月7日の午前30時XNUMX分、つまり日曜日に、ユーザーは自分のシステム管理者(つまり、私)を祝います。

01 * * **ユーザー/home/usuario/scripts/molestorecordatorio.sh

毎日毎時毎分毎分迷惑なリマインダー(非推奨)。

彼らはまだ処理することができます 特別な範囲:

30 17 * * 1,2,3,4,5

月曜日から金曜日まで、毎日午後5時30分に。

00 12 1,15,28 * *

毎月12日、28日、XNUMX日の正午(給与計算に最適)

これが紛らわしい場合は、crontabが処理します これらの範囲を定義するための特別な文字列.

@reboot起動時にXNUMX回実行
@yearlyは年に0回だけ実行されます:0 1 1 XNUMX *
@毎年@yearlyと同じ
@monthlyは、最初の日である月に0回実行されます:0 1 XNUMX * *
@weeklyWeekly週の最初の0時間の最初の分。 0 0 * * XNUMX″。
@毎日、午前12:00 0 0 * * *
@dailyと同じ@midnight
@hourly毎時の最初の0分:XNUMX * * * *

その使用法は非常に簡単です。

@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade

最後だが大事なことは:

cronジョブ管理

crontabファイル

既存のcrontabファイルをユーザー定義ファイルに置き換えます

crontab -e

ユーザーのcrontabファイルを編集します。新しい行はそれぞれ新しいcrontabタスクになります。

crontab -l

すべてのユーザーのcrontabタスクを一覧表示します

crontab -d

ユーザーのcrontabを削除します

crontab -c ディレクトリ

ユーザーのcrontabディレクトリを定義します(これには、ユーザーの書き込みおよび実行権限が必要です)

crontab-uユーザー

別のユーザーのcrontabを処理するためのプレフィックス、例:

$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u user

このツールは、他の多くのツールと同様に、以下でより詳細に見ることができます。

Lucainに感謝します!