реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как сделать автозапуск скрипта при включении питания платы?, Altera DE1-SoC Board, Linux version 3.12.0-00307
chirik
сообщение Jan 20 2015, 09:49
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Fedor
сообщение Jan 20 2015, 10:20
Сообщение #2


Участник
*

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




А у Вас на отладочной плате Ubuntu установлена?
Пришлите содержимое вашего /etc/init.d
Добавьте содержимое вашего скрипта в какой нибудь уже рабочий из каталога /etc/init.d
Go to the top of the page
 
+Quote Post
gerber
сообщение Jan 20 2015, 10:53
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 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, поскольку какой будет "текущий" каталог при запуске этого скрипта угадать не получится rolleyes.gif
3) Все запускаемые скрипты должны иметь атрибут выполняемого файла (chmod +x ...).


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
chirik
сообщение Jan 20 2015, 12:29
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 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, поскольку какой будет "текущий" каталог при запуске этого скрипта угадать не получится rolleyes.gif
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
Go to the top of the page
 
+Quote Post
gerber
сообщение Jan 20 2015, 12:51
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 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) Да, но только один раз после создания файла в редакторе, а не каждый раз перед запуском.


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
chirik
сообщение Jan 20 2015, 13:01
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
gerber
сообщение Jan 20 2015, 15:06
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 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.


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
chirik
сообщение Jan 21 2015, 09:25
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 129
Регистрация: 29-10-09
Из: Карелии
Пользователь №: 53 301



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

В каталоге /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

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

Go to the top of the page
 
+Quote Post
gerber
сообщение Jan 21 2015, 13:02
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(chirik @ Jan 21 2015, 12:25) *
./home/root/appl
. /home/root/run_appl.sh

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


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
Fedor
сообщение Jan 21 2015, 17:10
Сообщение #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
Go to the top of the page
 
+Quote Post
chirik
сообщение Jan 22 2015, 05:33
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 129
Регистрация: 29-10-09
Из: Карелии
Пользователь №: 53 301



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

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

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

Сообщение отредактировал chirik - Jan 22 2015, 06:21
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 21:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01482 секунд с 7
ELECTRONIX ©2004-2016