Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Как запустить python-скрипт по расписанию?  (Прочитано 5011 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн zlodiak

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Помогите пожалуйста запустить python-скрипт. я хотел бы чтобы он выполнялся каждую минуту.

я успешно использовал cron чтобы раз в минуту выводить дату в текстовый файл:
*/1 * * * * echo `date` >> /home/k/python/date.txt
но у меня не запускается каждую минуту python-скрипт когда я добавляю в cron такой задание:
*/1 * * * * python3 ~/python/jf/index.py
это выражается в том, что не заполняется БД. как вы поняли, мой python-скрипт заполняет БД.

при этом, если я напрямую из шелла запускаю мой python-скрипт, то БД заполняется успешно

Оффлайн ecc83

  • Старожил
  • *
  • Сообщений: 2121
  • Ubuntu Mate 22.04 LTS
    • Просмотр профиля
Re: Как запустить python-скрипт по расписанию?
« Ответ #1 : 12 Апреля 2019, 19:24:42 »
Вообще то раз в минуту это так:

*  *  *  *  *  python3 ~/python/jf/index.py

Но сначала не забыть сделать:

chmod 755 ~/python/jf/index.py

Оффлайн bezbo

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1878
    • Просмотр профиля
Re: Как запустить python-скрипт по расписанию?
« Ответ #2 : 12 Апреля 2019, 19:42:03 »
~/python/jf/index.py

укажите полный путь

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Как запустить python-скрипт по расписанию?
« Ответ #3 : 12 Апреля 2019, 19:48:56 »
mkfifo /tmp/f

*/1 * * * * date > /tmp/f
*/1 * * * * cat /tmp/f >> /tmp/l

cat /tmp/l
Wars ~.o

Оффлайн ecc83

  • Старожил
  • *
  • Сообщений: 2121
  • Ubuntu Mate 22.04 LTS
    • Просмотр профиля
Re: Как запустить python-скрипт по расписанию?
« Ответ #4 : 12 Апреля 2019, 19:50:47 »
укажите полный путь

Кстати да, и к команде python3 тоже.

Оффлайн zlodiak

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Как запустить python-скрипт по расписанию?
« Ответ #5 : 12 Апреля 2019, 20:21:53 »
укажите полный путь

Кстати да, и к команде python3 тоже.

с правами всё ок, я для пущей верности 777 выставлял.

я пробовал указывать полный путь к интерпретатору пинона и к скрипту, не помогло.
*/1 * * * * /usr/bin/python3 /home/k/python/jf/index.py
при этом:
$ whereis python3
python3: /usr/bin/python3.5 /usr/bin/python3.5-config /usr/bin/python3.5m-config /usr/bin/python3.5m /usr/bin/python3 /usr/lib/python3.5 /usr/lib/python3 /etc/python3.5 /etc/python3 /usr/local/lib/python3.5 /usr/include/python3.5 /usr/include/python3.5m /usr/share/python3 /usr/share/man/man1/python3.1.gz

и в bashrc такое:
alias python='/usr/bin/python3.5'

Пользователь добавил сообщение 12 Апреля 2019, 20:27:30:
mkfifo /tmp/f

*/1 * * * * date > /tmp/f
*/1 * * * * cat /tmp/f >> /tmp/l

cat /tmp/l

не совсем понял чем могут помочь именованные каналы в моём случае? вы ИИ?)
« Последнее редактирование: 12 Апреля 2019, 20:27:57 от zlodiak »

Оффлайн bezbo

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1878
    • Просмотр профиля
Re: Как запустить python-скрипт по расписанию?
« Ответ #6 : 12 Апреля 2019, 20:28:30 »
which python3
which python
?

Оффлайн zlodiak

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Как запустить python-скрипт по расписанию?
« Ответ #7 : 12 Апреля 2019, 20:30:55 »
which python3
which python
?

kalinin@lenovo ~/python $ which python3
/usr/bin/python3
kalinin@lenovo ~/python $ which python
/usr/bin/python

Оффлайн ecc83

  • Старожил
  • *
  • Сообщений: 2121
  • Ubuntu Mate 22.04 LTS
    • Просмотр профиля
Re: Как запустить python-скрипт по расписанию?
« Ответ #8 : 12 Апреля 2019, 20:32:15 »
с правами всё ок, я для пущей верности 777 выставлял.

Пущая верность тут не нужна.


и в bashrc такое: alias python='/usr/bin/python3.5'

Алиасы в кроне не действуют.

Убедись где точное расположение исполняемого файла python.
Если он по пути /usr/bin/python3, тогда пробуй так:

*  *  *  *  *  /bin/bash -с '/usr/bin/python3 /home/k/python/jf/index.py'
#

Решётку в новой строке тоже.
« Последнее редактирование: 12 Апреля 2019, 20:40:21 от ecc83 »

Оффлайн zlodiak

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Как запустить python-скрипт по расписанию?
« Ответ #9 : 12 Апреля 2019, 20:49:59 »
сделал как вы посоветовали, но по-прежнему python-скрипт не запускается.

я убедился, что есть /bin/bash

я убедился, что есть исполняемый файл python: http://i.yapx.ru/D5T4F.png

решётку в новой строке не забыл

кроме того я предположил, что во время исполнения мой скрипт падает и просто не доходит дело до записи в БД. поэтому в самом начале index.html я поместил тестовый код, который записывает  фразу в файл(пробовал его запуска без крона, напрямую. всё ок):
if __name__ == '__main__':
    with open('test.txt', 'a', encoding='utf-8') as f:
        f.write('start')

в результате стало понятно, что проблема всё таки в настройке cron. то есть проблема осталась
« Последнее редактирование: 13 Апреля 2019, 09:07:43 от Azure »

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Как запустить python-скрипт по расписанию?
« Ответ #10 : 12 Апреля 2019, 20:56:13 »
вы бы предоставили сам код файла и еще бы было не плохо выкладки с логов, там уже будет ясно, запускался скрипт или нет
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн ecc83

  • Старожил
  • *
  • Сообщений: 2121
  • Ubuntu Mate 22.04 LTS
    • Просмотр профиля
Re: Как запустить python-скрипт по расписанию?
« Ответ #11 : 12 Апреля 2019, 20:57:33 »
проблема всё таки в настройке cron

Смотри какая ошибка фиксируется в системном логе.

Добавь ещё это:

*  *  *  *  *  /bin/bash -с '/usr/bin/python3 /home/k/python/jf/index.py' >> /home/k/test.log 2>> /home/k/test.log
Потом ищи в домашнем каталоге файл test.log и читай что внутри.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7820
  • We were here
    • Просмотр профиля
Re: Как запустить python-скрипт по расписанию?
« Ответ #12 : 12 Апреля 2019, 21:03:09 »
journalctl | grep -i cron
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн zlodiak

  • Автор темы
  • Новичок
  • *
  • Сообщений: 18
    • Просмотр профиля
Re: Как запустить python-скрипт по расписанию?
« Ответ #13 : 12 Апреля 2019, 21:12:45 »
в логе написано, что /bin/bash недопустимая опция. я не понимаю что это значит)

/bin/bash: -�: недопустимая опция
Использование:
/bin/bash [длинные опции а-ля `GNU'] [опции] ...
        /bin/bash [длинные опции а-ля `GNU'] [опции] файл_со_скриптом...
Длинные опции в стеле GNU:
        --debug
        --debugger
        --dump-po-strings
        --dump-strings
        --help
        --init-file
        --login
        --noediting
        --noprofile
        --norc
        --posix
        --rcfile
        --restricted
        --verbose
        --version
Опции оболочки:
        -ilrsD or -c command or -O shopt_option         (invocation only)
        -abefhkmnptuvxBCHP или опция -o


Пользователь добавил сообщение 12 Апреля 2019, 21:13:49:
journalctl | grep -i cron

апр 12 20:52:01 lenovo CRON[31843]: pam_unix(cron:session): session closed for user root
апр 12 20:53:01 lenovo CRON[31875]: pam_unix(cron:session): session opened for user root by (uid=0)
апр 12 20:53:01 lenovo CRON[31876]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
апр 12 20:53:01 lenovo CRON[31875]: (CRON) info (No MTA installed, discarding output)
апр 12 20:53:01 lenovo CRON[31875]: pam_unix(cron:session): session closed for user root
апр 12 20:54:01 lenovo CRON[31886]: pam_unix(cron:session): session opened for user root by (uid=0)
апр 12 20:54:01 lenovo CRON[31887]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
апр 12 20:54:01 lenovo CRON[31886]: (CRON) info (No MTA installed, discarding output)
апр 12 20:54:01 lenovo CRON[31886]: pam_unix(cron:session): session closed for user root
апр 12 20:55:01 lenovo CRON[31893]: pam_unix(cron:session): session opened for user root by (uid=0)
апр 12 20:55:01 lenovo CRON[31894]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
апр 12 20:55:01 lenovo CRON[31893]: (CRON) info (No MTA installed, discarding output)
апр 12 20:55:01 lenovo CRON[31893]: pam_unix(cron:session): session closed for user root
апр 12 20:56:01 lenovo CRON[31969]: pam_unix(cron:session): session opened for user root by (uid=0)
апр 12 20:56:01 lenovo CRON[31970]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
апр 12 20:56:01 lenovo CRON[31969]: (CRON) info (No MTA installed, discarding output)
апр 12 20:56:01 lenovo CRON[31969]: pam_unix(cron:session): session closed for user root
апр 12 20:57:01 lenovo CRON[31976]: pam_unix(cron:session): session opened for user root by (uid=0)
апр 12 20:57:01 lenovo CRON[31977]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
апр 12 20:57:01 lenovo CRON[31976]: (CRON) info (No MTA installed, discarding output)
апр 12 20:57:01 lenovo CRON[31976]: pam_unix(cron:session): session closed for user root
апр 12 20:58:01 lenovo CRON[32076]: pam_unix(cron:session): session opened for user root by (uid=0)
апр 12 20:58:01 lenovo CRON[32077]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
апр 12 20:58:01 lenovo CRON[32076]: (CRON) info (No MTA installed, discarding output)
апр 12 20:58:01 lenovo CRON[32076]: pam_unix(cron:session): session closed for user root
апр 12 20:59:02 lenovo CRON[32108]: pam_unix(cron:session): session opened for user root by (uid=0)
апр 12 20:59:02 lenovo CRON[32109]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
апр 12 20:59:02 lenovo CRON[32108]: (CRON) info (No MTA installed, discarding output)
апр 12 20:59:02 lenovo CRON[32108]: pam_unix(cron:session): session closed for user root
апр 12 21:00:01 lenovo CRON[32204]: pam_unix(cron:session): session opened for user root by (uid=0)
апр 12 21:00:01 lenovo CRON[32205]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
апр 12 21:00:01 lenovo CRON[32204]: (CRON) info (No MTA installed, discarding output)
апр 12 21:00:01 lenovo CRON[32204]: pam_unix(cron:session): session closed for user root
апр 12 21:00:02 lenovo sudo[32203]:  kalinin : TTY=pts/3 ; PWD=/home/kalinin ; USER=root ; COMMAND=/usr/bin/crontab -e
апр 12 21:00:02 lenovo crontab[32207]: (root) BEGIN EDIT (root)
апр 12 21:01:01 lenovo CRON[32244]: pam_unix(cron:session): session opened for user root by (uid=0)
апр 12 21:01:01 lenovo CRON[32245]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
апр 12 21:01:01 lenovo CRON[32244]: (CRON) info (No MTA installed, discarding output)
апр 12 21:01:01 lenovo CRON[32244]: pam_unix(cron:session): session closed for user root
апр 12 21:01:12 lenovo crontab[32207]: (root) REPLACE (root)
апр 12 21:01:12 lenovo crontab[32207]: (root) END EDIT (root)
апр 12 21:01:15 lenovo sudo[32247]:  kalinin : TTY=pts/3 ; PWD=/home/kalinin ; USER=root ; COMMAND=/usr/bin/crontab -l
апр 12 21:01:15 lenovo crontab[32248]: (root) LIST (root)
апр 12 21:02:01 lenovo cron[841]: (root) RELOAD (crontabs/root)
апр 12 21:02:01 lenovo CRON[32257]: pam_unix(cron:session): session opened for user root by (uid=0)
апр 12 21:02:01 lenovo CRON[32258]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py' >> /home/kalinin/test.log 2>> /home/kalinin/test.log)
апр 12 21:02:01 lenovo CRON[32257]: pam_unix(cron:session): session closed for user root
апр 12 21:03:01 lenovo CRON[32292]: pam_unix(cron:session): session opened for user root by (uid=0)
апр 12 21:03:01 lenovo CRON[32293]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py' >> /home/kalinin/test.log 2>> /home/kalinin/test.log)
апр 12 21:03:01 lenovo CRON[32292]: pam_unix(cron:session): session closed for user root
апр 12 21:04:01 lenovo CRON[32359]: pam_unix(cron:session): session opened for user root by (uid=0)
апр 12 21:04:01 lenovo CRON[32360]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py' >> /home/kalinin/test.log 2>> /home/kalinin/test.log)
апр 12 21:04:01 lenovo CRON[32359]: pam_unix(cron:session): session closed for user root
апр 12 21:05:01 lenovo CRON[32388]: pam_unix(cron:session): session opened for user root by (uid=0)
апр 12 21:05:01 lenovo CRON[32389]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py' >> /home/kalinin/test.log 2>> /home/kalinin/test.log)
апр 12 21:05:01 lenovo CRON[32388]: pam_unix(cron:session): session closed for user root
апр 12 21:06:01 lenovo CRON[32425]: pam_unix(cron:session): session opened for user root by (uid=0)
апр 12 21:06:01 lenovo CRON[32426]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py' >> /home/kalinin/test.log 2>> /home/kalinin/test.log)
апр 12 21:06:01 lenovo CRON[32425]: pam_unix(cron:session): session closed for user root
апр 12 21:07:01 lenovo CRON[32557]: pam_unix(cron:session): session opened for user root by (uid=0)
апр 12 21:07:01 lenovo CRON[32558]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py' >> /home/kalinin/test.log 2>> /home/kalinin/test.log)
апр 12 21:07:01 lenovo CRON[32557]: pam_unix(cron:session): session closed for user root


Пользователь добавил сообщение 12 Апреля 2019, 21:16:42:
вы бы предоставили сам код файла и еще бы было не плохо выкладки с логов, там уже будет ясно, запускался скрипт или нет

вот конец лога /var/log/syslog:

Apr 12 20:54:01 lenovo CRON[31887]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
Apr 12 20:54:01 lenovo CRON[31886]: (CRON) info (No MTA installed, discarding output)
Apr 12 20:55:01 lenovo CRON[31894]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
Apr 12 20:55:01 lenovo CRON[31893]: (CRON) info (No MTA installed, discarding output)
Apr 12 20:56:01 lenovo CRON[31970]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
Apr 12 20:56:01 lenovo CRON[31969]: (CRON) info (No MTA installed, discarding output)
Apr 12 20:57:01 lenovo CRON[31977]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
Apr 12 20:57:01 lenovo CRON[31976]: (CRON) info (No MTA installed, discarding output)
Apr 12 20:58:01 lenovo CRON[32077]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
Apr 12 20:58:01 lenovo CRON[32076]: (CRON) info (No MTA installed, discarding output)
Apr 12 20:59:02 lenovo CRON[32109]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
Apr 12 20:59:02 lenovo CRON[32108]: (CRON) info (No MTA installed, discarding output)
Apr 12 20:59:46 lenovo console-kit-daemon[1483]: console-kit-daemon[1483]: GLib-CRITICAL: Source ID 45 was not found when attempting to remove it
Apr 12 20:59:46 lenovo console-kit-daemon[1483]: GLib-CRITICAL: Source ID 45 was not found when attempting to remove it
Apr 12 21:00:01 lenovo CRON[32205]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
Apr 12 21:00:01 lenovo CRON[32204]: (CRON) info (No MTA installed, discarding output)
Apr 12 21:00:02 lenovo crontab[32207]: (root) BEGIN EDIT (root)
Apr 12 21:01:01 lenovo CRON[32245]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py')
Apr 12 21:01:01 lenovo CRON[32244]: (CRON) info (No MTA installed, discarding output)
Apr 12 21:01:12 lenovo crontab[32207]: (root) REPLACE (root)
Apr 12 21:01:12 lenovo crontab[32207]: (root) END EDIT (root)
Apr 12 21:01:15 lenovo crontab[32248]: (root) LIST (root)
Apr 12 21:02:01 lenovo cron[841]: (root) RELOAD (crontabs/root)
Apr 12 21:02:01 lenovo CRON[32258]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py' >> /home/kalinin/test.log 2>> /home/kalinin/test.log)
Apr 12 21:03:01 lenovo CRON[32293]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py' >> /home/kalinin/test.log 2>> /home/kalinin/test.log)
Apr 12 21:04:01 lenovo CRON[32360]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py' >> /home/kalinin/test.log 2>> /home/kalinin/test.log)
Apr 12 21:05:01 lenovo CRON[32389]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py' >> /home/kalinin/test.log 2>> /home/kalinin/test.log)
Apr 12 21:06:01 lenovo CRON[32426]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py' >> /home/kalinin/test.log 2>> /home/kalinin/test.log)
Apr 12 21:07:01 lenovo CRON[32558]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py' >> /home/kalinin/test.log 2>> /home/kalinin/test.log)
Apr 12 21:08:01 lenovo CRON[32603]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py' >> /home/kalinin/test.log 2>> /home/kalinin/test.log)
Apr 12 21:09:01 lenovo CRON[32647]: (root) CMD (/bin/bash -\321\201 '/usr/bin/python3 /home/kalinin/python/joba_finder/index.py' >> /home/kalinin/test.log 2>> /home/kalinin/test.log)
Apr 12 21:09:01 lenovo CRON[32648]: (root) CMD (  [ -x /usr/lib/php/sessionclean ] && /usr/lib/php/sessionclean)

а сам код файла тут, но там зрелище не для слабонервных. это мой первый опыт)


« Последнее редактирование: 13 Апреля 2019, 09:08:38 от Azure »

Оффлайн ecc83

  • Старожил
  • *
  • Сообщений: 2121
  • Ubuntu Mate 22.04 LTS
    • Просмотр профиля
Re: Как запустить python-скрипт по расписанию?
« Ответ #14 : 12 Апреля 2019, 21:22:03 »
Проверь :

/bin/bash -c
Похоже ключ "-c" у тебя русская буква

 

Страница сгенерирована за 0.022 секунд. Запросов: 19.