LINUX.ORG.RU

Добавить в init.d в OpenWRT

 


0

1

Добрый день. Мне дали программу, не знаю на чем написано, но ее следует запускать простой командой:

./prog -d

Объясните, как запуск этой программы можно добавить в etc/init.d/myprog, чтобы ее можно было запустить и остановить через - service myprog start\stop.

ЗЫ. Ссаными тряпками не кидайтесь, не все же шарят в теме :)


Для этого программа должна быть написана в соответствии с правилами написания sysv демонов. Подробнее см., например, https://habr.com/ru/post/129207/. Если это так, то создать для неё соответствующий скрипт в /etc/init.d несложно. См., например, http://integrator.adior.ru/index.php/linux-command/481-init-d. Но программу необязательно запускать в виде демона. Если нужно отвязать её от терминала (по сути тот же демон), то см. man nohup.

aureliano15 ★★
()
Ответ на: комментарий от Shadow

Спасибо, теперь мы научились запускать, а как сие дело теперь тормознуть?)) Тупо вбил service myprog stop и у меня ребутнулся весь роутер )))

Tavols
() автор топика
Ответ на: комментарий от Tavols

теперь мы научились запускать

service myprog stop и у меня ребутнулся весь роутер

Значит плохо научились.

// Статейка по ссылке так себе, но лучше ничего предложить не могу.

Ну и да, всё это гадание по кофейной гуще. Где написанный service-файл? Где логи?

mord0d ★★★★★
()

Ссаными тряпками не кидайтесь

Тогда ты форумом ошибся. (%
На ЛОРе тебя будут пытаться убедить что твой инструмент говно, твой подход говно и сам ты говно вообще всё менять надо, начиная с ориентации. Но среди нас есть адекватные, так что терпи лишения и жди ответа.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Вот такой простой накидал:

#!/bin/sh /etc/rc.common
USE_PROCD=1
START=98
STOP=1

start_service() {
	procd_open_instance myprog
	procd_set_param command /mnt/sda2/myprog/myprog
	procd_set_param file /mnt/sda2/myprog/myprog.cfg 
	procd_set_param pidfile /var/run/8989.pid 
         procd_close_instance
}
reload_service()
{
        echo "Explicitly restarting service, are you sure you need this?"
        stop
        start
}
В первом варианте я вообще тупо скопировал с ссылки:
#!/bin/sh /etc/rc.common
USE_PROCD=1
START=98
STOP=1

start_service() {
	procd_open_instance
	procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5}
	procd_set_param command /mnt/sda2/myprog/myprog
	procd_set_param stdout 1 # forward stdout of the command to logd
	procd_set_param stderr 1 # same for stderr
	procd_close_instance
}
запускается норм, а вот остановки приводят к перезагрузке роутера.

Tavols
() автор топика
Последнее исправление: Tavols (всего исправлений: 1)
Ответ на: комментарий от Tavols

STOP=1

Для начала убери это. Не знаю что это, но никогда не видел чтобы оно было 1.

mord0d ★★★★★
()

Для запуска при старте системы добавляешь в /etc/rc.local Для остановки killall prog Если хочешь чтобы всё было красиво куришь вики https://openwrt.org/docs/techref/initscripts

anonymous
()
Ответ на: комментарий от mord0d

На ЛОРе тебя будут пытаться убедить что твой инструмент говно, твой подход говно и сам ты говно вообще всё менять надо, начиная с ориентации. Но среди нас есть адекватные, так что терпи лишения и жди ответа.

Я в курсе)) Поэтому такую речь и загнул т.к. больше спросить негде было:). Все допетрил и написал, спасибо всем!)

Tavols
() автор топика
Последнее исправление: Tavols (всего исправлений: 1)
Ответ на: комментарий от Tavols

обычно рядом и стоп скрипты валяются и конфиг или просто комментированием в главном скрипте, вообще вся встройка подобного рода имеет довольно примитивные варианты инициализации.

anonymous
()
Ответ на: комментарий от Tavols

и написал

Решение-то показывай. А то тема решена, но без решения. Вот будет кто-то (да хоть даже ты лет через пять) искать решение, найдёт эту решённую тему и… не найдёт решения. ☺

mord0d ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.