Создайте экран и команду выполнения без присоединения

Я выполняю Debian с программным обеспечением RAID1 и LVM как XEN dom0 без любых проблем в течение некоторого времени теперь. Установка нового domU's не могла быть легче с xen-инструментами, и плоскость "xm" дает мне все питание управления, в котором я нуждаюсь. На основе моего опыта я предлагаю, чтобы Вы сэкономили некоторые деньги и пошли набег программного обеспечения + Ваш предпочтительный дистрибутив Linux.

Что касается набега SW по сравнению с набегом HW, уже существует большое обсуждение serverfault: RAID - программное обеспечение по сравнению с оборудование

28
задан 8 November 2017 в 10:48
6 ответов

Я думаю, что можно сталкиваться с несколькими проблемами.

Если команда закончится, прежде чем Вы повторно прикрепите, экран уйдет. Можно продемонстрировать это при помощи:

screen -d -m ls -l

Это будет работать ls -l команда, но screen -list не покажет его, когда экранный процесс закончился.

Я также понятия не имею, что Вы пытаетесь сделать с этими \015 материалами. Возможно, обновление Вашего вопроса помогло бы, как, что я думаю, что Вы пытаетесь сделать, выполняется несколько команд на экранной сессии. Это должно быть столь же просто как:

screen -d -m bash -c "command1 ; command2 ; command3"

Если они используются много, возможно, необходимо сделать сценарий оболочки, который выполняет просто эти команды, то используйте более простое:

screen -d -m /path/to/script.sh
17
ответ дан 28 November 2019 в 20:03

Запустите отдельный экран

screen -dmS <screen name>

Выполните команду на ранее созданном отдельном экране

screen -S <screen name> -X stuff '<CMD>\n'

Да необходимо ввести ввести символ для представления команды, или иначе это просто добавит строку к экрану.

http://osdir.com/ml/gnu.screen/2003-09/msg00029.html

8
ответ дан 28 November 2019 в 20:03

Я сталкивался с этой проблемой раньше, это была ошибка в реализации cygwin.

Я создал «.screenrc_detaching», содержащий только следующую команду

#detach
detach 

, а затем начальный экран с

screen -c ~/loginScripts/tempScreenrc/.screenrc_detaching

Затем у вас есть сеанс экрана, который уже подключен и отсоединен, и вы можете перекачивать на него команды.

Легко! : P

2
ответ дан 28 November 2019 в 20:03

Это сработало для меня, без -c не работал

экран -d -m bash -c "command1; command2; command3"

2
ответ дан 28 November 2019 в 20:03

Копировать и вставлять предыдущие ответы можно следующим образом:

 # No sessions:
screen -ls

 # Returns immediately:
time screen -dmS screen_descritive_session_name  bash -c 'sleep 20; hostname >> /tmp/h'

 # New session present:
screen -ls

 # File with return of command was created :)
sleep 20; cat /tmp/h

Ожидаемый результат должен быть похож на:

No Sockets found in /var/run/screen/S-yourusernamehere.

(это означает, что сеанс экрана ранее не создавался)

real    0m0.002s
user    0m0.000s
sys     0m0.000s

(Это время, затрачиваемое на создание экрана и отсоединение от него. Почти мгновенно.)

There is a screen on:
    20318.screen_descritive_session_name    (20/08/2018 16:29:35)   (Detached)
1 Socket in /var/run/screen/S-yourusernamehere.

(Этот вывод показывает доступные сеансы экрана. Создано последней командой.)

sleep 20; cat /tmp/h

(Этот cat показывает имя хоста выполняется внутри gnu-screen)

1
ответ дан 28 November 2019 в 20:03
screen -S test -d -m -- sh -c 'ls; exec $SHELL'
0
ответ дан 28 November 2019 в 20:03

Теги

Похожие вопросы