Cronジョブを設定するにはどうすればよいですか?


534

タスクを定期的に実行するようにスケジュールしたいのですが、Cronがこれを行う方法だと聞いています。

UbuntuでCronジョブを追加するにはどうすればよいですか?

回答:


655

:これらのフォルダのいずれかにシェルスクリプトを置き/etc/cron.daily/etc/cron.hourly/etc/cron.monthlyまたは/etc/cron.weekly

これらでは不十分な場合は、月に2回、5分ごとなど、より具体的なタスクを追加できます。ターミナルに移動して、次を入力します。

crontab -e

これにより、個人のcrontab(cron構成ファイル)が開きます。そのファイルの最初の行ですべてを説明しています!すべての行で、実行する1つのコマンドとそのスケジュールを定義できます。また、形式を簡単に理解できます。構造は次のとおりです。

minute hour day-of-month month day-of-week command

リストを使用できるすべての数値について、たとえば5,34,55、分フィールドでは、定義された時間に関係なく、過去5時間、過去34、および過去55で実行されます。

間隔を使用することもできます。これらは次のように定義されます*/20。この例は20分ごとを意味するため、分列ではに相当し0,20,40ます。

したがって、毎週月曜日の午後5:30にコマンドを実行するには:

30 17 * * 1 /path/to/command

または15分ごと

*/15 * * * * /path/to/command

曜日は0〜6であり、0は日曜日です。

詳細はこちらをご覧ください


7
これらはシステム全体であり、高い特権で実行されます。アクセスまたは許可が緊急に必要でない限り、私はそこに何も入れません。経験則として、機能のないものを実行するようにしてください。したがって、私はより良い、この答えを好き:ubuntu.stackexchange.com/questions/2368/how-do-i-setup-cron-job/...
Hマルセロモラレス

5
@Marcelo Morales、これは与えられたコマンドをルートとして実行します!一方、sudoを使用しない場合、ユーザーcrontabを作成し、これを作成したユーザーとして実行します!
ラッセポールセン

4
* / 15 * * * * / path / to / commandは私にとって非常に便利でした!ありがとう!
アンドリューオデンダール

18
これらの変更は自動的に適用されるため、何も再起動/リロードする必要はありません。
モロンビー

6
もう1つの便利なヒントは、の代わりに*/15 * * * * /path/to/command@reboot /path/to/command起動時に何かを実行するためにできることです。
ケネスワーデン

102

実行したいジョブがユーザーと同じ権限で実行できる場合、実行EDITOR="gedit" crontab -e(geditを使用してcrontabファイルを編集)するか、単にcrontab -e(デフォルトのエディターを使用)編集できるユーザーcrontabを使用することをお勧めします。ターミナルで。

たとえば、10分ごとに何かを実行したい場合は、次のような行を追加します

*/10 * * * * /usr/bin/somedirectory/somecommand

ファイルを保存します。

ユーザーcrontabの内容はで確認できますcrontab -l

ルートとして実行するcronジョブを追加するには、を実行してルートのcrontabを編集できますsudo crontab -e

最も柔軟な方法は/etc/crontab、root権限でのみ編集できるシステムcrontabを使用することです。このファイルでは、各コマンドは指定されたとおりに実行されるため、root(そのレベルの特権が必要な場合)またはシステム上の他のユーザーとしてコマンドを実行できます。

たとえば、ルートとして10分ごとに何かを実行する場合は、次のような行を追加します

*/10 * * * * root /usr/bin/somedirectory/somecommand

(行へのユーザーの追加に注意してください)

システムcrontabファイルの内容は、で確認できますcat /etc/crontab

詳細:https : //help.ubuntu.com/community/CronHowto


1
以下は、cronの時間を英語で表示する、インタラクティブなcronマニピュレーターです。crontab.guru
CTS_AE

52

GUIを使用して行う場合は、ソフトウェアセンターに移動して、スケジュールされたタスクをインストール(または実行sudo apt-get install gnome-schedule)できます。cronタスクを追加するための強力なGUIを提供します。

この方法を使用する場合、デフォルトではタスクはルートとしてではなく、独自のユーザーとして実行されることに注意してください。これは通常良いことです。


3
16.04では使用できないようです。bugs.launchpad.net
ubuntu / + source /

あなたはそれを得ることができます@TankorSmash ここに
M.ベセラ

パッケージ要件は16.04
オデッセウスイサカで

26

KDEのタスクスケジューラ(kde-config-cron をお勧めしkde-config-cronをインストールしますます。そこにあるタスクスケジューラモジュールのシステム設定からアクセスします。

個人とシステムの両方のクロンタブを管理し、時間の境界を簡単に作成できることに非常に驚かされました(下のスクリーンショットを参照)。この部分は本当に過小評価されていると思います。

ここに画像の説明を入力してください


11

KDEタスクスケジューラは、通常のUbuntuでは機能しません。KUbuntuなどのKDEシステムでのみ機能します。非KDEシステムの場合、gnome-scheduleを使用することをお勧めします

$ sudo apt-get install gnome-schedule

このアプリは、ダッシュボードのスケジュールされたタスクです。


これは、Ubuntuの16.04見つかりていません
SaidbakR

見ていてくださいI can't install gnome schedule on Ubuntu 16.04@ askubuntu.com/questions/785657/...を。@ bugs.launchpad.net / ubuntu / +source / gnome-schedule / +bug / 1576060 / をダウンロードするパッケージがあります。ちょうど実行$ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb
アントニオ

10

Cronジョブをbashスクリプトで実行するように設定したかったため、スクリプトを実行するとcronジョブが追加されます。

あなたが利用するとき、私は気づいた:

crontab -e 

次に、ファイルを作成します。

/var/spool/cron/crontabs/root

rootは、crontabコマンドを実行しているユーザーの名前です。したがって、これに基づいて、少なくとも14.04では、次のbashコマンドを実行して新しいCronジョブを作成できます。

echo "30 17 * * 1 /path/to/command" > /var/spool/cron/crontabs/root

また、ファイルの正しい所有権を設定する必要があります。

chown root:root /var/spool/cron/crontabs/root

そして、正しい許可を設定します。

chmod 600 /var/spool/cron/crontabs/root

実行時にcrontab -eリストにすでにCronジョブがある場合、次のコマンドを使用してリストに追加できます。

echo "30 17 * * 1 /path/to/command" >> /var/spool/cron/crontabs/root

2

test_cron.shUbuntu 18.04でシンボリックリンクを使用して毎分cronでスクリプトを実行する例:

test_cron.sh ファイル:

#!/bin/bash
echo "System backuped" >> /media/myname/data/backup/backup_tmp.log

$USERパスのようにスクリプトで環境変数を使用する場合は、正確なパスを入力する方がよいため、bashは実行時に変数を認識しません。

myname ユーザー名です(ルートグループの一部、ルート権限が必要かどうかはわかりません)。

ユーザーがcronジョブを設定できるようにします。必要に応じてファイルが作成されます。

sudo nano /etc/cron.allow

root
myname

スクリプトへのパスは /home/myname/shell/test_cron.sh

所有者を変更して実行可能にしました:

sudo chown myname /home/myname/shell/test_cron.sh
chmod +x /home/myname/shell/test_cron.sh

シンボリックリンクを追加しました。

sudo ln -s /home/myname/shell/test_cron.sh /usr/bin/test_cron

毎分myname実行する新しいタスクを追加すると記録されますtest_cron

crontab -e

*/1 * * * * test_cron

リスト内のコマンドを確認するには:

crontab -l

*/1 * * * * test_cron

実行を確認するには

grep -i cron /var/log/syslog

Nov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.