LINUX.ORG.RU
решено ФорумAdmin

С сервера под дебианом передаю по ssh скрипт на freebsd на исполнение, а он не тут же завершается.

 , ,


1

1

Есть некий сценарий шелл на фряхе, он запускает 4 процесса в фоне ffmeg.

ssh root@192.168.10.30 -p 7777 sh /root/regic.sh &
Вся проблема, что он выполняется на миг, потом всё прерывается. Сценарий запускает 4 потока записи видео, тоже каждый в фоне. Из консоли через ssh соединение всё работает, но там обильный вывод ошибок и сообщений(что никак не влияет на работоспособность). Я пробовал завернуть вывод в нуль-эфекта нуль. Я не знаю, что делать. Приказывал в скрине работать-нет результата. ЧЯДНТ и как можно запустить скрипт удалённо, чтоб он норм выполнялся, как при коннекте ssh?

★★★★★

Хоть ты и думаешь, что тут телепаты умеют все решать без логов и скриптов, но всё-таки спрошу. Ты понимаешь как работает & в том, что ты тут написал?

surefire ★★★
()

Логи бы показал чтоль.
Да и амперсанд ты не там указываешь, мне так кажется.

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

А логов никаких не сыплется. Да и скрипт обычная запись потока ffmpeg-ом.

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

Вывод такой:

bur@orangepipcplus:/var/www# ssh root@192.168.10.30 -p 7777 'sh /root/regic.sh &'
[1] 26930
При этом процесс появляется на мгновение на фряхе и тут же прекращается (смотрю через htop)

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

Вот видишь как оно получается, обливать говном systemd много ума не надо, а написать вместо юнита свои костыли, не так то и просто.

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

disown еще попробуй добавить, или как там на «этой вашей фряхе» ;)

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

На системдэ я вообще автозагрузку не могу понять, как делать, а на фряхе с инитди легко въехал, так что не надо.

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

При этом процесс появляется на мгновение на фряхе и тут же прекращается

Разве ожидалось что-либо иное?
1) 'sh /root/regic.sh &' ушёл в фон, управление вернулось в ssh
2) ssh видит, что ему больше исполнять нечего, завершается
3) закрывается псевдотерминал, всем его дочерним процессам рассылается SIGHUP
4) sh regic.sh получив SIGHUP, завершается.

В линуксах:
а) для отвязки от терминала см. disown,
б) для фильтрации SIGHUP см. nohup,
в) для живого сеанса после отключения см. screen, tmux и т.п.

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

Исчерпывающе... Абонемент на бесконечный чай!

burato ★★★★★
() автор топика

Приказывал в скрине работать-нет результата. ЧЯДНТ

Со screen логика такая:
1) ssh к удаленной машине
2) запуск screen
3) запуск задачи
4) отключение (detach) от screen
5) завершение ssh

Если нужно помониторить вывод задачи:
1) ssh к удаленной машине
2) запуск screen -R (или -r сеанс, если их несколько)
3) ... наблюдение ...
4) отключение от screen
5) завершение ssh

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

Вобщем пока выкрутился. Так: не скрипт по ссш вызываю, а саму команду потока записи, все 4 штуки, и они выполняются в фоне нормально.

Но у меня к тебе вопрос, друг. Ты всегда даёшь такие полные и исчерпывающие ответы, что я хочу поинтересоваться, как тебе это удалось? По каким методикам ты учился?

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

Могу разве что посоветовать найти работу, где придется заниматься линуксами побольше, чем ты занимаешься сейчас. Например, какой-нибудь хостинг.

Deleted
()
Ответ на: комментарий от burato

В данном конкретном случае это «man bash», в особенности раздел Signals. Варианты с фильтрацией sighup либо незакрытым сеанса (screen, tmux) — обычная логика.

Есть ещё вариант с setsid — процесс будет запущен в новом сеансе и не будет получать сигналов от породившего его терминала.

Вдумчивая чтение поможет ;) Если попадётся что-то с системным изложением концепций и внутреннего устройства — повезёт, знание нескольких общих принципов избавляет от необходимости помнить множество частных решений.

bormant ★★★★★
()

Решение я нашёл. описанными здесь методами решить не смог, симптомы сохранялись, скриптом передать однократно включение видеорегистратора на фряхе не получалось. Но, включил логику и зашло.

Я сваял скриптец, читающий файл, где либо 0 либо 1. По результатам изменения либо запись начинается, либо прекращается. А скриптом я всего навсего пишу в файл либо 1 либо 0. УМВР.

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