aivs |
|
Темы:
62
Сообщения:
261
Участник с: 31 октября 2006
|
Провел анализ трех файлов 1) локально выполнил скрипт (успешно) 2) залогинился по ssh и выполнил скрипт ssh [email protected] $ /home/xbmc/change_to_desktop.sh 3) дал команду по ssh ssh [email protected] /home/xbmc/change_to desktop.sh 1 и 2 содержат почти одинковый набор переменных ( за исключением PPID, приглашение системы, и SSH_CLIENT='192.168.1.101 47162 22' SSH_CONNECTION='192.168.1.101 47162 192.168.1.100 22' SSH_TTY=/dev/pts/0) А вот 3 вариант, который меня и интересует имеет много отличий, скриншот прилагаю. Все что выше EUID=1000 одинаково, потому и не показал. А теперь главный вопрос, где прописать, чтобы программа по ssh выполнялась в стандартном окружении переменных, как будто я залогинился по ssh и выполнил команду??? PS. Пробовал запускать и так ssh [email protected] “/bin/bash /home/xbmc/change_to_desktop.sh”, но результат все тот же. |
aivs |
|
Темы:
62
Сообщения:
261
Участник с: 31 октября 2006
|
Убрал в скрипте & $ cat change_to_video.sh #!/bin/bash F=/tmp/.X2-lock && read P < $F if then sudo chvt 9 else xinit /home/xbmc/start_video.sh – :2 vt9 & fi И скрипт стал выполняться удаленно, но меня это не устраивает, т.к. весь вывод передается на мою консоль, а мне с нее нужно опять этот скрипт запускать, чтобы он выполнял уже другие действия. |
aivs |
|
Темы:
62
Сообщения:
261
Участник с: 31 октября 2006
|
В принципе если запускать вот такой командой в бэкграунде, то консоль после этого свободнаssh [email protected] /home/xbmc/change_to_desktop.sh & [[email protected] ~]$ cat change_to_desktop.sh #!/bin/bash set|sort > ~/env_list.sshexec_bash F=/tmp/.X1-lock [ -f $F ] && read P < $F if [ -n "$P" -a -d "/proc/$P" ] then sudo chvt 8 else xinit /usr/bin/enlightenment_start -- :1 vt8 fi насколько правильно что else xinit /usr/bin/enlightenment_start – :1 vt8 будет запущен не в бэкграунде ??? Если это нормальное поведение то по запуску моего скрипта все решено. Но открытый вопрос как исполнить команду по ssh в стандартной среде переменных, а не в урезанной версии. |
pztrn |
|
Темы:
23
Сообщения:
1436
Участник с: 20 сентября 2009
|
Заэкспортировать? |
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
Вот с такой строчкой в скрипте оно работает: setsid xinit /usr/bin/enlightenment_start -- :1 vt8 &> /dev/null < /dev/null & Так что дело не в переменных, а именно в том, что некоторые программы не переносят, когда “под ними” закрывается терминал. В данном случае программа изначально запускается без терминала. В процессе проверки столкнулся с тем, что enlightenment через некоторое время виснет, но подозреваю, что это уже его проблемы. |
aivs |
|
Темы:
62
Сообщения:
261
Участник с: 31 октября 2006
|
Если я сделал, что работает без &, нужен ли он тогда вообще ??? |
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
Как хотите :) Просто в вашем варианте оно работает, пока активен процесс ssh на вызывавшей машине и есть связь с ней по сети. Обрыв/выключение/завершение процесса у вас – и рано или поздно (зависит от величины таймаута) терминал на удалённой машине умрёт, а с ним и enlightenment. |
aivs |
|
Темы:
62
Сообщения:
261
Участник с: 31 октября 2006
|
Не, такой расклад меня не устраивает, обрыв будет в любом случае. setsid позволяет запустить программу без привязки к терминалу Что плохого в этом методе? Должнали вообще команда по ssh выполняться на каком то терминале? И каким образом по ssh выполнить команду именно на 1 виртуальном терминале ? |
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
Ну, я уже ответил на предыдущей странице, как это сделать. setsid команда &> /dev/null < /dev/null & |
aivs |
|
Темы:
62
Сообщения:
261
Участник с: 31 октября 2006
|
Спасибо, уже использую, e17 падает не зависимо от того как его запускает |