Как быть произведенным от удаленной оболочки

Главное выбирает язык. В каком языке это будет выполнено? Если Вы действительно хотите работать на каком-либо дистрибутиве Linux, Вы могли бы записать это в Python. Любое приложение Python, которое будет работать на Linux, будет (в основном) работать на любом дистрибутиве Linux с 0 модификациями.

Python также имеет действительно хороший GTK и спокойные редакторы связей. Я никогда не работал с gtk, но PyQt является действительно большим работать с.

Преимущества для Python - то, что Вы не должны будете, вероятно, компилировать расширения (он полностью зависит от того, что Вы пишете все же. Даже если Вы действительно должны, это довольно легко.) и у Вас также есть большой источник распределения через pypi. Установка программ Python оттуда обычно еще легче, чем хранилище пакетов дистрибутива.

4
11.12.2010, 15:34
3 ответа

Очевидное решение состояло бы в том, чтобы перенаправить вывод приложения в файл и посмотреть на тот файл:

nohup application >app.log &  # on the server
ssh server tail -n +1 -f app.log   # on the client

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

На сервере:
screen -S somename -Rrd
application
нажмите Ctrl+A D для “отсоединений” от экранной сессии, оставив его работающий в фоновом режиме

От клиента:
ssh server
screen -S somename -Rrd снова соединяться с экранной сессией

Если Вы хотите, чтобы сообщения были зарегистрированы автоматически, лучший способ состоит в том, чтобы использовать стандартное средство журнала. Можно принять меры, чтобы записи в журнале были отправлены на другие машины, или грубо с большинством основных системных журналов, или с лучшей фильтрацией и диспетчеризацией опций с rsyslog.

3
27.01.2020, 20:59
  • 1
    В моем случае, я не могу запустить приложение на сервере с экранным подходом. Да, приложение должно иметь свой собственный вывод в терминале. Я не могу остановить и перезапустить приложение. –   11.12.2010, 11:02

Я ищу решение, которое действительно должно запустить сервер специальным способом, потому что я не, позволяют запускать программу и не может даже остановить и перезапустить в специальной среде. Кто-то запускает программу на сервере, и я должен проверить вывод сообщений в терминал, когда существуют проблемы. Какая-либо идея, как достигнуть?

0
27.01.2020, 20:59
  • 1
    Так как Вы разъясняете свой вопрос и не отвечаете на это, отредактируйте свой вопрос и удалите этот ответ. –  Gilles 'SO- stop being evil' 11.12.2010, 14:23
  • 2
    Если сервер не запущен специальным способом, с чем подключен его вывод? Физический терминал? Если у Вас нет разрешения запустить программу, у Вас, вероятно, нет разрешения получить доступ к тому терминалу также, иначе Вы могли ввести в него и запустить программу. Возможно, если Вы опишете очень точно, что программа и как она запустилась, то кто-то найдет способ для Вас видеть вывод, но способ, которым Вы описали ее до сих пор, похоже, что Вы, как предполагается, не можете видеть его. Right Gilles –  Gilles 'SO- stop being evil' 11.12.2010, 14:26
  • 3
    .... Позвольте мне добавить больше информации –   11.12.2010, 15:35

Я думаю, что в этом случае лучше, чем вывод перенаправления в файл перенаправление это к именованному каналу (первым прибыл, первым обслужен), потому что нет никакой потребности хранить все данные на диске. Если программа производит большой вывод, у нас могло бы закончиться дисковое пространство.

Вместо стандартного, конвейера оболочки без имени именованный конвейер использует файловую систему. Это явно создается с помощью mkfifo () или mknod (), и два отдельных процесса могут получить доступ к каналу по имени — один процесс может открыть его как читателя и другой как устройство записи.

mkfifo /path/to/my/pipe
someprogram > /path/to/my/pipe
tail -f /path/to/my/pipe

Если Вы хотите произвести его также к stdout, Вы могли бы использовать tee:

someprogram | tee /path/to/my/pipe
0
27.01.2020, 20:59
  • 1
    Если программа производит большой вывод, это продолжительно, поэтому отправление в канал является плохой идеей. Если не будет ничего слушающего на канале, то это заблокирует программу или уничтожит ее из-за поврежденного канала. Таким образом, при передаче по каналу вывода программы Вы обещаете, что программа, в которую Вы передаете по каналу, будет жить навсегда. Это не надежное предположение здесь, где программа, в которую Вы передаете по каналу, зависит от соединения SSH в терминале на клиентской машине. –  Gilles 'SO- stop being evil' 10.12.2010, 23:18
  • 2
    Да, это - продолжительная программа, которая пишет сообщения отладки в терминале. Когда о некоторой проблеме сообщают затем, я должен через ssh соединиться с сервером и должен смочь поймать последние сообщения в терминале для решения проблем –   11.12.2010, 11:06

Теги

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