2015-03-04 1 views
6

У меня есть a.out, который я хочу запустить, когда загрузится мой BeagleBone. Это на самом деле сервер сокетов, который я хочу запустить, как только BeagleBone включится. Я попытался поместить это в /etc/init.d, но это не помогло. Я написал сценарий оболочки для запуска этого исполняемого файла, но даже это не помогло.Выполнение скрипта при запуске с использованием BeagleBone Black

Что я могу сделать, чтобы запустить скрипт сразу после его загрузки?

+0

Добро пожаловать в переполнение стека! Я переформулировал ваш вопрос таким образом, что его легко выбрать, и я связался с доской на всякий случай, если кто-то не знаком с ней. –

+0

Что такое дистрибутив (и версия) Debian, который вы используете на своем BBB? Я спрашиваю, потому что сначала вам нужно выяснить, какая [init system] (http://en.wikipedia.org/wiki/Init) используется для вашего распространения. Насколько я помню, некоторые версии BBB поставляются с [systemd] (http://en.wikipedia.org/wiki/Systemd). Если это ваш случай - вам нужно выяснить, как создать скрипт инициализации для systemd или заменить его на sysv-init.Также см. [Этот вопрос] (http://stackoverflow.com/questions/28141116/debian-etc-init-d-script-not-running). –

+0

Я нашел решение, я написал службу в/lib/systemd для запуска моего файла a.out при включении, он отлично работает. В любом случае, спасибо за помощь Сэма –

ответ

8

Мне потребовалось некоторое время, чтобы понять это, но с большим количеством исследований я наконец нашел то, что искал.

  1. Скомпилируйте требуемый код.

  2. Создать Баш скрипт, который будет запускать код при загрузке/запуска

    cd /usr/bin/ 
    

    Тип nano scriptname.sh

    #!/bin/bash 
    /home/root/name_of_compiled_code 
    

    Сохранить и предоставить разрешение на выполнение

    chmod u+x /usr/bin/scriptname.sh 
    
  3. Создать службу

    nano /lib/systemd/scriptname.service 
    
  4. Редактировать указанный файл, если необходимо, для вызова различных функций, таких как сеть. Включите их, только если код нуждается в этом конкретном сервисе. Отключите нежелательные, чтобы уменьшить время загрузки.

    [Unit] 
    Description=description of code 
    After=syslog.target network.target 
    [Service] 
    Type=simple 
    ExecStart=/usr/bin/scriptname.sh 
    [Install] 
    WantedBy=multi-user.target 
    
  5. Создать символическую ссылку, чтобы позволить устройству знать местоположение службы.

    cd /etc/systemd/system/ 
    ln /lib/systemd/scriptname.service scriptname.service 
    
  6. Make Systemd загрузить файл конфигурации, запустите службу немедленно (помогает увидеть, если услуга функционирует нормально) и включить файлы единицы, указанные в командной строке.

    systemctl daemon-reload 
    systemctl start scriptname.service 
    systemctl enable scriptname.service 
    
  7. Немедленно перезапустите ВВВ, чтобы проверить, работает ли он по назначению.

    reboot 
    

(Все Заслуга http://mybeagleboneblackfindings.blogspot.com/2013/10/running-script-on-beaglebone-black-boot.html)

0

Я последовал за 7 шагов для создания службы, но это не работает для меня, то я ставлю мой shellscript команды для запуска моей программы, в /etc/rc.local, и это сработало.

#!/bin/sh -e 
# 
# rc.local 
# 
# This script is executed at the end of each multiuser runlevel. 
# Make sure that the script will "exit 0" on success or any other 
# value on error. 
# 
# In order to enable or disable this script just change the execution 
# bits. 
# 
# By default this script does nothing. 

cd /home/my_program_directory 
/home/my_program_directory/my_executable 

exit 0