Есть некий сценарий шелл на фряхе, он запускает 4 процесса в фоне ffmeg.
ssh root@192.168.10.30 -p 7777 sh /root/regic.sh &
Вся проблема, что он выполняется на миг, потом всё прерывается. Сценарий запускает 4 потока записи видео, тоже каждый в фоне. Из консоли через ssh соединение всё работает, но там обильный вывод ошибок и сообщений(что никак не влияет на работоспособность). Я пробовал завернуть вывод в нуль-эфекта нуль. Я не знаю, что делать. Приказывал в скрине работать-нет результата. ЧЯДНТ и как можно запустить скрипт удалённо, чтоб он норм выполнялся, как при коннекте ssh?
При этом процесс появляется на мгновение на фряхе и тут же прекращается
Разве ожидалось что-либо иное? 1) 'sh /root/regic.sh &' ушёл в фон, управление вернулось в ssh 2) ssh видит, что ему больше исполнять нечего, завершается 3) закрывается псевдотерминал, всем его дочерним процессам рассылается SIGHUP 4) sh regic.sh получив SIGHUP, завершается.
В линуксах: а) для отвязки от терминала см. disown, б) для фильтрации SIGHUP см. nohup, в) для живого сеанса после отключения см. screen, tmux и т.п.
Приказывал в скрине работать-нет результата. ЧЯДНТ
Со screen логика такая: 1) ssh к удаленной машине 2) запуск screen 3) запуск задачи 4) отключение (detach) от screen 5) завершение ssh
Если нужно помониторить вывод задачи: 1) ssh к удаленной машине 2) запуск screen -R (или -r сеанс, если их несколько) 3) ... наблюдение ... 4) отключение от screen 5) завершение ssh
Вобщем пока выкрутился. Так: не скрипт по ссш вызываю, а саму команду потока записи, все 4 штуки, и они выполняются в фоне нормально.
Но у меня к тебе вопрос, друг. Ты всегда даёшь такие полные и исчерпывающие ответы, что я хочу поинтересоваться, как тебе это удалось? По каким методикам ты учился?
В данном конкретном случае это «man bash», в особенности раздел Signals. Варианты с фильтрацией sighup либо незакрытым сеанса (screen, tmux) — обычная логика.
Есть ещё вариант с setsid — процесс будет запущен в новом сеансе и не будет получать сигналов от породившего его терминала.
Вдумчивая чтение поможет ;) Если попадётся что-то с системным изложением концепций и внутреннего устройства — повезёт, знание нескольких общих принципов избавляет от необходимости помнить множество частных решений.
Решение я нашёл. описанными здесь методами решить не смог, симптомы сохранялись, скриптом передать однократно включение видеорегистратора на фряхе не получалось. Но, включил логику и зашло.
Я сваял скриптец, читающий файл, где либо 0 либо 1. По результатам изменения либо запись начинается, либо прекращается. А скриптом я всего навсего пишу в файл либо 1 либо 0. УМВР.