Laravel の行を使用して Ubuntu でスケジュールされたタスクを実行する方法

Laravel の行を使用して Ubuntu でスケジュールされたタスクを実行する方法

毎日午後 3 時に実行してパスワードを自動的に入力する必要がありますsudo php artisan backup:run。Windows でこれを行う方法は、タスク スケジューラを使用して .bat スクリプトで管理者として実行を設定するだけでわかります。

答え1

これはすべきUbuntu 14.04 では最新リリースとほぼ同じですが、いくつかの違いがある可能性があります。

タスクは 2 つの部分に分かれています。

  • sudoパスワードなしで使用できるようにするには、sudoersファイルにユーザーを追加し、パスワードを要求しないようにします。
  • ジョブを自動的に実行するには、 を使用しますcron

sudo ユーザ

ユーザーをsudoグループに追加するには

usermod -aG sudo <username>

<username>ジョブを実行するユーザーに変更します。

パスワードを入力しなくても済むようにするには、次の/etc/sudoersファイルを編集します。

visudo

ファイルの末尾に次の行を追加します。

<username>  ALL=(ALL) NOPASSWD:ALL

再度、<username>ジョブを実行するユーザーに変更します。

メインの sudoers ファイルを編集するのではなく、次のように特定のユーザー用に新しい sudoers ファイルを作成する方がよいことに注意してください。

echo "<username>  ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/username

詳細についてはUbuntu で Sudoers にユーザーを追加する方法

この質問も参照してください。コマンドラインを使用してユーザーを新しい sudoer として追加するにはどうすればよいですか?

クローン

cron は非常に強力で、さまざまなオプションがあります。ただし、タスクを実行するには、次の基本的なものだけが必要です。

crontabを編集するには、

crontab -e

または別のユーザーの場合は、

crontab -u ostechnix -e

これまでに crontab を実行したことがない場合は、初めて実行するときにエディターの選択を求められることがあります。

午後3時の仕事の場合は次の行を追加します

0 15 * * * <command-to-execute>

あなたの場合は

0 15 * * * sudo php artisan backup:run

保存してエディタを終了します。次にcrontabをチェックするには、

crontab -l

時間を変更する場合、cron のマニュアル ページのフィールドは次のようになります。

       The time and date fields are:

              field          allowed values
              -----          --------------
              minute         0-59
              hour           0-23
              day of month   1-31
              month          1-12 (or names, see below)
              day of week    0-7 (0 or 7 is Sunday, or use names)

       A field may contain an asterisk (*), which always stands for
       "first-last".

の詳細についてはcrontabCronジョブの初心者向けガイド、または と入力しますman cron

この質問も参照してください。Cron ジョブを設定するにはどうすればよいですか?

関連情報