|
|
  |
Автоматический запуск приложения при загрузке Linux |
|
|
|
Aug 18 2012, 17:35
|
Местный
  
Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205

|
Цитата что процесс app запускается и сразу завершается и так далее. Погодите, если приложение запускается и сразу выходит, то и в инит-скрипте оно тоже будет запускаться и сразу выходить. Я бы добавил в самое начало приложения что-то вроде fprintf(stderr, "Application %s started, %s %s\n", APP_NAME, __DATE__, __TIME__); Тогда будет видно в чем именно проблема, что приложение не запустилось, или оно запустилось, но работает не так как ожидалось.
|
|
|
|
|
Aug 18 2012, 21:12
|
Местный
  
Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182

|
Цитата(andrew_b @ Aug 17 2012, 14:59)  Абы какие скрипты в /etc/init.d класть нельзя. Они должны удовлетворять некоторому шаблону. Посмотрите, как устроен любой скрипт из этого каталога. Не правда. Иниту не важно что внутри скрипта, главное чтобы был исполняемым и шабанг (#!/bin/sh) присутствовал. start/stop и пр. - это удобства http://www.debian-administration.org/articles/28Бесконечный цикл в init-скрипте - плохая идея. Если просто из терминала приложение запускается и работает, а из инит-скрипта - нет, то смотрите в сторону окружения, может не хватает какой-то ещё программы ему, которая есть у юзера в PATH, но сама переменная PATH на момент запуска init не содержит нужного пути. Или библиотека какая Цитата(kurtis) Я бы добавил в самое начало приложения что-то вроде fprintf(stderr, "Application %s started, %s %s\n", APP_NAME, __DATE__, __TIME__); Тогда будет видно в чем именно проблема, что приложение не запустилось, или оно запустилось, но работает не так как ожидалось. Да, но что Вам дадут дата и время сборки приложения? Тогда уж Код time_t t = time(NULL); fprintf(stderr, "Application %s started %s\n", argv[0], ctime(&t));
--------------------
typedef enum { no, yes, maybe } bool; | блог тут
|
|
|
|
|
Aug 19 2012, 05:05
|
Местный
  
Группа: Участник
Сообщений: 217
Регистрация: 10-12-10
Из: Москва
Пользователь №: 61 528

|
Цитата Если просто из терминала приложение запускается и работает, а из инит-скрипта - нет, то смотрите в сторону окружения, может не хватает какой-то ещё программы ему, которая есть у юзера в PATH, но сама переменная PATH на момент запуска init не содержит нужного пути. Или библиотека какая В скриптах везде указывал абсотлютные пути для приложений. Приложение динамически слинковано. Попробую проверить насчет библиотек. Цитата Да, но что Вам дадут дата и время сборки приложения? Тогда уж Код time_t t = time(NULL); fprintf(stderr, "Application %s started %s\n", argv[0], ctime(&t)); Я не совсем понимаю , что дадут мне эти выводы на stderr. Приложение выводит на stdout, stderr в процессе работы. Вот где бы мне посмотреть этот вывод? В системных логах?
Сообщение отредактировал Kirill_Good - Aug 19 2012, 05:06
|
|
|
|
|
Aug 19 2012, 06:01
|
Местный
  
Группа: Участник
Сообщений: 217
Регистрация: 10-12-10
Из: Москва
Пользователь №: 61 528

|
Цитата(_Pasha @ Aug 19 2012, 09:44)  Код /home/root/app 2 > /home/report.txt Направить вывод куда надо. Делал так, файл пустой был. Правда вывода строки сразу после main не делал.
|
|
|
|
|
Aug 19 2012, 10:12
|
Местный
  
Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205

|
Цитата(Cosmojam @ Aug 19 2012, 00:12)  Да, но что Вам дадут дата и время сборки приложения? Тогда уж Для надежности. Если только что собрал приложение и записал его на устройство, а там время сборки вчера, то значит что-то где-то работает не так как ожидалось. Цитата(Kirill_Good @ Aug 19 2012, 08:05)  Я не совсем понимаю , что дадут мне эти выводы на stderr. Приложение выводит на stdout, stderr в процессе работы. Вот где бы мне посмотреть этот вывод? В системных логах? stderr не буферизирован, stdout буферизирован.
|
|
|
|
|
Oct 10 2013, 09:59
|

Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 30-09-13
Пользователь №: 78 537

|
Цитата(Kirill_Good @ Aug 17 2012, 11:55)  Добрый день!
Не могу заставить запускаться бинарник во время загрузки Linux. Добавил в папку /etc/init.d скрипт :
#!/bin/sh /home/root/app
Сделал на него ссылку в /etc/rc5.d S97launch_app. Система запускается с этим runlevel. Смотрю список процессов после старта его там нет. Запускаю вручную /etc/rc5.d/S97launch_app - работает. Потом поменял в init скрипте не запуск приложения, а запуск скрипта который запускает уже приложение в бесконечном цикле.
#!/bin/sh while true do /home/root/app sleep 1 done
После загрузки системы вижу в top, что процесс app запускается и сразу завершается и так далее. С приложением все нормально.
Поможет кто?
Спасибо! Добрый день, думаю вопрос решиться при помощи: этого
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|