Перейти к содержанию
    

Как сделать автозапуск скрипта при включении питания платы?

Добрый день!

 

Работаю с отладочной платой Altera DE1-SoC, и стоит задача сделать автозапуск приложения.

Я не силен в линуксе, и начал поиск в интернете. По данной теме, и нашел статью "Создание своего скрипта автозапуска при загрузке компьютера" http://help.ubuntu.ru/wiki/создание_скрипта_автозапуска

 

Там описано 4 способа, и пока не один не заработал, хотя при наборе команд в терменале ошибок нет.

 

1) первый способ делаю так

 

Создаю файл rc.local со следующим содержанием, где мой скрипт который нужно запустить run_appl.sh в каталоге etc.

#!/bin/sh -e

./run_appl.sh

exit 0

 

файл run_appl.sh следующего содержания:

#!/bin/bash

echo "Run application"

echo "Run application"

#chmod +x appl

#./appl

 

При перезагрузке текстового сообщения в терминале не вижу..(

 

2) делаю вторым способом

добавил свой скрипт в каталог /etc/init.d/run_appl.sh

update-rc.d run_appl.sh start 70 . stop 20 . (пробывал и с другими цифрами) - тоже не работает.

 

3) третий вариант разместить скрипт в директориях if-pre-up.d или if-up.d - тоже не заработало..

post-53301-1421746973_thumb.png

 

4) четвертый вариант в файле /etc/network/interfaces в конце добавил строку post-up /path/to/run_appl.sh

Но тут я не доконца понимаю найдет ли путь до моего файла ОС Linux или его нужно указать?

 

Может кто подскажет что я делаю не так? Может скрипт нужно в бинарный файл откомпилировать?

Изменено пользователем chirik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

А у Вас на отладочной плате Ubuntu установлена?

Пришлите содержимое вашего /etc/init.d

Добавьте содержимое вашего скрипта в какой нибудь уже рабочий из каталога /etc/init.d

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Создаю файл rc.local со следующим содержанием, где мой скрипт который нужно запустить run_appl.sh в каталоге etc.

#!/bin/sh -e

./run_appl.sh

exit 0

1) Первая строчка указывает, какой интерпретатор shell должен запустить скрипт. Вы уверены, что у вас есть файл /bin/sh ?

2) Нужно указывать полный путь до скрипта run_appl.sh, поскольку какой будет "текущий" каталог при запуске этого скрипта угадать не получится :rolleyes:

3) Все запускаемые скрипты должны иметь атрибут выполняемого файла (chmod +x ...).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А у Вас на отладочной плате Ubuntu установлена?

Пришлите содержимое вашего /etc/init.d

Добавьте содержимое вашего скрипта в какой нибудь уже рабочий из каталога /etc/init.d

 

 

При загрузке в терминал линукс пишет Yocto Project 1.3 - значит не Ubuntu стоит.

 

Как скопировать содержение всей папки init.d я пока не разобрался, поэтому могу выложить только принскрин содержания и при необходимости содержание нескольких файликов.

post-53301-1421756192_thumb.png

 

 

Сейчас попробую добавить в какой ни будь файл свой скрипт.

 

1) Первая строчка указывает, какой интерпретатор shell должен запустить скрипт. Вы уверены, что у вас есть файл /bin/sh ?

2) Нужно указывать полный путь до скрипта run_appl.sh, поскольку какой будет "текущий" каталог при запуске этого скрипта угадать не получится :rolleyes:

3) Все запускаемые скрипты должны иметь атрибут выполняемого файла (chmod +x ...).

 

1) Вы правы, я ошибся проверил командой whereis bash он находится в /bin/bash

2) А можно пример как указывается путь /folder/run_appl.sh так?

3) Те перед запуском скрипта мне нужно выполнить команду chmod +x run_appl.sh ?

 

исправил файл rc.local, при включении сообщения не вижу..(

#!/bin/bash

chmod +x /home/root/run_appl.sh

. /home/root/run_appl.sh

exit 0

Изменено пользователем chirik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) Вы правы, я ошибся проверил командой whereis bash он находится в /bin/bash

2) А можно пример как указывается путь /folder/run_appl.sh так?

3) Те перед запуском скрипта мне нужно выполнить команду chmod +x run_appl.sh ?

1) Ну вот и причина.

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

3) Да, но только один раз после создания файла в редакторе, а не каждый раз перед запуском.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) Ну вот и причина.

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

3) Да, но только один раз после создания файла в редакторе, а не каждый раз перед запуском.

 

Те так не нужно делать в файле rc.local?

 

chmod +x /home/root/run_appl.sh

. /home/root/run_appl.sh

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Те так не нужно делать в файле rc.local?

 

chmod +x /home/root/run_appl.sh

. /home/root/run_appl.sh

Конечно, не нужно. chmod +x /home/root/run_appl.sh делается один раз, из консоли, после того, как Вы создадите файл /home/root/run_appl.sh тем или иным способом, в текстовом редакторе, или путём копирования по FTP или с флэшки.

Далее этот файл хранит атрибут исполняемого, находясь в линуксовой файловой системе. Атрибуты файлов можно увидеть по консольной команде ls -l, если среди атрибутов есть x, то файл исполняемый (eXecutable).

При перемещении/копировании внутри линуксовых файловых систем атрибуты файлов сохраняются, но вот если будете его перемещать через флэшку (где FAT), через сеть или ещё как-то - атрибуты могут потеряться. Например, всё рухнет, если Вы скопируете всю корневую систему на флэшку FAT и потом перенесете её на другой линуксовый хост, сами файлы-то переместятся - но вот атрибуты потеряются, соответственно, скрипты перестанут запускаться, и даже "настоящие" исполняемые файлы ELF.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

В каталоге /home/root находится два моих файла appl - приложение которое нужно запустить, скрипт его запускающее run_appl.sh

вид run_appl.sh :

 

#!/bin/bash

echo "Run application"

echo "Run application" > /home/root/me.txt

#chmod +x . /home/root/appl

./home/root/appl

 

в каталоге /etc создан файл rc.local :

#!/bin/bash

. /home/root/run_appl.sh

exit 0

 

У меня такой вопрос, файл rc.local должен запускатся командой ./rc.local ?

На данную команду терминал выдает сообщении:

-sh: ./rc.local: /bin/bash^M: bad interpreter: No such file or directory

 

Если я правильно понимаю ему не нравится строчка в файле rc.local : #!/bin/bash ниже проверяю путь до bash:

root@socfpga:/etc# whereis bash

bash: /bin/bash

 

кто подскажет почему я получаю такой ответ?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

./home/root/appl

. /home/root/run_appl.sh

Начальные точки здесь не нужны!

Это абсолютные пути, а не относительные, точка в начале задает путь от текущего каталога.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

-sh: ./rc.local: /bin/bash^M: bad interpreter: No such file or directory

судя по символу M^ свой скрипт вы редактировали в виндовсе, и интерпретатору (вероятно) не нравится символ перевода каретки. Перевод строки в DOS и Windows это сочетание символов перевода строки и перевода каретки. в Unix только перевод строки. Отредактируйте свой скрипт по Unix правилам. Возможно после /bin/bash поможет поставленный пробел. Остальное вам уже ответили.

Изменено пользователем Fedor

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Заработало))

Сделал как в начале советовал Fedor, добавил строчку запуска (./home/root/appl) в файл portmap в каталоге init.d

ect/init.d/portmap

 

ps разобрался с символами каретки и точками заработало и вторым способом)

 

Всем спасибо за помощь и советы!

Изменено пользователем chirik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...