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


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Скрипт в автозагрузку  (Прочитано 3845 раз)

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

Оффлайн sla1733

  • Автор темы
  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Скрипт в автозагрузку
« : 10 Января 2018, 15:32:35 »
Народ, может кто подсказать как правильно сделать. Есть скрипт в /etc/init.d/:
Код: (bash) [Выделить]
#!/bin/sh
while :
do
    if ps ax | grep -v grep | grep СТАРТ; then
        echo "zapusk vipolnen"
    else
        cd /opt/
        python СТАРТ.py
    fi
    sleep 5
done
Как добавить его в автозагрузку?
Я сделал следующее:
chmod ugo+x /etc/init.d/имя_скрипта
update-rc.d имя_скрипта start 70 2 3 4 5 . stop 20 0 1 6 .
Запустил для проверки командой service имя_скрипта startи все нормально работает пока не закроешь сессию. В общем явно где-то что-то не так но где пока не разобрался. Может есть у кого идеи
« Последнее редактирование: 10 Января 2018, 16:34:19 от Azure »

Оффлайн ecc83

  • Старожил
  • *
  • Сообщений: 2121
  • Ubuntu Mate 22.04 LTS
    • Просмотр профиля
Re: Скрипт в автозагрузку
« Ответ #1 : 10 Января 2018, 16:39:57 »
Программа запускается от имени пользователя?

Оффлайн sla1733

  • Автор темы
  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Re: Скрипт в автозагрузку
« Ответ #2 : 10 Января 2018, 17:16:23 »
Программа запускается от имени пользователя?
Нет

Пользователь добавил сообщение 10 Января 2018, 17:17:42:
Отвалилась и при открытой сессии, похоже это не связано

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Скрипт в автозагрузку
« Ответ #3 : 10 Января 2018, 17:56:54 »
sla1733, если откроете секрет, где так учили делать, и что делает питоновский скрипт - может помогу)
А то я вижу
а) неправильно написаный инит скрипт
б) неправильно проставленые приоритеты запуска и остановки (сумма должа быть 100)
в) непонятно что делает питоновский скрипт. Это вообще демон?
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

Оффлайн InterVi

  • Участник
  • *
  • Сообщений: 123
    • Просмотр профиля
    • мой код
Re: Скрипт в автозагрузку
« Ответ #4 : 10 Января 2018, 21:18:24 »
А почему именно так? Возможно crontab будет достаточно.

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3023
    • Просмотр профиля
Re: Скрипт в автозагрузку
« Ответ #5 : 10 Января 2018, 23:40:22 »
Там не только сумма должна быть равна 100, там ещё должны быть другие строки, как в /etc/skeleton.
Пётр.

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Скрипт в автозагрузку
« Ответ #6 : 10 Января 2018, 23:47:45 »
Там не только сумма должна быть равна 100, там ещё должны быть другие строки, как в /etc/skeleton.
Спасибо за "исправление". Только подскажите, что написано в пункте а)

2 sla1733, И вообще, что за ОС и версия
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

Оффлайн sla1733

  • Автор темы
  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Re: Скрипт в автозагрузку
« Ответ #7 : 11 Января 2018, 08:39:56 »
Ubuntu 16.04 server
Строка python СТАРТ.py - это просто команда запуска питоновской программы которая, грубо говоря, берет файлы из одной папки, обрабатывает их и перекладывает в другую. Скрипт из примера проверяет запущена ли питоновская программа и, если нет, запускает её.
То что он, возможно, неправильно сделан как сервис и добавлен в атозагрузку спору нет, поэтому и прошу подсказать как лучше это сделать

Пользователь добавил сообщение 11 Января 2018, 08:43:13:
А почему именно так? Возможно crontab будет достаточно.
На данный момент так и сделано но это не вариант потому что в кроне нет проверки запущена ли уже программа
« Последнее редактирование: 11 Января 2018, 08:43:13 от sla1733 »

Оффлайн ALiEN175

  • Администратор
  • Старожил
  • *
  • Сообщений: 6587
  • 20% Cooler
    • Просмотр профиля
Re: Скрипт в автозагрузку
« Ответ #8 : 11 Января 2018, 09:22:08 »
в кроне нет проверки запущена ли уже программа
дык проверка эта в скрипте же, который показали - этот скрипт и записываете в крон, удалив предварительно бесконечный цикл. Или действительно надо каждые пять секунд проверять? (у крона одна минута)
🖥 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

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Скрипт в автозагрузку
« Ответ #9 : 11 Января 2018, 09:32:57 »
На данный момент так и сделано но это не вариант потому что в кроне нет проверки запущена ли уже программа
Для этого существует flock. И пока существует лок запуск не произойдет
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

Оффлайн sla1733

  • Автор темы
  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Re: Скрипт в автозагрузку
« Ответ #10 : 11 Января 2018, 10:41:17 »
в кроне нет проверки запущена ли уже программа
дык проверка эта в скрипте же, который показали - этот скрипт и записываете в крон, удалив предварительно бесконечный цикл. Или действительно надо каждые пять секунд проверять? (у крона одна минута)
Точно, до этого добавлял саму команду запуска питоновской программы, когда можно просто добавить тот скрипт.
И всё-таки, если сделать его как сервис, как нужно было сделать?

ТС, как видно по состоянию на 30/01/2020 потерял интерес к созданной им теме (пометка Решено в теме отсутствует, тема оставлена не закрытой, сообщений в теме давно не было). Тема стародавняя (последнее сообщение в топике: 17/01/2018; последнее сообщение от ТС в топике: 11/01/2018). Модератором раздела принято решение закрыть тему.
--zg_nico
« Последнее редактирование: 30 Января 2020, 19:47:06 от zg_nico »

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Скрипт в автозагрузку
« Ответ #11 : 11 Января 2018, 10:49:36 »
sla1733,

1. так как у вас 16.04, то не через init.d, а через systemd =)
2. так как вы делаете ожидание в 5 секунд, то стоит добавлять еще таймер
3. вы можете сделать через крон и flock (для этого случая самый простой вариант)
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: Скрипт в автозагрузку
« Ответ #12 : 11 Января 2018, 13:37:20 »
так как у вас 16.04, то не через init.d, а через systemd =)

Вообще то в 16.04 init.d тоже работает. То есть вопрос не в том какой службой запускать, а в правильном составлении скрипта, что бы он производил все проверки и выполнял запуск. А то, как его запускать это второстепенно.

Если его нужно запускать периодически, то конечно cron логичнее всего.

Оффлайн InterVi

  • Участник
  • *
  • Сообщений: 123
    • Просмотр профиля
    • мой код
Re: Скрипт в автозагрузку
« Ответ #13 : 11 Января 2018, 13:43:06 »
ecc83, системд удобнее тем, что модно запускать / стопить юнит. А так придётся пришибать процесс с зацикленным скриптом и процесс с питоном.

Оффлайн ecc83

  • Старожил
  • *
  • Сообщений: 2121
  • Ubuntu Mate 22.04 LTS
    • Просмотр профиля
Re: Скрипт в автозагрузку
« Ответ #14 : 11 Января 2018, 14:00:53 »
ecc83, системд удобнее тем, что модно запускать / стопить юнит. А так придётся пришибать процесс с зацикленным скриптом и процесс с питоном.

Если необходимо "запускать / стопить юнит", тогда согласен :)


Кстати, когда то была популярна такая утилита Gnome-schedule, потом автор её забросил и она пропала с репозиториев.
Потом, после долгого перерыва, появились относительно свежие исходники и я собрал deb пакет под 16.04

По сути это графическая настройка crontab.
Если её запускать от пользователя, то это будет пользовательский cron, если через "gksu", то соответственно.

Если кому интересно, вот ссылка на собраный пакет.

 

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