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

Я пытаюсь выяснить, как написать сценарий, который запускал бы программы в сеансах экрана GNU при загрузке системы. Я пытаюсь это:

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

, но команда не может быть выполнена, потому что сеанс уже отключен? Единственное, что мне нужно, это запустить команду в сеансе экрана и немедленно отключить эту сессию.

Спасибо за ответы, но теперь я столкнулся с другой проблемой. Скрипт перестает работать после того, как я поставил некоторые переменные для моей «программы и программы2». Примерно так:

#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program -f config.cfg

по какой-то причине "-f config.cfg" был проигнорирован. Я также пытался процитировать команду и тоже не помогает.

26
задан 23 September 2011 в 19:33

2 ответа

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

также, удаление -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.

0
ответ дан 23 September 2011 в 19:33

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

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

screen -dmS test
screen -S test -X screen $HOME/folder/folder/.program
screen -dmS test2
screen -S test2 -X screen $HOME/folder/folder/.program2
0
ответ дан 23 September 2011 в 19:33

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

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