Поиск по сайту:

Устранение неполадок при запуске приложения Linux с помощью команды journalctl


В редких случаях, когда вы обнаруживаете, что приложение или служба Linux не запускаются должным образом, есть удобная команда, которая поможет вам разобраться в проблеме.

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

sudo systemctl start ИМЯ

Где NAME — это имя приложения или службы.

Были случаи, когда служба отказывалась запускаться или работать должным образом. Когда это происходит, куда вы обращаетесь? Вы всегда можете проверить файлы журналов (обычно это лучшее место для начала) или обратиться к другой команде, которая является дополнением к systemctl. Эта команда называется journalctl.

Команда journalctl запрашивает журнал systemd и выводит список содержимого журнала, которое может содержать сведения о том, почему конкретное приложение или служба не работают должным образом. Часто, когда вы пытаетесь запустить службу с помощью systemctl, если служба не запускается должным образом (или вообще не запускается), вы увидите предложение использовать команду journalctl для выяснения того, что произошло.

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

Как использовать journalctl

Что вам понадобится:Единственное, что вам понадобится для этой задачи, это дистрибутив Linux, использующий systemd, который является большинством основных дистрибутивов.

1. Основное использование

Первое, что вы должны попробовать, это запустить journalctl без каких-либо опций, что просто:

journalctl

То, что вы увидите, - это весь вывод журнала systemd. Из этих выходных данных вы можете найти информацию, которая поможет вам устранить проблему.

Когда я запустил команду, на выходе была всего 41 строка. Я видел случаи, когда в выводе были сотни строк, что делало использование команды без аргументов или опций немного бесполезным.

К счастью, вы можете отфильтровать большую часть этого шума.

2. Проверка конкретной услуги

Например, у SSH возникают проблемы с запуском. Чтобы устранить эту проблему, можно выполнить команду:

systemctl -u ssh

В этом случае -u означает единицу измерения или конкретную единицу systemd (подумайте о «службе»).

Вывод приведенной выше команды может выглядеть примерно так:

Jan 12 09:55:42 pop-os systemd[1]: Starting OpenBSD Secure Shell server...
Jan 12 09:55:42 pop-os sshd[3424]: Server listening on 0.0.0.0 port 22.
Jan 12 09:55:42 pop-os sshd[3424]: Server listening on :: port 22.
Jan 12 09:55:42 pop-os systemd[1]: Started OpenBSD Secure Shell server.
Jan 15 09:39:26 pop-os sshd[659190]: Invalid user jackwallen from 192.168.1.77 port 55040
Jan 15 09:39:29 pop-os sshd[659190]: pam_unix(sshd:auth): check pass; user unknown
Jan 15 09:39:29 pop-os sshd[659190]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.77
Jan 15 09:39:31 pop-os sshd[659190]: Failed password for invalid user jackwallen from 192.168.1.77 port 55040 ssh2
Jan 15 09:39:33 pop-os sshd[659190]: Connection closed by invalid user jackwallen 192.168.1.77 port 55040 [preauth]
Jan 15 09:39:39 pop-os sshd[659232]: Accepted password for jack from 192.168.1.77 port 55049 ssh2
Jan 15 09:39:39 pop-os sshd[659232]: pam_unix(sshd:session): session opened for user jack(uid=1000) by (uid=0)

Как вы можете видеть, в моем случае SSH работает как ожидалось, но попытка входа в систему не удалась (из-за того, что я забыл добавить действительное имя пользователя при входе с моего iMac).

3. Хвостовое управление выходом

Есть еще лучший способ устранения неполадок в работе службы с помощью journalctl. Допустим, SSH работает, но испытывает проблемы с принятием соединений (или просто любую другую проблему, которая может произойти). Вы можете «хвостить» вывод (который выводит информацию в реальном времени по мере ее появления) следующим образом:

journaltcl -xefu ssh

Эта команда не только сообщит вам о состоянии запуска и работы службы, но и выведет список самых последних записей, зарегистрированных в журнале для этой службы. Чтобы закрыть, используйте сочетание клавиш Ctrl+c. Для тех, кто хочет знать, вот объяснение вариантов:

  • x - добавить пояснение к строкам лога из каталога сообщений
  • e - сразу перейти к концу журнала внутри подразумеваемого пейджера
  • f - follow (непрерывно печатать новые записи по мере их регистрации)
  • u - единица измерения (как описано выше)

4. Просмотр временного диапазона

Также можно просмотреть определенный временной диапазон с помощью journalctl. Допустим, вы хотите просматривать только зарегистрированные записи, начиная с 10:00 20 января. Команда будет следующей:

journalctl --с "2025-01-20 10:00:00"

Вы увидите каждую запись, зарегистрированную с 10:00 утра до текущего времени.

Вы могли бы сделать этот диапазон еще более конкретным. Допустим, вы хотите просмотреть записи, зарегистрированные с 10:00 до 10:10. Команда будет следующей:

journalctl --с "2025-01-20 10:00:00" --до "2025-01-20 10:05:00"

И вот, друзья мои, как вы можете использовать journalctl для устранения проблем с запуском приложений в Linux.

Статьи по данной тематике