web-dev-qa-db-ja.com

Ubuntu 12.04で1日に1回のCrontab

Ubuntu 12.04でVPSをセットアップしましたが、1日に1回cronjobを実行したいと考えています。

コマンドラインは次のとおりです。

    mono /root/Folder/Aplication.exe

私はインターネットを見回しましたが、どうやってそれをするのか理解できないようです。たとえば、このコマンドを24時間ごとに真夜中に実行したいと思います。

私の質問を読んでくれて、もちろんすべての答えをありがとう。

1
ManouHH

@ Gussと私の答えにはいくつかの補完的な違いがあるため、そのままにします。

ここに、cronjobssetup( source )の図を示します。

* * * * * command to be executed
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
  • 毎日0時15分に$ USERでジョブを実行する場合は、ユーザーのcrontabファイル(/var/spool/cron/crontabs/<user_name>にある)を編集する必要があります)。コマンドcrontab -eでそれを行うことができます。 (たぶん、ダイアログが表示され、そこでデフォルトのターミナルテキストエディタを選択する必要があります。)crontabファイルの最後に次の行を追加します。

    15 0 * * * /usr/bin/mono /root/Folder/Aplication.exe > /var/log/mono.daily.log 2>&1
    
    • /usr/bin/mono Cronのコマンドへのフルパスを使用することをお勧めします。それを見つけるには、Sudo updatedb && Sudo whereis monoを使用できます。
    • > /var/log/mono.daily.logこの部分は、cronjobで何が起こっているかを追跡したい場合に、出力をログファイルにリダイレクトします。前日のログデータを保持する場合は、>>の代わりに>を使用できます。
    • 2>&1この部分は、エラーメッセージをログファイルに書き込みます。
  • rootでジョブを実行する場合は、そのcrontabファイルを編集する必要があります:Sudocrontab -eを追加し、上記の行を追加します。

  • また、毎日cronjobsの場合、フォルダー/etc/cron.dailyに実行可能ファイルを追加できます。サンプルを見つけるには、このフォルダーにある既存のファイルのいくつかをチェックしてください。

1
pa4080

Cronを使用して、Ubuntu(および他のLinux)でスケジュールされたジョブを実行します。 cronについて覚えておくべき重要なことの1つは、「ユーザーcronテーブル」と「システムcronテーブル」があることです。

アプリケーションをユーザーのコンテキストで実行する場合は、比較的単純です。そのユーザーとしてログインし、crontab -eを実行します。 cronテーブルを手動で編集するエディターに入ります。

ユーザーcronテーブルの下には、6つのフィールドがあります。

<minute> <hour> <day-of-month> <month> <day-of-week> <command ...>

フィールドはスペースで区切られますが、「command」は行の最後まで拡張されます(いくつか注意事項があります)。面倒な詳細については、man 5 crontabをお読みください。

毎日何かを実行するには、時間を選択し、それを最初の2つのフィールドにプログラムして、他のすべてのフィールドをアスタリスクのままにします(つまり、「anything goes」)。だから式

1 2 * * * mono /root/Folder/Aplication.exe

モノアプリケーションを毎日実行します(曜日に関係なく毎月毎日-これらは3つのアスタリスクです)2:01 AM(最初の2つのフィールド)。

これで、アプリケーションを/rootの下にインストールしたことがわかるので、このアプリケーションをシステムアプリケーションとして実行することをお勧めします。これは、VPSでサーバーをセットアップするときにも意味があります。システムcrontabは、/etcディレクトリの下のファイルに保存されることを除いて、ユーザーcrontabに非常に似ています。また、実行するユーザーを指定する追加フ​​ィールドがあります-root。したがって、式は次のようになります。

1 2 * * * root mono /root/Folder/Aplication.exe

おそらく、あなたは/etc/cron.d/-おそらく/etc/cron.d/myappの下に作成する新しいファイルにこれを入れたいでしょう(拡張子がないことに注意してください-これは意図的なものです)。 /etc/の下には、他のいくつかのcrontabファイルとディレクトリがあります。これらは、/etc/cron.dailyなど、毎日の実行などに非常に役立ちます。

ノート

  1. Ubuntu 12.04は実行しないでください-非常に時代遅れです。 16.04を試す
  2. チェックアウト Crontab.Gur すべてのcrontab式のニーズ。
1
Guss