Как в ubuntu запускать скрипт по крону через терминал?
Здравствуйте! Необходимо запускать пайтон скрипт по крону. Как настраивать время запуска я разобрался. Скрипт по крону запускается, но не открывается терминал, где виден ход его выполнения. Нужно чтобы по крону открывался терминал и вводилась команда на запуск пайтон скрипта. Заранее спасибо
* */4 * * * export DISPLAY=:0 && /usr/bin/gnome-terminal
Если вот это прописать в кронтаб, то будет открываться терминал каждые 4 часа, мне необходимо чтобы в этом теминале выполнялся пайтон скрипт. Что нужно дописать в кронтаб?
ky0, Сделал файл сервис с помощью команды sudo nano /etc/systemd/system/webhook.service содержимое файла:
[Unit]
Description=webhook
After=network.target
[Install]
WantedBy=multi-user.target
[Service]
# Даем знать systemd, что этот сервис представляет из себя лишь 1 процесс.
# Ожидается, что процесс, настроенный с помощью ExecStart= является основным процессом службы
Type=simple
# Устанавливаем рабочую дирректорию службы
WorkingDirectory=/home/pirat/webhook
# Указаываем пользователя и группу для работы службы
# Должна ли служба считаться активной, даже если все ее процессы завершены
RemainAfterExit=no
# Выполнить эту команду при запуске сервиса.
ExecStart=/home/pirat/webhook/webhook.py
# Говорим, что нужно перезапускать сервис, если вдруг он умер
Restart=on-failure
# Таймаут на включение и выключение
TimeoutSec=120
содержимое пайтон скрипта (это вебсервер, с помощью которого будет при переходе по определенной ссылке запускаться другая программа ):
#!/bin/python3
from flask import Flask
import os
app = Flask(__name__)
@app.route('/run')
def runScript():
res=os.system('python3 /путь/к/пайтон/скрипту.py')
if res == 0:
return 'That is all right! RC: {0}'.format(res)
else:
return 'ERROR! RC: {0}'.format(res)
if __name__ == '__main__':
app.run(host = '0.0.0.0')
далее включил этот сервис в автозагрузку с помощью команды sudo systemctl enable webhook. На моём компьютере всё работает, а на vds сервере нет. В рабоче директории создана виртуальная среда пайтон, и туда установлена библиотека flask. Вот такие ошибки пишет если ввести команду sudo systemctl status webhook:
Jun 29 10:46:28 vm-48624416 systemd[1]: webhook.service: Scheduled restart job, restart counter is at 5.
Jun 29 10:46:28 vm-48624416 systemd[1]: Stopped webhook.
Jun 29 10:46:28 vm-48624416 systemd[1]: webhook.service: Start request repeated too quickly.
Jun 29 10:46:28 vm-48624416 systemd[1]: webhook.service: Failed with result 'exit-code'.
Jun 29 10:46:28 vm-48624416 systemd[1]: Failed to start webhook.
Из крона программа запускается в терминале, но не в вашем, а в фоне.
И это нормально, так и должно быть.
Если хотите следить за ходом выполнения - ваш скрипт должен писать действия в лог файл, который вы можете просматривать в удобное время.