Выполнить скрипт при запуске

Я пытаюсь выполнить скрипт, когда загружается моя малина Pi. Я бы хотел, чтобы веб-браузер автоматически открывался.

Я попытался найти простое решение (например, сбросить мой скрипт в какой-то каталог «startup» или что-то подобное), но я не вижу ничего подобного.

Я просмотрел Upstart , но я изо всех сил пытаюсь понять, как это работает. Любые скрипты, которые я пробовал, не работали, когда я их тестировал.

152 голоса | спросил Tyler Murry 1 AM00000050000001831 2013, 05:52:18

12 ответов


155

Для запуска Midori при запуске просмотрите этот учебник . Для решений DIY читайте дальше.


Вы можете добавить исполняемую команду скрипта в конец .bashrc, который будет запускать ваш скрипт каждый раз при входе в систему .

  1. Убедитесь, что вы находитесь в папке pi:

    $ cd ~
    
  2. Создайте файл и напишите сценарий для запуска в файле:

    $ sudo nano superscript
    
  3. Сохранить и выйти: Ctrl + X , Y , Введите

  4. Откройте .bashrc для конфигурации:

    $ sudo nano .bashrc
    
  5. Прокрутите вниз и добавьте строку: ./superscript

  6. Сохранить и выйти: Ctrl + X , Y , Введите


Если вы ищете решение, которое работает при загрузке на консоль , посмотрите эта ссылка . Базовая версия:

  1. Создайте файл для сценария запуска и напишите свой скрипт в файле:

    $ sudo nano /etc/init.d/superscript
    
  2. Сохранить и выйти: Ctrl + X , Y , Введите

  3. Сделайте исполняемый файл сценария:

    $ sudo chmod 755 /etc/init.d/superscript
    
  4. Скрипт регистрации запускается при запуске:

    $ sudo update-rc.d superscript defaults
    

Если вы хотите, чтобы сценарий запускался при загрузке в среду LXDE , вы можете взглянуть на это сообщение форума малины Pi :

  1. Перейдите к ~/.config/lxsession/LXDE-pi

  2. Откройте файл autostart в этой папке:

    $ sudo nano autostart
    
  3. Добавить @midori в новую строку. Если вы хотите запустить что-то вроде скрипта python, поместите что-то вроде @python mypython.py в новую строку. Запуск файла сценария будет @./superscript, но по какой-то причине сценарий работает в бесконечном цикле (возможно, это остановит это).

  4. Сохранить и выйти: Ctrl + X , Y , Введите

  5. Перезапустите свой малиновый Pi в среду LXDE.

ответил syb0rg 1 AM00000060000003731 2013, 06:31:37
32

То, как я видел большинство людей, делает это (смотрите на форумах Raspberry Pi), и я сделал успешную работу с помощью /etc/rc.local.

Все, что вам нужно сделать, это поместить ./myscript в текстовый файл rc.local. Если он находится в python, поставьте python myscript.py.

Это буквально «простое решение» (например, удаление моего скрипта в каком-то «каталоге запуска» или что-то подобное) »- возможно, поиск на форумах, когда у вас возникают вопросы, это решение появилось на первых 4 результаты поиска в Google!

ответил theoB610 26 ThuEurope/Moscow2013-12-26T16:06:18+04:00Europe/Moscow12bEurope/MoscowThu, 26 Dec 2013 16:06:18 +0400 2013, 16:06:18
19

Добавьте его в crontab

Команда crontab запускает команды в определенное время.


Отредактируйте файл:

sudo crontab -e

Добавить строку в файл (здесь скрипт python):

@reboot python3 /home/pi/Desktop/exemple.py &
ответил Aaron 28 MarpmMon, 28 Mar 2016 23:21:32 +03002016-03-28T23:21:32+03:0011 2016, 23:21:32
6

Я хочу бросить свои два цента, хотя это старый вопрос, но обычно просят сделать простую вещь - автозапуск. Я попробовал все предлагаемые решения во всех ответах на этот вопрос. Никто из них не работал на меня. Я использую Raspberry PI Model 2 с Raspbian.

Единственный способ получить мое приложение для автозапуска успешно - через скрипт следующим образом. Я говорю успешно, потому что мое приложение запускалось, как ожидалось, без каких-либо проблем, например, начиная с неправильного пути работы.

1.Создайте пустой файл с расширением .sh и назовите его как хотите.

2.Copy и Вставить следующее ТОЧНО, кроме изменения имени вашего приложения на имя скрипта, которое вы только что создали.

  #! /bin/sh

 ### BEGIN INIT INFO
 # Provides:          noip
 # Required-Start:    $remote_fs $syslog
 # Required-Stop:     $remote_fs $syslog
 # Default-Start:     2 3 4 5
 # Default-Stop:      0 1 6
 # Short-Description: Simple script to start a program at boot
 ### END INIT INFO

 #change /direct/path/to/your/application to the path your application is in.
 cd /direct/path/to/your/application      # example cd /home/pi/myprogram/

 #change YourProgramExactName to Exact name of your program that you want to auto start
 ./YourProgramExactName

 exit 0 
  1. Затем сохраните файл сценария в папке вашего приложения

  2. Затем откройте папку /home/pi/.config/autostart. В вашем случае это может быть иначе. Просто откройте домашнюю папку и включите просмотр скрытых папок. откройте .config/autostart. Если вы не видите папку автозапуска, создайте папку с именем autostart в папке .config.

  3. в папке автозапуска вам необходимо создать ярлык для вашего файла сценария, который вы создали, следующим образом. Создайте пустой файл с расширением .desktop.

  4. Скопируйте и вставьте следующее в пустой файл рабочего стола, за исключением того, что вам нужно будет изменить Comment, Name, Exec, Path и Icon.

    [Desktop Entry]
    Comment=
    Exec=/path/to/Your/application/Name-of-the-script-file (.sh)
    Icon=/Path/to/Your/application/Icon/IconName
    Name=YourApplicationEXACTNAME
    Path=/Path/to/Your/Application-ONLY
    Type=Application
    
  5. Сохраните и закройте файл после изменения всех необходимых полей. Вы сделали. Просто проверьте это.

ответил ThN 29 MarpmTue, 29 Mar 2016 21:54:55 +03002016-03-29T21:54:55+03:0009 2016, 21:54:55
4

У меня также были проблемы с этим. На Raspberry Pi3 работает Raspbian, это то, что я сделал:

  1. Создайте сценарий запуска в корневом каталоге (я назвал мой «запуск»):
  

sudo leafpad launch.sh

  1. Сохранить файл
  2. Отредактируйте файл автозапуска LXDE-pi
  

sudo leafpad /home/pi/.config/lxsession/LXDE-pi/autostart

  1. Добавьте это в нижнюю часть этого файла.
  

./launch.sh

  1. перезагрузка
ответил lamarant 1 PMpFri, 01 Apr 2016 19:03:17 +030003Friday 2016, 19:03:17
4

Автозапуск приложений xorg

Если сценарий, который вы хотите запустить, требует сеанса xorg, вы можете попробовать выполнить freesktop autostart spec , который может работать или не работать в зависимости от вашей среды.

В качестве альтернативы вы можете настроить таргетинг на свою рабочую среду, описанную в https: //wiki.archlinux .org /index.php /autostarting .

Запуск скрипта как службы systemd

Если ваш скрипт соответствует описанию демона или «службы», а ваша система работает systemd , что имеет место для raspbian и самых современных linuces, тогда вы можете настроить свой сценарий для работы в качестве службы systemd - это обеспечивает грамотный контроль над жизненным циклом и средой выполнения, поскольку а также предварительные условия для запуска сценария, такие как запуск и запуск сети. Также возможно настроить перезапуск службы в случае сбоя (Restart=always) и задержка между перезагрузкой, например RestartSec=10).

Для общесистемного использования создайте файл systemd в разделе /etc/systemd/system, например. с помощью vim /etc/systemd/system/autossh.service:

 [Unit]
Description=Autossh keepalive daemon
## make sure we only start the service after network is up
Wants=network-online.target
After=network.target

[Service]
## use 'Type=forking' if the service backgrounds itself
## other values are Type=simple (default) and Type=oneshot
Type=forking
## here we can set custom environment variables
Environment=AUTOSSH_GATETIME=0
Environment=AUTOSSH_PORT=0
ExecStart=/usr/local/bin/ssh-keep-alive.sh
ExecStop=/usr/bin/killall -9 autossh
### NOTE: you can have multiple `ExecStop` lines
ExecStop=/usr/bin/killall ssh
# don't use 'nobody' if your script needs to access user files
# (if User is not set the service will run as root)
#User=nobody

# Useful during debugging; remove it once the service is working
StandardOutput=console

[Install]
WantedBy=multi-user.target

См. также:

Теперь мы готовы протестировать сервис:

 systemctl start autossh

Проверка состояния службы:

 systemctl status autossh

Остановка службы:

 systemctl stop autossh

После того, как вы подтвердите, что служба работает как ожидается, включите ее с помощью:

 systemctl enable autossh
  

ПРИМЕЧАНИЕ. В целях безопасности systemd запускает скрипт в ограниченной среде, аналогично тому, как выполняются скрипты crontab, поэтому не делайте никаких предположений о существующих системных переменных. Используйте клавиши Environment, если ваш скрипт нуждается в определенных переменных. Добавление set -x вверху вашего сценария bash, а затем запуск systemctl status my_service может помочь определить, почему ваш скрипт терпит неудачу. Как правило, тупо, всегда используйте абсолютные пути для всего, включая echo и cat, или явно определить ваш $ PATH.

ответил ccpizza 28 +03002017-10-28T17:47:31+03:00312017bEurope/MoscowSat, 28 Oct 2017 17:47:31 +0300 2017, 17:47:31
1

На малине Pi3 работает Raspbian Stretch, это то, что я сделал:

Отредактируйте файл автозапуска LXDE-pi

    sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart

Добавьте это к нижней части этого файла

    @sudo python3 /path/to/your/script.py

save & перезагрузка

ответил Amr Sohil 25 FebruaryEurope/MoscowbSun, 25 Feb 2018 02:25:55 +0300000000amSun, 25 Feb 2018 02:25:55 +030018 2018, 02:25:55
0

Вы можете разместить свой скрипт в нижней части файла /etc/profile.

Другие варианты не работали для меня, но это возможно потому, что я поместил свой скрипт на рабочий стол.

ответил HelpNeeder 27 72016vEurope/Moscow11bEurope/MoscowSun, 27 Nov 2016 05:06:55 +0300 2016, 05:06:55
0

создать файл .sh с командами «python /path/to/your/script.py» введите 'sudo nano /etc/rc.local' и введите путь к файлу .sh

до

exit 0

Или вы можете просто ввести

crontab -e

или

sudo crontab -e 

, если вы хотите, чтобы сценарий запускался при запуске

внутри типа файла в

@reboot python /path/to/your/script.py &
ответил Deepesh 6 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 06 Sep 2016 17:21:31 +0300 2016, 17:21:31
0

Способ 1:

Чтобы запустить команду автоматически при входе в систему, поместите ее в файл с именем

.bashrc

в каталоге пользователя (например, /home /pi)

Например, файл может содержать

chromium-browser --kiosk www.google.com

для запуска Chromium в полноэкранном режиме на www.google.com


Способ 2:

Это решение работает очень хорошо. После загрузки браузера в верхнем левом углу экрана появляется маленький черный квадрат, который, как представляется, является общей ошибкой (упоминается на форумах другими), но в остальном полноэкранный режим скрывает все, кроме страницы браузера.

Отредактируйте файл автозапуска:

sudo nano /etc/xdg/lxsession/LXDE/autostart 

Прокомментируйте все, используя '#' в начале каждой строки, а затем добавьте следующие строки

Автозапуск браузера

@xset s off
@xset -dpms
@xset s noblank
@midori -e Fullscreen -a http://google.com

При необходимости используйте инструмент настройки, чтобы включить автоматическое выполнение GUI при включении питания

sudo raspi-config

Если вам нужно вернуться в командную строку CTRL + ALT + F1

CTRL + ALT + F2

ответил User98764431 14 +03002017-10-14T19:03:14+03:00312017bEurope/MoscowSat, 14 Oct 2017 19:03:14 +0300 2017, 19:03:14
-2

it WORKS. (при каждой перезагрузке он автоматически готовит следующие сообщения)

$ cat /etc/rc.local
#!/bin/sh -e
echo "18" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio18/direction
echo "1" > /sys/class/gpio/gpio18/value
exit 0
ответил YumYumYum 10 PMpTue, 10 Apr 2018 19:32:40 +030032Tuesday 2018, 19:32:40
-2

Это то, что я обычно делаю.

  1. Сохраните файл в домашнем каталоге малины pi. Например: mycode.py
  2. Отредактируйте файл:

    sudo nano .bashrc

  3. Перейдите в конец файла и напишите:

    sudo python mycode.py

  4. Если вы хотите, чтобы вывод сохранялся в txt-файле, отредактируйте код на шаге 3 следующим образом:

    sudo python mycode.py> gt; output.py

Надеюсь, это поможет!

ответил Doe.John 15 AMpSun, 15 Apr 2018 00:02:09 +030002Sunday 2018, 00:02:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132