регистрация экрана не работает через терминал ssh - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу запустить «screen» на сервере линос Debian, запустив его через окно терминала ssh.Мне бы хотелось, чтобы скрипт оболочки запускался и отсоединял экран, чтобы процесс мог продолжаться при выходе из системы.Я также хотел бы, чтобы был создан файл журнала screenlog.0, чтобы в случае сбоя процесса была запись.

Но есть проблема с получением файла журнала для записи.Локально, в окне терминала Mac,

% screen -dm -L sh -c 'echo hello'

работает нормально, "привет" записывается в screenlog.0.Но та же команда, выданная серверу в окне ssh, выполняется, но ничего не записывается.Однако, если в этом окне я выхожу на экран

% screen -L

и затем что-то выполняю, действие записывается в screenlog.0 (на сервере).

Чего мне не хватает

1 Ответ

0 голосов
/ 12 февраля 2019

Оказывается, что у команды screen () могут быть проблемы.Приведенная выше команда не отправляет выходные данные в screenlog.0 под «Debian GNU / Linux 9 (stretch)», в то время как «Ubuntu 14.04.1 LTS» пишет странное сообщение: «ошибка: не удалось запустить сервер! Попробуйте запустить от имени root!»,на screenlog.0, даже при запуске от имени пользователя root.«Linux Mint 18.1» и MacOSX работают правильно.

Мне посоветовали использовать почтенную команду unix «nohup», чтобы решить мою проблему отсоединения процесса и регистрации его вывода, даже когда вы закрываете соединение ssh.Обычно, когда вы закрываете окно терминала, сигнал SIGHUP отправляется любым процессам, которые там были запущены.Но

% nohup myprog> logfile.txt &

работает отлично.Старый способ, хороший способ.

...