chirik8807 0 20 января, 2015 Опубликовано 20 января, 2015 (изменено) · Жалоба Добрый день! Работаю с отладочной платой 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 или его нужно указать? Может кто подскажет что я делаю не так? Может скрипт нужно в бинарный файл откомпилировать? Изменено 20 января, 2015 пользователем chirik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fedor 0 20 января, 2015 Опубликовано 20 января, 2015 · Жалоба А у Вас на отладочной плате Ubuntu установлена? Пришлите содержимое вашего /etc/init.d Добавьте содержимое вашего скрипта в какой нибудь уже рабочий из каталога /etc/init.d Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 7 20 января, 2015 Опубликовано 20 января, 2015 · Жалоба Создаю файл 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 ...). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chirik8807 0 20 января, 2015 Опубликовано 20 января, 2015 (изменено) · Жалоба А у Вас на отладочной плате Ubuntu установлена? Пришлите содержимое вашего /etc/init.d Добавьте содержимое вашего скрипта в какой нибудь уже рабочий из каталога /etc/init.d При загрузке в терминал линукс пишет Yocto Project 1.3 - значит не Ubuntu стоит. Как скопировать содержение всей папки init.d я пока не разобрался, поэтому могу выложить только принскрин содержания и при необходимости содержание нескольких файликов. Сейчас попробую добавить в какой ни будь файл свой скрипт. 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 Изменено 20 января, 2015 пользователем chirik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 7 20 января, 2015 Опубликовано 20 января, 2015 · Жалоба 1) Вы правы, я ошибся проверил командой whereis bash он находится в /bin/bash 2) А можно пример как указывается путь /folder/run_appl.sh так? 3) Те перед запуском скрипта мне нужно выполнить команду chmod +x run_appl.sh ? 1) Ну вот и причина. 2) Да, можно так для начала. В дальнейшем - посмотрите, как сконструированы другие скрипты в вашей системе, чтобы не писать каждый раз весь путь, который может быть длинный. 3) Да, но только один раз после создания файла в редакторе, а не каждый раз перед запуском. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chirik8807 0 20 января, 2015 Опубликовано 20 января, 2015 · Жалоба 1) Ну вот и причина. 2) Да, можно так для начала. В дальнейшем - посмотрите, как сконструированы другие скрипты в вашей системе, чтобы не писать каждый раз весь путь, который может быть длинный. 3) Да, но только один раз после создания файла в редакторе, а не каждый раз перед запуском. Те так не нужно делать в файле rc.local? chmod +x /home/root/run_appl.sh . /home/root/run_appl.sh Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 7 20 января, 2015 Опубликовано 20 января, 2015 · Жалоба Те так не нужно делать в файле 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chirik8807 0 21 января, 2015 Опубликовано 21 января, 2015 · Жалоба Автозапуск так и не работает... В каталоге /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 кто подскажет почему я получаю такой ответ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 7 21 января, 2015 Опубликовано 21 января, 2015 · Жалоба ./home/root/appl . /home/root/run_appl.sh Начальные точки здесь не нужны! Это абсолютные пути, а не относительные, точка в начале задает путь от текущего каталога. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fedor 0 21 января, 2015 Опубликовано 21 января, 2015 (изменено) · Жалоба -sh: ./rc.local: /bin/bash^M: bad interpreter: No such file or directory судя по символу M^ свой скрипт вы редактировали в виндовсе, и интерпретатору (вероятно) не нравится символ перевода каретки. Перевод строки в DOS и Windows это сочетание символов перевода строки и перевода каретки. в Unix только перевод строки. Отредактируйте свой скрипт по Unix правилам. Возможно после /bin/bash поможет поставленный пробел. Остальное вам уже ответили. Изменено 21 января, 2015 пользователем Fedor Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
chirik8807 0 22 января, 2015 Опубликовано 22 января, 2015 (изменено) · Жалоба Заработало)) Сделал как в начале советовал Fedor, добавил строчку запуска (./home/root/appl) в файл portmap в каталоге init.d ect/init.d/portmap ps разобрался с символами каретки и точками заработало и вторым способом) Всем спасибо за помощь и советы! Изменено 22 января, 2015 пользователем chirik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться