zHz00 Untitled

понедельник, 11 ноября 2024
04:56 Невнятные сообщения об ошибках. Линукс
На винду часто жалуются за невнятность сообщений об ошибках. О сообщениях в пользовательском ПО я писал тут. Но что происходит в линуксе?

Я неопытный пользователь линукса. Я ставлю какие-то там эксперименты на VPS. И, конечно, приходится работать с сообщениями об ошибках. Надо сказать, что там ситуация ещё печальнее.

Во-первых, сообщения об ошибке может не быть в принципе. Вы по результатам работы команды должны понять, что она не отработала.
Во-вторых, может быть, что успешная отработка команды сопровождается выводом, а неуспешная проходит молча. Но бывает и наоборот, когда успешность сопровождается отсутствием вывода. Это надо знать заранее.

В третьих, даже если ошибка выводится, в тексте может ничего не быть о причинах. После этого можно начинать гуглить. Это может помочь, а может и нет.

Вот, например, хотел настроить удалённый доступ через RDP, создал нового пользователя, поставил xrdp. Пытаюсь подключиться, и получаю сообщения:

started connecting
connection problem, giving up
some problem
Error connection to user session

Подключиться не удаётся по причине some problem, понимаете?

Штош, начинаем гуглить. В гугле про такую ошибку есть некоторая информация, но, конечно, везде разная. Как же диагностировать причину?

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

Я создал ему папку вручную (гугл подсказал команду mkhomedir_helper) и после этого коннект через RDP действительно стал проходить... фантастика!

@темы: Борьба с техникой

URL
Периоды блуда у него сменяются покаяниями в церкви, пер...
Я перестала забивать стрелки... люди находят меня сами......
Сегодня шел по улице... Вообще-то, я почти каждый день...
Грустные словенцы сразу после 1 гола
А теперь добавим к нашему типажу безумное желание манипул...
Внутренние и внешние противоречия, что впрочем, ничему не...

11.11.2024 в 08:53

11.11.2024 в 08:53
Во-первых, сообщения об ошибке может не быть в принципе. Вы по результатам работы команды должны понять, что она не отработала. Во-вторых, может быть, что успешная отработка команды сопровождается выводом, а неуспешная проходит молча. Но бывает и наоборот, когда успешность сопровождается отсутствием вывода. Это надо знать заранее. Ну, понятное дело, зависит от программы, но если мы говорил про CLI и про линуксовые каноны, то тут имеет место вполне конкретная культура:


  • Код возврата программы однозначно даёт ответ на вопрос, отработала ли программа успешно — он равен нулю тогда и только тогда, когда программа отработала успешно. Хорошие оболочки терминала (я не имею в виду стандартный Bash, он вообще прошлый век, хотя и его можно научить) как-то визуально отображают успешность завершения прошлой команды. Также коды возврата и успешность завершения постоянно используются во всяких скриптах чтоб делать разные вещи в зависимости от успешности завершения или просто падать, когда хоть что-то из запускаемого упало. В общем, это очень стандартный API.

  • Если сообщения об ошибке есть, то их пишут на стандартный поток ошибок (stderr, а обычный вывод на stdout), что в целом не делает их понятнее, но позволяет при желании как-то с этим работать, например, перенаправляя вывод в одно место, а ошибки в другое.

  • У многих программ (в основном это касается системных демонов) есть логи. У большей части софта логи можно посмотреть стандартным образом через journalctl. У всякого особо страшного/маргинального/древнего софта (например, X11, который имеет прямое отношение к описанной ситуации и логи которого стоило посмотреть в первую очередь) логи так посмотреть нельзя, и смотреть их надо в каком-то конкретном альтернативном месте, куда он их пишет.


Понятно, что большую часть того, что я сейчас рассказал, скорее всего и так все знают, а также понятно, что конкретный софт может писать ошибки криво или ровно абсолютно независимо от того, как это сделано на платформе целиком. Также понятно, что всё-таки стандартные линуксовые системные ошибки — это всё тот же errno, и для того, чтоб это нормально выводить красиво, требуется хотя бы чуть-чуть дополнять стандартные сообщения об ошибках контекстной информацией, но это всегда так и никак иначе быть не может.

В общем, нормально у нас всё на линусе)
Но конечно конкретный софт может писать нечитаемые ошибки. Хотя все мы знаем, что ошибки в софте существуют именно для того, чтоб по строке ошибки искать место в коде, где она кидается, и там уже читать, что на самом деле пошло не так.

P.S. X11 — дырявое небезопасное и кривое (хотя и переполненное маргинальными возможностями и поддержкой старым софтом) легаси и вообще прошлый век, советую переходить на Wayland, если только не существует какой-то непреодолимой причины этого не делать

P.P.S. когда уже можно будет комментари в Telegram писать :)
URL

11.11.2024 в 12:52

11.11.2024 в 12:52
Когда в Телеге комменты будут привязаны только к конкретному посту, т.е. без общего чата, как-то так, насколько я помню объяснения зХз. :nope: Т.е. - пишите в личку, если хочется что-то сказать. :nope:
URL
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail