Обсуждение: почему замерзает терминал?

Вопрос или проблема

На Solaris 10
Я подключаюсь через ssh

От одного пользователя я сделал

talk marian

и появляется

[Waiting for your party to respond]

С другой стороны (пользователь marian, на той же машине)

talk: connection requested by [email protected].
talk: respond with:  talk [email protected]     

Я сделал (как пользователь marian)

talk [email protected]   

Вернувшись к pippo на его терминале, появляется

talk: connection requested by [email protected].
talk: respond with:  talk [email protected]    

Но экран завис
Что я упустил?

Я пытался использовать pts и ttys (/dev/term/a и /dev/term/b)

Похоже, что пользователь marian может быть вошел как кто-то другой, и talk не может определить правильную учетную запись (LOGIN). Вы можете попробовать who am i и whoami, чтобы посмотреть, поможет ли это понять проблему.

Тем не менее, независимо от причины, запрос от pippo к marian не был сопоставлен с запросом от marian к pippo, поэтому первая сессия все еще ждет подключения.

Ctrl C должен прервать выполнение программы talk у pippo, и вы получите обратно командную строку.

Ответ или решение

На операционной системе Solaris 10 вы столкнулись с проблемой использования утилиты talk, которая используется для обмена текстовыми сообщениями между двумя пользователями, работающими в Unix-системе. Причиной "заморозки" терминала, с которой вы столкнулись, могло стать несколько факторов, связанных с особенностями работы данной программы и конфигурацией системы.

Теория

Для начала, стоит обратить внимание на то, как работает talk. Эта утилита предназначена для двухстороннего общения в режиме реального времени. Чтобы инициировать соединение, один пользователь должен отправить запрос другому, а второй пользователь должен его принять. В обычной ситуации это происходит следующим образом:

  1. Инициирование сеанса: Пользователь A отправляет команду talk userB, где userB — это логин пользователя, с которым он хочет связаться.
  2. Ответ на запрос: На экране пользователя B появляется уведомление о входящем соединении, и его просят выполнить команду talk userA для начала общения.
  3. Установление соединения: Когда пользователь B выполняет команду talk userA, между обоими пользователями устанавливается соединение, и они могут обмениваться сообщениями.

Основная проблема, с которой вы столкнулись, заключается в том, что один из пользователей заблокировал терминал, и это может произойти по нескольким причинам. Например, если процессы talk не соответствуют друг другу по идентификации терминалов или пользователю, или если есть сетевые ограничения или ошибки в работе talk.

Пример

В приведенном вами описании, пользователь pippo инициировал соединение с marian с помощью команды talk marian. Однако при попытке соединения возникли следующие моменты:

  • Пользователь marian, как предполагается, вошел в систему от имени другого пользователя, что могло повлиять на успешную идентификацию сеанса talk.
  • Обнаружено запросы на соединение, но, вероятно, процедура соединения не завершилась корректно.
  • Возможно, пользователь marian ввел неправильный идентификатор для ответа, или между пользователями возник конфликт идентификаторов сеансов.

Применение

Теперь, когда у нас есть определенное понимание проблемы, давайте рассмотрим, что можно сделать для ее решения:

  1. Проверка идентификационных данных: Убедитесь, что marian действительно вошел в систему под нужным логином. Команды whoami и who am i помогут определить, кто сейчас взаимодействует с системой и под каким логином. Это должно устранить недоразумения, связанные с аутентификацией.

  2. Отмена зависшего процесса: Если у pippo терминал завис, это может быть связано с зависанием процесса talk. Чтобы выйти из этого состояния, рекомендуется прервать процесс с помощью Ctrl+C. Это действие должно вернуть контроль над терминалом.

  3. Проверка сетевых соединений: Убедитесь, что между пользователями установлено правильное сетевое соединение. Иногда ограничения или блокировки на уровне брандмауэра могут предотвратить правильную работу программы talk.

  4. Диагностика терминальных устройств: Убедитесь, что вы используете корректные терминальные устройства (например, pts или tty), необходимые для соединения. Проверка доступных терминалов с помощью команды who поможет определить, на каких устройствах активны пользователи.

  5. Исключение других возможных факторов: Возможно, в системе установлены правила безопасности или ограничения, препятствующие работе таких программ. Убедитесь, что talk имеет все необходимые разрешения и права для работы.

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

Оцените материал
Добавить комментарий

Капча загружается...