私は定期的に実行するタスクをスケジュールしたいと思っていますが、Cronがこれを行う方法であると聞いたことがあります。
UbuntuにCronジョブを追加するにはどうすればよいですか?
私は定期的に実行するタスクをスケジュールしたいと思っていますが、Cronがこれを行う方法であると聞いたことがあります。
UbuntuにCronジョブを追加するにはどうすればよいですか?
以下のいずれかのフォルダにシェルスクリプトを配置します: /etc/cron.daily
, /etc/cron.hourly
, /etc/cron.monthly
または /etc/cron.weekly
.
これらが十分でない場合は、月に2回または5分ごとに、より具体的なタスクを追加することができます。 端末に移動してタイプします:
crontab -e
これにより、個人用のcrontab(cron設定ファイル)が開きます。 そのファイルの最初の行はそれをすべて説明しています! すべての行で、実行するコマンドとそのスケジュールを定義することができ、フォーマットは非常に簡単です。 構造は次のとおりです:
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は日曜日であることに注意してください。
あなたは続きを読むことができます ここでは、.
実行したいジョブをユーザーと同じ権限で実行できる場合は、次のコマンドを実行して編集できるユーザー crontabを使用することをお勧めします EDITOR="gedit" crontab -e
(これはgeditを使用してcrontabファイルを編集します)または単に crontab -e
(これはデフォルトのエディタを使用します)端末で。
たとえば、10分ごとに何かを実行したい場合は、次のような行を追加します
*/10 * * * * /usr/bin/somedirectory/somecommand
ファイルを保存します。
ユーザーのcrontabの内容は次のように表示されます crontab -l
.
Rootとして実行されるcronジョブを追加するには、以下を実行してrootのcrontabを編集します sudo crontab -e
.
最も柔軟な方法は、システムcrontabを使用することです /etc/crontab
これはroot権限でのみ編集できます。 このファイルでは、各コマンドは指定されたとおりに実行されるため、root(そのレベルの特権が必要な場合)またはシステム上の他のユーザーとしてコマン
たとえば、rootとして10分ごとに何かを実行したい場合は、次のような行を追加します
*/10 * * * * root /usr/bin/somedirectory/somecommand
(行へのユーザーの追加に注意してください)
システムのcrontabファイルの内容は次のように表示されます cat /etc/crontab
.
GUIを使用してそれを行うことを好む場合は、ソフトウェアセンターに移動してインストールすることができます スケジュールされたタスク (または実行 sudo apt-get install gnome-schedule
). これは、cronタスクを追加するための強力なGUIを提供します。
このメソッドを使用すると、デフォルトではタスクはrootではなく自分のユーザーとして実行されます。 これは通常良いことです。
私はお勧めします KDEのタスクスケジューラ(kde-config-cron
) . からアクセスします。 システム設定 の中で、 タスクスケジューラ モジュールがあります。
それは個人的なCrontabsとシステムのCrontabsの両方を管理し、時間境界を作成する容易さは私を大きく驚かせました(下のスクリーンショットを参照)。 私はこの部分は本当に過小評価されていると思います。
Kdeタスクスケジューラは、通常のUbuntuでは動作しません。 KUbuntuのようなKDEシステムでのみ動作します。 KDE以外のシステムでは、gnome-scheduleを使用することをお勧めします
$ sudo apt-get install gnome-schedule
アプリは、ダッシュでタスクをスケジュールされています。
私はbashスクリプトを実行するようにCronジョブを設定したかったので、スクリプトを実行すると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
スクリプトの実行例 test_cron.sh
シンボリックリンクを使用してUbuntu18.04上で毎分cronによって:
test_cron.sh
ファイル:
#!/bin/bashecho "System backuped" >> /media/myname/data/backup/backup_tmp.log
スクリプトで環境変数を次のように使用したい場合は、次のようにします $USER
パスでは、正確なパスを入力する方が良いですが、bashは実行時に変数を認識しません。
myname
はユーザー名です(rootグループの一部で、root権限が必要かどうかはわかりません)。
ユーザーがcronジョブを設定できるようにすると、必要に応じてファイルが作成されます:
sudo nano /etc/cron.allowrootmyname
スクリプトへのパスは次のとおりです /home/myname/shell/test_cron.sh
私は所有者を変更し、それを実行可能にしました:
sudo chown myname /home/myname/shell/test_cron.shchmod +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/syslogNov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)
あなたが持っていることを考えると 複数のcronジョブ 特定のユーザーと彼らは同じスケジュールを共有しません。 あなただけの簡単な下のファイルを作成することができます /etc/cron.d/
ファイル名は myjobs
次に、そのファイルにすべてのスケジューラを記述し、次のコマンドを実行します。
crontab -u <username> /etc/cron.d/myjobs