Почему экран ничего по-видимому не делает с командами, переданными с-X?

Можно использовать && и || операторы к цепочечным командам вместе. Например:

apt-get update && sleep 2 && init 0

который выполнит обновление системы с помощью способности, ожидать 2 секунды и перейти к runlevel 0, в зависимости от системы, это может или не может на самом деле выключить аппаратные средства.

Для разговора с одной или несколькими операциями после более произвольной операции, такими как a, по-видимому, веб-браузер, загрузите Вас, потребовал бы, чтобы дополнительная логика наблюдала файл загрузки, чтобы проверить, что загрузка на самом деле завершилась, однако, логика оболочки неизменна.

7
14.01.2011, 12:01
2 ответа

Необходимо дать параметр -X a screen команда, я думаю, что Вы хотите "наполнить" команду сервера Minecraft к screen сессия.

screen -r minecraft -p 0 -X stuff "stop $(printf '\r')"

printf отправьте возврат каретки, таким образом, команда "остановка" выполняется. -p 0 удостоверяется, что символы отправляются в начальное окно Screen.

Для отправки его ssh у Вас есть к корпусу команда в " " (Вы могли также использовать ` `, но это не позволило бы Вам сделать замену команды).

ssh -t -i ~/.ssh/id_dsa server_user@server_address "screen -r minecraft -X stuff "even other_server_name is getting in on the action\! $(echo -ne '\r')""

Остерегайтесь этого ! зарезервированное слово, необходимо выйти из него.

Также возможно включать сгенерированную новую строку пользователя в команду для выполнения его:

ssh -t -i ~/.ssh/id_dsa server_user@server_address "screen -r minecraft -X stuff 'even other_server_name is getting in on the action!
'"

Выход ! не необходимо здесь.

6
27.01.2020, 20:18
  • 1
    , Который работает отлично, но конечно теперь я, может казаться, не выполняю это через ssh / командная строка ssh -t -i ~/.ssh/id_dsa server_user@server_address screen -r minecraft -X stuff "even other_server_name is getting in on the action! $(echo -ne '\r')" Я действительно не хорош с Unix, к сожалению:/ –  Sukasa 14.01.2011, 12:39

Когда мы обнаружили в этом подобном вопросе, экран имеет проблемы с передающими ключами к сессиям, которые никогда не присоединялись. Если Вы когда-либо присоединяли, оконное стекло по умолчанию обнуляется, иначе оно тихо перестанет работать, потому что нажатия клавиш не идут в окно. Можно избежать этого путем добавления a -p 0 аргумент Вашей экранной команде.

Alternativly, можно использовать намного лучше ведущее себя tmux вместо этого как это:

tmux new-session -d -n minecraft /var/minecraft/bin/server_nogui.sh

Затем отправьте серверу Minecraft команду остановки как это:

tmux send-keys -t minecraft "stop^M"

Обратите внимание, что ^M упорядочивают выше, визуальное представление реального, входят. Можно генерировать, это на команде как путем удара Ctrl+v Входит. Это легче, чем отправка возврата каретки с помощью оператора эха в ответе взмаха.

1
27.01.2020, 20:18

Теги

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