По умолчанию, pgrep
только соответствует команде, не arguements. Для соответствия полной командной строке Вам нужно -f
опция.
$ pgrep -f java_app
Из pgrep страницы справочника:
- f шаблон обычно только подбирается против имени процесса. Когда-f установлен, полная командная строка используется
Вы хотите входить в систему или попытки входа?
Здесь отображаются входы, но не попытки (например, сегодня) и работает в Fedora 22:
$ journalctl -u 'systemd-logind' --since "today" --until "tomorrow"
Вот пример вывода:
- Журналы начинаются в понедельник, 01.09.2014, 03:10:03 BST, заканчиваются в пятницу, 20.11.2015, 09:55:02 GMT . -
20 ноября, 08:47:15 meow systemd [1]: запуск службы входа в систему ...
20 ноября, 08:47:15 meow systemd-logind [699]: новое место seat0.
20 ноября, 08:47:15 мяу systemd-logind [699]: просмотр системных кнопок на / dev / input / event2 (кнопка питания)
20 ноября, 08:47:15 мяу systemd-logind [699]: просмотр системных кнопок на / dev / input / event0 (кнопка питания)
20 ноября, 08:47:15 мяу systemd-logind [699]: просмотр системных кнопок на / dev / input / event1 (крышка Switch)
20 ноября, 08:47:15 meow systemd [1]: запущена служба входа в систему.
20 ноября, 08:47:37 meow systemd-logind [699]: новый сеанс c1 пользователя gdm .
20 ноября, 08:47:46 meow systemd-logind [699]: новый сеанс c2 пользователя gdm.
20 ноября, 08:47:46 meow systemd-logind [699]: удаленный сеанс c1.
20 ноября 08:47:46 meow systemd-logind [699]: удален сеанс c2.
20 ноября 08:47:46 meow systemd-logind [699]: новый сеанс c3 of user gdm.
20 ноября, 08:51:22 meow systemd-logind [699]: новый сеанс 1 пользователя david1.
Он загроможден другой информацией, такой как крышка и питание кнопки, чтобы можно было использовать grep для session
, чтобы быть более точным:
$ journalctl -u 'systemd-logind' - с "сегодня" - до «завтра» | grep session
20 ноября, 08:47:37 meow systemd-logind [699]: новый сеанс c1 пользователя gdm.
20 ноября, 08:47:46 meow systemd-logind [699]: новый сеанс c2 пользователя gdm.
20 ноября 08:47:46 meow systemd-logind [699]: удален сеанс c1.
20 ноября 08:47:46 meow systemd-logind [699]: удален сеанс c2. {{ 1}} 20 ноября, 08:47:46 meow systemd-logind [699]: новый сеанс c3 пользователя gdm.
20 ноября 08:51:22 meow systemd-logind [699]: новый сеанс 1 пользователя david1.
Выполнить:
journalctl -q _AUDIT_TYPE=1112 _TRANSPORT=audit
Объяснение:
Если у вас запущена подсистема аудита (а если вы ее не отключили, то запущена), то это лучший способ получить такую информацию, потому что, кроме всего прочего, если вы используете _TRANSPORT=audit
, сообщения не могут быть подделаны, как сообщения через традиционный сокет syslog. Чтобы увидеть все сообщения, отправленные через этот транспорт, используйте journalctl -q _TRANSPORT=audit
. (Параметр -q позволяет избежать раздражающих -- Reboot --
строк.)
Чтобы увидеть их в развернутом виде, выполните journalctl -q _TRANSPORT=audit -o verbose
. На самом деле, я предлагаю остановиться и сделать это прямо сейчас, пока вы следите за происходящим, потому что следующее, что мы хотим сделать, это отфильтровать некоторые из полей, которые мы видим там. Вот запись из моей системы:
_BOOT_ID=[redacted]
_MACHINE_ID=[redacted]
_HOSTNAME=[redacted]
_UID=0
_TRANSPORT=audit
SYSLOG_FACILITY=4
SYSLOG_IDENTIFIER=audit
AUDIT_FIELD_HOSTNAME=?
AUDIT_FIELD_ADDR=?
AUDIT_FIELD_RES=success
_AUDIT_LOGINUID=18281
_AUDIT_TYPE=1112
AUDIT_FIELD_OP=login
AUDIT_FIELD_ID=18281
_PID=5398
_SELINUX_CONTEXT=system_u:system_r:local_login_t:s0-s0:c0.c1023
AUDIT_FIELD_EXE=/usr/bin/login
AUDIT_FIELD_TERMINAL=tty6
_AUDIT_SESSION=541
_SOURCE_REALTIME_TIMESTAMP=1480529473269000
_AUDIT_ID=7444
MESSAGE=USER_LOGIN pid=5398 uid=0 auid=18281 ses=541 subj=system_u:system_r:local_login_t:s0-s0:c0.c1023 msg='op=login id=18281 exe="/usr/bin/login" hostname=? addr=? terminal=tty6 res=success'
MESSAGE
внизу - это неструктурированная запись журнала, которая в основном является тем, что вы видите в невербозном выводе в стиле syslog. Мы могли бы grep для MESSAGE=USER_LOGIN
(и закончить прямо сейчас), но журнал позволяет нам делать более интересные вещи, так что давайте продолжим.
Каждый тип сообщения аудита имеет связанный _AUDIT_TYPE
(только представьте!). По какой-то причине в структурированном выводе он не преобразуется в текст, но 1112
соответствует USER_LOGIN
. Я подтвердил это, проверив libaudit.h
, в котором есть (с некоторыми контекстными строками):
#define AUDIT_USER_CHAUTHTOK 1108 /* User acct password or pin changed */
#define AUDIT_USER_ERR 1109 /* User acct state error */
#define AUDIT_CRED_REFR 1110 /* User credential refreshed */
#define AUDIT_USYS_CONFIG 1111 /* User space system config change */
#define AUDIT_USER_LOGIN 1112 /* User has logged in */
#define AUDIT_USER_LOGOUT 1113 /* User has logged out */
#define AUDIT_ADD_USER 1114 /* User account added */
#define AUDIT_DEL_USER 1115 /* User account deleted */
так, journalctl -q _AUDIT_TYPE=1112 _TRANSPORT=audit
- это то, что вам нужно. Он получает логины ssh, терминала и GUI и записывает успехи и неудачи. Обратите внимание, что он не перехватывает такие вещи, как sudo
или su
- для них существуют разные записи аудита.
Даже "короткая" версия вывода довольно многословна, поэтому вы можете использовать -o json
и создать короткий сценарий для разбора вывода в красивом формате.