Запустите программу с экраном GNU и сразу отсоедините

Для определения проблемы может быть достаточно переопределения локалей и реконфигурации:

sudo locale-gen en_AU.UTF-8
sudo dpkg-reconfigure locales

Когда вы запустите sudo dpkg-reconfigure locales, вы можете выбрать нужный вам язык, нажав на пробел и двигаясь с ↑ и ↓ до нажмите Enter.

24
задан 23 September 2011 в 20:33

8 ответов

Вы действительно хотели положить \ в конец строки? Если это не так, попробуйте удалить их - они уберут следующий символ.

также, отбрасывая -X, помогает мне настроить работу, например:

screen -S test -d -m -X touch /tmp/test

терпит неудачу с [ f7], однако:

screen -S test -d -m touch /tmp/test

работает нормально. Как я подозреваю, для вас будет работать следующее:

#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program
screen -S test2 -d -m $HOME/folder/folder/.program2

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

#!/bin/bash
screen -S test -d -m su - username /home/username/folder/folder/.program
screen -S test2 -d -m su - username /home/username/folder/folder/.program2

Или , вы бы назвали весь скрипт выше как su - username /path/to/your/script.

30
ответ дан 25 May 2018 в 18:41
  • 1
    Спасибо за ответы, но теперь я столкнулся с другой проблемой. Скрипт перестает работать после того, как я поместил некоторые переменные для моей «программы и программы 2». – TbMa 23 September 2011 в 20:30
  • 2
    Это: screen -S test -d -m $HOME/folder/folder/.program почти делает то, что я ищу , за исключением того, что если папка / .program закончена, сеанс экрана автоматически закрывается. Есть ли способ сохранить сеанс экрана (shell) даже после завершения программы? Возможно, вместо того, чтобы запускать программу исключительно, запустите оболочку, которая запустит программу, а затем вернется в приглашение оболочки или что-то еще? – RocketNuts 4 December 2017 в 20:28

Вы действительно хотели положить \ в конец строки? Если нет, попробуйте удалить их - они уберут следующий символ.

также, отбрасывая -X, помогает мне настроить работу, например:

screen -S test -d -m -X touch /tmp/test

терпит неудачу с No screen session found, однако:

screen -S test -d -m touch /tmp/test

работает нормально. Как я подозреваю, для вас будет работать следующее:

#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program
screen -S test2 -d -m $HOME/folder/folder/.program2

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

#!/bin/bash
screen -S test -d -m su - username /home/username/folder/folder/.program
screen -S test2 -d -m su - username /home/username/folder/folder/.program2

Или , вы бы назвали весь скрипт выше как su - username /path/to/your/script.

32
ответ дан 31 July 2018 в 11:37

Вы действительно хотели положить \ в конец строки? Если нет, попробуйте удалить их - они уберут следующий символ.

также, отбрасывая -X, помогает мне настроить работу, например:

screen -S test -d -m -X touch /tmp/test

терпит неудачу с No screen session found, однако:

screen -S test -d -m touch /tmp/test

работает нормально. Как я подозреваю, для вас будет работать следующее:

#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program
screen -S test2 -d -m $HOME/folder/folder/.program2

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

#!/bin/bash
screen -S test -d -m su - username /home/username/folder/folder/.program
screen -S test2 -d -m su - username /home/username/folder/folder/.program2

Или , вы бы назвали весь скрипт выше как su - username /path/to/your/script.

32
ответ дан 4 August 2018 в 18:47

Вы действительно хотели положить \ в конец строки? Если нет, попробуйте удалить их - они уберут следующий символ.

также, отбрасывая -X, помогает мне настроить работу, например:

screen -S test -d -m -X touch /tmp/test

терпит неудачу с No screen session found, однако:

screen -S test -d -m touch /tmp/test

работает нормально. Как я подозреваю, для вас будет работать следующее:

#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program
screen -S test2 -d -m $HOME/folder/folder/.program2

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

#!/bin/bash
screen -S test -d -m su - username /home/username/folder/folder/.program
screen -S test2 -d -m su - username /home/username/folder/folder/.program2

Или , вы бы назвали весь скрипт выше как su - username /path/to/your/script.

32
ответ дан 7 August 2018 в 20:52

Как упоминалось в Cry Havok, вы можете поместить программу прямо в командной строке.

Если вы действительно должны использовать опцию -X, то a) вам нужно указать команду «screen» и b) сессия должна существовать заранее.

screen -dmS test
screen -S test -X screen $HOME/folder/folder/.program
screen -dmS test2
screen -S test2 -X screen $HOME/folder/folder/.program2
4
ответ дан 25 May 2018 в 18:41
  • 1
    Если вы поместите программу в командной строке, экран выйдет, когда программа выйдет; Я не вижу флаг командной строки, чтобы открыть экран, если вы хотите увидеть вывод консоли. Если вы запустите экран и отправьте команды отдельно, как показано здесь, вам могут потребоваться явные команды sleep, чтобы дать экранное время для начала сеанса перед отправкой команды. – Chinasaur 15 December 2014 в 22:09
  • 2
    Этот ответ очень похож на ответ stackoverflow.com , который отвечает на аналогичный вопрос . Я предпочитаю этот ответ больше, чем @CryHavok, потому что этот ответ выполняет вашу программу внутри оболочки вашего пользователя по умолчанию (@CryHavok запускает вашу программу без родительской оболочки, поэтому, когда программа умирает или вы ctrl-c, сеанс экрана немедленно прекращается) – Trevor Boyd Smith 13 April 2016 в 18:01

Как упоминалось в Cry Havok, вы можете поместить программу прямо в командной строке.

Если вы действительно должны использовать параметр -X, то: a) вам нужно указать команду «screen» и b) сессия должна существовать заранее.

screen -dmS test
screen -S test -X screen $HOME/folder/folder/.program
screen -dmS test2
screen -S test2 -X screen $HOME/folder/folder/.program2
4
ответ дан 31 July 2018 в 10:34

Как упоминалось в Cry Havok, вы можете поместить программу прямо в командной строке.

Если вы действительно должны использовать параметр -X, то: a) вам нужно указать команду «screen» и b) сессия должна существовать заранее.

screen -dmS test
screen -S test -X screen $HOME/folder/folder/.program
screen -dmS test2
screen -S test2 -X screen $HOME/folder/folder/.program2
4
ответ дан 2 August 2018 в 02:57

Как упоминалось в Cry Havok, вы можете поместить программу прямо в командной строке.

Если вы действительно должны использовать параметр -X, то: a) вам нужно указать команду «screen» и b) сессия должна существовать заранее.

screen -dmS test
screen -S test -X screen $HOME/folder/folder/.program
screen -dmS test2
screen -S test2 -X screen $HOME/folder/folder/.program2
4
ответ дан 13 August 2018 в 12:37

Другие вопросы по тегам:

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