|
|
  |
Как сделать автозапуск скрипта при включении питания платы?, Altera DE1-SoC Board, Linux version 3.12.0-00307 |
|
|
|
Jan 20 2015, 09:49
|
Частый гость
 
Группа: Участник
Сообщений: 129
Регистрация: 29-10-09
Из: Карелии
Пользователь №: 53 301

|
Добрый день! Работаю с отладочной платой 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 - тоже не заработало..
4) четвертый вариант в файле /etc/network/interfaces в конце добавил строку post-up /path/to/run_appl.sh Но тут я не доконца понимаю найдет ли путь до моего файла ОС Linux или его нужно указать? Может кто подскажет что я делаю не так? Может скрипт нужно в бинарный файл откомпилировать?
Сообщение отредактировал chirik - Jan 20 2015, 12:56
|
|
|
|
|
Jan 20 2015, 10:20
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 26-10-05
Пользователь №: 10 125

|
А у Вас на отладочной плате Ubuntu установлена? Пришлите содержимое вашего /etc/init.d Добавьте содержимое вашего скрипта в какой нибудь уже рабочий из каталога /etc/init.d
|
|
|
|
|
Jan 20 2015, 10:53
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(chirik @ Jan 20 2015, 12:49)  Создаю файл rc.local со следующим содержанием, где мой скрипт который нужно запустить run_appl.sh в каталоге etc. #!/bin/sh -e ./run_appl.sh exit 0 1) Первая строчка указывает, какой интерпретатор shell должен запустить скрипт. Вы уверены, что у вас есть файл /bin/sh ? 2) Нужно указывать полный путь до скрипта run_appl.sh, поскольку какой будет "текущий" каталог при запуске этого скрипта угадать не получится 3) Все запускаемые скрипты должны иметь атрибут выполняемого файла (chmod +x ...).
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Jan 20 2015, 12:29
|
Частый гость
 
Группа: Участник
Сообщений: 129
Регистрация: 29-10-09
Из: Карелии
Пользователь №: 53 301

|
Цитата(Fedor @ Jan 20 2015, 13:20)  А у Вас на отладочной плате Ubuntu установлена? Пришлите содержимое вашего /etc/init.d Добавьте содержимое вашего скрипта в какой нибудь уже рабочий из каталога /etc/init.d При загрузке в терминал линукс пишет Yocto Project 1.3 - значит не Ubuntu стоит. Как скопировать содержение всей папки init.d я пока не разобрался, поэтому могу выложить только принскрин содержания и при необходимости содержание нескольких файликов.
Сейчас попробую добавить в какой ни будь файл свой скрипт. Цитата(gerber @ Jan 20 2015, 13:53)  1) Первая строчка указывает, какой интерпретатор shell должен запустить скрипт. Вы уверены, что у вас есть файл /bin/sh ? 2) Нужно указывать полный путь до скрипта run_appl.sh, поскольку какой будет "текущий" каталог при запуске этого скрипта угадать не получится 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 - Jan 20 2015, 13:09
|
|
|
|
|
Jan 20 2015, 12:51
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(chirik @ Jan 20 2015, 15:29)  1) Вы правы, я ошибся проверил командой whereis bash он находится в /bin/bash 2) А можно пример как указывается путь /folder/run_appl.sh так? 3) Те перед запуском скрипта мне нужно выполнить команду chmod +x run_appl.sh ? 1) Ну вот и причина. 2) Да, можно так для начала. В дальнейшем - посмотрите, как сконструированы другие скрипты в вашей системе, чтобы не писать каждый раз весь путь, который может быть длинный. 3) Да, но только один раз после создания файла в редакторе, а не каждый раз перед запуском.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Jan 20 2015, 13:01
|
Частый гость
 
Группа: Участник
Сообщений: 129
Регистрация: 29-10-09
Из: Карелии
Пользователь №: 53 301

|
Цитата(gerber @ Jan 20 2015, 15:51)  1) Ну вот и причина. 2) Да, можно так для начала. В дальнейшем - посмотрите, как сконструированы другие скрипты в вашей системе, чтобы не писать каждый раз весь путь, который может быть длинный. 3) Да, но только один раз после создания файла в редакторе, а не каждый раз перед запуском. Те так не нужно делать в файле rc.local? chmod +x /home/root/run_appl.sh. /home/root/run_appl.sh
|
|
|
|
|
Jan 20 2015, 15:06
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(chirik @ Jan 20 2015, 16:01)  Те так не нужно делать в файле 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.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Jan 21 2015, 13:02
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(chirik @ Jan 21 2015, 12:25)  ./home/root/appl . /home/root/run_appl.sh Начальные точки здесь не нужны!Это абсолютные пути, а не относительные, точка в начале задает путь от текущего каталога.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Jan 21 2015, 17:10
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 26-10-05
Пользователь №: 10 125

|
-sh: ./rc.local: /bin/bash^M: bad interpreter: No such file or directory судя по символу M^ свой скрипт вы редактировали в виндовсе, и интерпретатору (вероятно) не нравится символ перевода каретки. Перевод строки в DOS и Windows это сочетание символов перевода строки и перевода каретки. в Unix только перевод строки. Отредактируйте свой скрипт по Unix правилам. Возможно после /bin/bash поможет поставленный пробел. Остальное вам уже ответили.
Сообщение отредактировал Fedor - Jan 21 2015, 17:16
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|