linux автозагрузка скрипта python
Как добавить скрипт в автозагрузку Ubuntu
Иногда возникает необходимость выполнить свой скрипт во время загрузки системы. Например, чтобы запустить определенную программу, поменять настройки разрешения экрана или выполнить обновление необходимой программы.
Сделать это можно несколькими способами. С помощью графической оболочки или с помощью системы инициализации systemd, которая используется сейчас практически во всех дистрибутивах.
Автозагрузка с помощью стандартной утилиты Ubuntu
Создайте скрипт в удобном месте и сделайте его выполняемым:
sudo gedit /путь_к_скрипту/имя_скрипта.sh
#!/bin/bash
echo «Hello world»
Наш скрипт просто выводит строчку Hello world на экран, более подробно о создании скриптов читайте в статье написание скриптов на Bash. Когда скрипт будет готов, сделайте его исполняемым:
sudo chmod ugo+x /путь_к_скрипту/имя_скрипта.sh
Запустите утилиту Автоматически запускаемые приложения в главном меню системы:
Нажмите кнопку Добавить и в поле Команда введите полный путь к файлу вашего скрипта или выберите его с помощью кнопки Обзор, затем нажмите Добавить:
Скрипт будет выполнен после загрузки графической оболочки Ubuntu.
Автозагрузка скриптов Linux в systemd
Создайте файл сервиса systemd с помощью следующей команды:
Добавьте в него такое содержимое:
[Unit]
Description=My Script Service
After=multi-user.target
[Service]
Type=idle
ExecStart=/полный/путь/к/скрипту/имя_скрипта.sh
[Install]
WantedBy=multi-user.target
В строчке ExecStart можно прописать либо путь к скрипту, который надо выполнить, либо саму команду. Теперь добавьте этот скрипт в автозагрузку:
sudo systemctl daemon-reload
sudo systemctl enable mysrcipt
Linux автозагрузка скрипта python
Re: скрипт python в автозапуск
Все работает, но хотелось бы чтобы этот скрипт запускался сам при включении распберри пи.
Помогите советом как это сделать плиз[/quote]
Есть несколько способов поставить в автозагрузку на выбор:
1.Если у тебя стартуют иксы то тогда проще в /etc/xdg/autostart создать выражаясь терминологиями M$ ярлык на файлик
Re: скрипт python в автозапуск
Re: скрипт python в автозапуск
Re: скрипт python в автозапуск
Re: скрипт python в автозапуск
Друзья, прошу помочь!
Пишу скрипт на python, использована предложенном решение, прописал его в автозапуск. Проблема в том, что я не использую GUI и стартует оболочка только после ввода startx, а мой скрипт почему-то не хочет работать до запуска GUI.
Подскажите пожалуйста, куда мне копать?
Re: скрипт python в автозапуск
Re: скрипт python в автозапуск
Нужно, чтобы скрипт запускался при загрузке малинки, не дожидаясь запуска GUI.
Я новичек и в линуксе и в пайтоне, и не понимаю, почему моя программа работает только после ввода startx в консоли.
Re: скрипт python в автозапуск
Добро пожаловать в линукс)
При надобности, в линуксе можно управлять последовательностью автозагрузки.
Для этого нужно прописать свой скрипт в загрузку командой:
sudo update-rc.d имя_скрипта defaults
А можно тупо по старинке прописать свой скрипт в /etc/rc.local перед «exit 0»
Если пусть нестандартный, то прописывать полностью.
А файлы «имя.desktop» с прописанным в нутри «Exec=/путь/мой_скрипт» в
/.config/autostart
запускаются десктопным менеджером, в данном случае LXDE, у openbox-a другая система автостарта.
Re: скрипт python в автозапуск
Re: скрипт python в автозапуск
Я прописал программу в автозагрузку, но она не стала запускаться, ругаясь на невозможность загрузки некоторых модулей (см. скрин: https://yadi.sk/i/fZkOreh3Vsmfn )
Подскажите пожалуйста, что я делаю не так?
Re: скрипт python в автозапуск
Re: скрипт python в автозапуск
Спасибо всем за Ваши советы!
Запустить программу без компилятора так и не получилось, а вот новый скрипт с одной строкой вызова моей основной программы система приняла. Т. ч. все заработало!
Помимо этого, Вы помогли мне немного разобраться в линухе, дав направление, где мне копать. Еще раз спасибо Вам всем за Вашу помощь!
Re: скрипт python в автозапуск
Всем доброго времени суток!
Пишу небольшой скрипт на python, с котором хотелось бы общаться через терминал. Затем добавил его в автозагрузку.
При запуске Raspbian после запуска рабочего стола мой скрипт выполняется 2 раза подряд (есть запись в log файле). Причем при первом запуске он не открывает терминал, а при втором запуске- открывает терминал.
Здесь привел условный пример скрипта, загружающий одно ядро на 100%
С raspberry работаю через VNC терминал. Если послать команду CTRL+ALT+DEL, то в списке процессов есть 2 Команды: python, каждый с загрузкой системы по 25%, что логично с учётом скрипта
Собственно вопрос: почему так происходит и как сделать что-бы скрипт запускался один раз?
Скрипт в автозагрузку
Требуется поместить некий срипт на python в автозагрузку, чтобы он постоянно работал, а если отключался, то происходил перезапуск скрипта.
Спасибо попробуем, я пытался через cron, но не вышло
после аварийного завершения не перезапускался
Про respawn можно по подробнее
init сам будет мониторить и рестартовать процесс
надо добавить нечто вроде такого:
somelabel:2345:respawn:/path/to/script.sh
А чё за дистр? А то в Upstart легко. И чтобы перезапуск работал достаточно указать опцию respawn.
Ну вот к примеру у меня конфиг upstart для jabber бота на питоне (/etc/init/talisman.conf):
Здесь оно будет респавниться, но если процесс падает чаще пяти раз за десять секунд, оно прекратит свою работу. Если задание требуется выполнять от рута, то достаточно оставить exec /usr/bin/python script.py
Да, только следует указывать полный путь к нему, если он не в PATH.
В моём случае я сперва перехожу в директорию, где находится скрипт (команда chdir), т.к. этого требует конкретно этот демон.
Нет, дефолтные значения 10 5 (не чаще десяти раз за пять минут).
Кстати, umask и nice из моего конфига тоже не обязательно использовать. Первая для того чтобы создаваемые демоном файлы имели права доступа 664 (775 для каталогов), а вторая устанавливает низкий приоритет.
Автозагрузка Linux
После запуска компьютера, как правило, нам приходится запускать некоторые программы. которыми мы пользуемся чаще всего. Также после запуска системы нам может понадобиться выполнить какие-либо специфичные действия, например, создать нужные файлы или установить некоторые параметры. Очень неудобно делать это вручную. Для решения таких задач существует автозагрузка.
В этой статье мы рассмотрим как работает автозагрузка Linux, как добавить программы автозагрузки, куда их будет более правильно добавить, а также какие виды автозагрузки бывают в этой операционной системы.
Как работает автозагрузка?
Есть процессы, которые система инициализации, например, systemd, запускает по умолчанию, но также вы можете настроить чтобы она запускала нужные вам процессы. Также многими дочерними процессами выполняются файлы скриптов или имеется та или иная возможность запускать необходимые вам программы. Такая возможность есть и у большинства окружений рабочего стола.
Рассмотрим основные уровни автозагрузки которые вы можете использовать:
Дальше мы рассмотрим более подробно как использовать каждый из пунктов для автозагрузки программ, скриптов или выполнения команд в Linux.
Автозагрузка на уровне ядра
Автозагрузка на уровне ядра вряд ли будет вам очень полезной для повседневного применения, но я решил о ней упомянуть, поскольку такая возможность есть. С помощью параметра ядра init вы можете указать какую программу стоит запускать сразу после завершения инициализации ядра. Например, вы можете загрузить оболочку Bash вместо Systemd. Для этого достаточно подправить строку запуска ядра в конфигурационном файле Grub или во время запуска. Добавьте в конец параметр init:
sudo vi /boot/grub2/grub.cfg
linux /vmlinuz-4.8.0-22-generic root=/dev/mapper/systems-ubuntu ro quiet init=/bin/bash
Но, обычно, удобнее изменить это значение временно, в меню Grub. Читайте подробнее об этом в статье параметры ядра Linux. Так не выполняется автозагрузка программы linux, но, тем не менее, иногда может быть полезно.
Автозагрузка в системе инициализации
Чаще всего, когда говорится автозагрузка Linux, подразумевается именно автозагрузка сервисов с помощью системы инициализации. В systemd очень продвинутая система управления службами. Здесь поддерживается разрешение зависимостей, параллельный запуск, отсрочка запуска и перезапуск при ошибке. В терминологии Systemd все запускаемые программы представлены файлами юнитов, в каждом юните описаны параметры программы, ее исполняемый файл, а также дополнительные требования к запуску.
Для добавления или удаления служб из автозапуска используется команда systemctl. Чтобы добавить службу в автозапуск выполните:
sudo systemctl enable имя_службы
А чтобы отключить ее автозапуск linux:
sudo systemctl disable имя_службы
Например, если вы хотите добавить в автозагрузку Apache, то нужно выполнить:
sudo systemctl enable apache
Также вы можете проверить добавлена ли уже служба в автозагрузку:
sudo systemctl is-enabled httpd
Если вы не знаете точное имя файла сервиса, но знаете его первую букву, то можно использовать автодополнение, как и в любом другом месте терминала с помощью кнопки Tab:
Также вы можете посмотреть все сервисы, которые были добавлены в автозагрузку с помощью команды:
systemctl list-unit-files | grep enabled
Автозагрузка скриптов в Linux
Раньше было принято размещать все скрипты, которые запускаются по умолчанию в файле /etc/rc.local. Этот файл все еще существует, но это пережиток системы инициализации SysVinit и теперь он сохраняется только для совместимости. Скрипты же нужно загружать только с помощью Systemd.
Для этого достаточно создать простой юнит-файл и добавить его в автозагрузку, как любой другой сервис. Сначала создадим этот файл:
sudo vi /lib/systemd/system/runscript.service
[Unit]
Description=My Script Service
After=multi-user.target
[Service]
Type=idle
ExecStart=/usr/bin/local/script.sh
[Install]
WantedBy=multi-user.target
Осталось выставить правильные права:
sudo chmod 644 /lib/systemd/system/runscript.service
Затем обновить конфигурацию и добавить в автозагрузку Linux новый скрипт:
sudo systemctl daemon-reload
sudo systemctl enable myscript.service
После следующей перезагрузки этот скрипт будет запущен автоматически. Обратите внимание, что для каждого скрипта, который вы собираетесь запускать должны быть правильно выставлены права, а именно нужно установить флаг выполнения. Для этого используйте команду chmod:
sudo chmod u+x /usr/local/bin/script
Автозагрузка X сервера
Часто, в легких окружениях рабочего стола и оконных менеджеров для автозагрузки программ используется автозагрузка на уровне X сервера. Все запускаемые, таким образом, скрипты будут стартовать после запуска X сервера. Чтобы настроить такую автозагрузку Linux вам будет достаточно добавить путь к нужному скрипту в файл
/.xinitrc или /etc/X11/xinit/xinitrc. Синтаксис добавляемой строки таков:
exec путь_к_скрипту &
/.xinitrc еще не существует, то его нужно создать:
Затем, чтобы добавить в автозагрузку linux скрипт, отредактируйте файл так, как вам нужно. Например, будем запускать Firefox:
Готово. Осталось сохранить изменения. При следующем запуске X сервера сработает автозапуск Linux и выполняется эта команда. Таким же способом может выполняться автозапуск приложений linux.
Автозагрузка окружения рабочего стола
Такие мощные окружения рабочего стола как Gnome и KDE имеют свои приложения для автозагрузки. Например, в Gnome программа называется «Запускаемые автоматически приложения». Вы можете запустить ее из главного меню системы:
Здесь вы видите все программы, которые уже добавлены в автозагрузку. Вы можете отключить каждую из них просто сняв галочку.
Чтобы добавить новую программу или скрипт в автозагрузку нажмите кнопку «Добавить»:
Тут вам нужно заполнить три поля:
Дальше нажмите «Добавить» ваша программа появится в списке. При следующей загрузке системы, будет выполняться автозагрузка программ linux.
Автозагрузка Bash
/usr/bin/local/script
export MYWAR=test
Здесь вы можете запускать на выполнение любые скрипты или команды. Часто такой подход используется для создания псевдонимов команд, объявления новых переменных и собственных функций.
Выводы
В этой статье мы рассмотрели добавление в автозагрузку linux, а также как работает автозагрузка и ее виды. Конечно, существует множество других файлов, куда бы вы могли пристроить свой скрипт, но это будет неправильно. Нужно использовать только предназначенные для этого методы, хотя бы потому, чтобы потом не забыть. Если у вас остались вопросы, спрашивайте в комментариях!
Запуск python скрипта в Linux
На этом языке написано огромное количество системных программ, среди них пакетный менеджер apt, видеоредактор OpenShot, а также множество скриптов, которые вы можете установить с помощью утилиты pip. В этой небольшой статье мы рассмотрим как запустить Python скрипт в Linux с помощью терминала различными способами.
Запуск python скрипта в Linux
Для примера нам понадобится Python скрипт. Чтобы не брать какой-либо из существующих скриптов, давайте напишем свой:
print(«Hello from losst!»)
Для того чтобы запустить скрипт необходимо передать его интерпретатору Python. Для этого просто откройте терминал с помощью сочетания клавиш Ctrl + Alt + T, перейдите в папку со скриптом и выполните:
Но как вы могли заметить, при запуске apt или openshot не надо писать слово python. Это намного удобнее. Давайте разберемся как это реализовать. Если вы не хотите указывать интерпретатор в командной строке, его надо указать в самом скрипте. Для этого следует в начало скрипта добавить такую строчку:
Сохраните изменения, а затем сделайте файл скрипта исполняемым с помощью такой команды:
chmod ugo+x script.py
После этого можно запустить скрипт Python просто обращаясь к его файлу:
Как видите, запуск команды python Linux выполняется довольно просто и для этого даже есть несколько способов. А каким способом пользуетесь вы? Напишите в комментариях!