Как уничтожить неактивные пользовательские входы на Solaris?

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

На сервере Solaris 10, если я выполню команду w, я получаю следующее:

12:26pm  работает 85 день(ей),  1:13,  6 пользователей,  средняя нагрузка: 0.38, 0.36, 0.38
Пользователь     tty          вход@  простой   JCPU   PCPU  что
blah     pts/1        3Авг15 2дня  632:47 632:47  -bash
root     pts/2        4Сен15 6дней  201:05  77:59  -bash
blah     pts/3        3Авг15 2дня   72:40         -bash
blah     pts/6        13Июл15 60дней   3:24         -bash
root     pts/22       12:10pm                      bash
root     pts/23       12:17pm                      -bash

А когда я выполняю команду who -all, я получаю

   .       системный старт  18 Июн 11:13
   .       уровень работы 3  18 Июн 11:14     3      0  S
LOGIN      консоль      12 Июл 13:54   .     4681
zsmon            .       18 Июн 11:15  старый     404
LOGIN      консоль      18 Июн 11:15   .      876  id=  dt term=0   выход=1      (:0)
ostor    + pts/1        3 Авг 10:35  старый   29213       ()
init.css        .       18 Июн 11:16  старый    1331  id=  h1
root     + pts/2        4 Сен 08:32  старый   13085       ()
ostor   + pts/3        3 Авг 10:41  старый   29867       ()
roxa        pts/4        9 Сен 08:45  старый    4082  id=ts/4 term=0   выход=0
roxa        pts/5        9 Сен 09:26  старый    4369  id=ts/5 term=0   выход=0
ostor   + pts/6        13 Июл 07:45  старый   26750       ()
roxa        pts/7        9 Сен 09:28  старый    9010  id=ts/7 term=0   выход=0
roxa        pts/8        9 Сен 10:11  старый    9242  id=ts/8 term=0   выход=0
roxa        pts/9        9 Сен 10:59  старый   16138  id=ts/9 term=0   выход=0
roxa        pts/10       9 Сен 11:01  старый   21040  id=s/10 term=0   выход=0
roxa        pts/11       9 Сен 11:02  старый   21238  id=s/11 term=0   выход=0
roxa        pts/12       9 Сен 11:19  старый   21514  id=s/12 term=0   выход=0
ostor     pts/13       9 Сен 14:29  старый   14367  id=s/13 term=0   выход=0
ostor     pts/14       9 Сен 14:58  старый   14548  id=s/14 term=0   выход=0
roxa        pts/15       10 Сен 08:28  старый   13820  id=s/15 term=0   выход=0
roxa        pts/16       10 Сен 10:16  старый   14340  id=s/16 term=0   выход=0
roxa        pts/17       10 Сен 08:40  старый   15219  id=s/17 term=0   выход=0
roxa        pts/18       10 Сен 16:51 20:07  17179  id=s/18 term=0   выход=0
roxa        pts/19       10 Сен 16:59 19:58  18319  id=s/19 term=0   выход=0
roxa        pts/20       11 Сен 08:59  3:54   2313  id=s/20 term=0   выход=0
roxa        pts/21       11 Сен 11:20  1:32  20981  id=s/21 term=0   выход=0
root     + pts/22       11 Сен 12:10   .    28241       ()
roxa        pts/23       11 Сен 12:49  0:10   2623  id=s/23 term=0   выход=0
roxa        pts/24       11 Сен 12:24  0:29    226  id=s/24 term=0   выход=0

Как мне завершить все процессы неактивного пользователя roxa?

Если вы завершите только его sshd, возможно, останутся процессы, которые смогут выжить после разрушения их виртуального терминала.

Если вы хотите сделать это аккуратно, вы можете завершить все его процессы с помощью следующей однострочной команды:

for i in `ps uxa|grep ^roxa|sed 's/\+//g'|awk '{print $2}'`;do kill -9 $i;done

Суть этой однострочной команды заключается в том, что она обрабатывает вывод вашей команды ps uxa через конвейер и извлекает его идентификаторы процессов (PID) из него.

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

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

Вот последовательность действий:

  1. Проверьте текущие процессы пользователя:
    Сначала убедитесь, что вы видите все активные и неактивные процессы пользователя roxa. Это можно сделать с помощью следующей команды:

    ps -u roxa
  2. Завершение процессов:
    Чтобы завершить все процессы, принадлежащие пользователю roxa, вы можете выполнить следующую команду:

    for i in $(ps uxa | grep ^roxa | awk '{print $2}'); do kill -9 $i; done

    Разбор команды:

    • ps uxa выводит список всех процессов с подробной информацией.
    • grep ^roxa фильтрует только те строки, которые начинаются с имени пользователя roxa.
    • awk '{print $2}' извлекает идентификаторы процессов (PID) из вывода.
    • kill -9 $i принудительно завершает каждый процесс по его PID.
  3. Проверка завершения процессов:
    После выполнения команд вы можете снова вызвать ps -u roxa, чтобы убедиться, что все процессы пользователя roxa были завершены. Если вы видите, что процессы все еще активны, возможно, комментарий к одним из процессов может указывать на необходимость другого подхода к завершению.

Обратите внимание, что использование сигнала -9 (SIGKILL) не позволяет процессу выполнить какую-либо очистку или завершение, поэтому его следует применять с осторожностью. Если это возможно, сначала используйте сигнал -15 (SIGTERM) для корректного завершения процессов, и только в случае необходимости применяйте -9.

Такой подход гарантирует, что все активные и неактивные процессы пользователя roxa будут завершены, позволяя вам поддерживать порядок на вашем сервере Solaris.

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

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