Я установил VPS с Ubuntu 12.04 и теперь хочу запускать cronjob раз в день.
Командная строка выглядит следующим образом:
mono /root/Folder/Aplication.exe
Я искал и искал в Интернете, но не могу понять, как это сделать. Я, например, хочу запускать эту команду каждые 24 часа в полночь .
Заранее благодарю вас за то, что прочитали мой вопрос и, конечно же, за все ответы.
Поскольку существуют некоторые дополнительные различия между @Guss и мой ответ, я оставлю его.
Вот, пожалуйста иллюстрация об установке cronjobs (источник):
* * * * * 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)
Если Вы хотите выполнить задание своим $USER каждый день в 0:15 час, необходимо отредактировать 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
рекомендуется использовать полный путь для команды в Кроне. Для нахождения его, можно использовать sudo updatedb && sudo whereis mono
.> /var/log/mono.daily.log
эта часть перенаправит вывод к файлу журнала, в случае, если Вы хотите проследить то, что, происходят с Вашим cronjob. Если Вы хотите сохранить данные логов с предыдущих дней, можно использовать >>
вместо >
.2>&1
эта часть поместит сообщения об ошибках в файл журнала.Если Вы хотите выполнить задание корнем, необходимо отредактировать его crontab файл: sudo
crontab -e
и добавьте строку, показанную выше.
Кроме того, для ежедневной газеты cronjobs, можно добавить исполняемый файл в папке /etc/cron.daily
. Для нахождения примера проверьте некоторые существующие файлы в эту папку.
Вы запускаете запланированные задания в Ubuntu (и других Linux), используя cron. О cron важно помнить, что существуют «пользовательские таблицы cron» и «системные таблицы cron».
Если вы хотите, чтобы ваше приложение работало в контексте пользователя, то это относительно просто: войдите в систему как этот пользователь и запустите crontab -e
. Вы попадаете в редактор, где редактируете таблицу cron вручную.
Под пользовательской таблицей cron у вас есть 6 полей:
<minute> <hour> <day-of-month> <month> <day-of-week> <command ...>
Поле разделено пробелом, кроме «command
», которое простирается до конца строки (с некоторыми оговорками). Прочитайте man 5 crontab
для подробностей.
Чтобы запускать что-то каждый день, вы можете выбрать время, а затем запрограммировать его в первые два поля, оставив все остальные поля звездочкой (т.е. «все идет»). Таким образом, выражение
1 2 * * * mono /root/Folder/Aplication.exe
будет запускать ваше моно приложение каждый день (каждый день каждого месяца независимо от дня недели - это 3 звездочки) в 2:01 AM (первые два поля).
Теперь, поскольку я вижу, что вы установили свое приложение в /root
, я предполагаю, что вы, возможно, захотите запустить это приложение как системное приложение - что также имеет больше смысла при настройке сервера в VPS в любом случае. Системный crontab очень похож на пользовательский crontab за исключением того, что он хранится в файле в каталоге /etc
и имеет дополнительное поле, определяющее, под каким пользователем вы хотите его запустить - что, вероятно, будет root
. Таким образом, выражение может выглядеть так:
1 2 * * * root mono /root/Folder/Aplication.exe
, и вы, вероятно, захотите поместить его в новый файл, который вы создадите в /etc/cron.d/
- возможно, /etc/cron.d/myapp
(обратите внимание, что расширение отсутствует - это нарочно). В /etc/
есть несколько других файлов и каталогов crontab, которые могут быть действительно полезны для таких вещей, как ежедневные прогоны, такие как /etc/cron.daily
- читайте о них на справочной странице по файлам crontab, на которую я ссылался выше.
Заметки