Уничтожение других пользовательских процессов

Я на самом деле видел, что система настраивает путь Ваш описывала. Это имело две строки в/etc/passwd для идентификатора пользователя 0 (корень):

root:x:0:0:root:/root:/bin/sh
toor:x:0:0:root:/root:/bin/csh

Или что-то как этот. Я думаю, что это была система SunOS 4.1.x, давным-давно, поэтому возможно, Вы не можете сделать этого в современной системе Linux. Я сказал бы что разрешение и дал бы ему попытку. Что это может повредить?

3
18.01.2012, 16:44
3 ответа

Так rswrk01 и co являются пользователями. Иногда полезный из kill это, если Вы передаете-1 как PID, сигнал отправляется во все процессы, в которые отправитель сигнала имеет разрешение отправить сигналы. Другими словами, для некорневого пользователя, kill -$sig -1 отправляет сигнал во все процессы, работающие как тот пользователь. Это включает уничтожителя, но доставка является атомарной, таким образом, все соответствующие процессы действительно получают сигнал.

Теперь все, что необходимо сделать, помещается это в цикле, и Вы сделаны. Начиная с форматирования чисел с продвижением обнуляет, что-то вроде боли, не очень привлекательный, но удобный прием должен поместить продвижение 1 (т.е. количество от 101 до 198, а не 1 - 98), и снимают изоляцию с этого.

i=101
while [ $i -le 98 ]; do
  sudo su - rswrk${i#1} kill -KILL -1
  i=$((i+1))
done

Или в ksh:

for ((i=101; i<=198; i++)); do
  sudo su - rswrk${i#1} kill -KILL -1
done

Или в ударе или zsh:

for i in {01..98}; do
  sudo su - rswrk$i kill -KILL -1
done
4
27.01.2020, 21:09
  • 1
    +1 очень хороший ответ действительно, мне нравится он, и я надеюсь, что он работает, когда я тестирую его –  munish 18.01.2012, 15:10

sudo -u rswrk96 -i killall ... должен совпасть с выполнением su - rswrk96 и затем killall ....

То, что оставляют, генерирует последовательность 00-96. Это должно работать:

for i in $(seq -w 00 96); do sudo -u rswrk$i -i killall ...; done

Теперь, когда я думаю о нем, Вы могли, вероятно, просто сделать

for i in $(seq -w 00 96); do sudo killall -u rswrk$i; done

Не должны входить в систему.

6
27.01.2020, 21:09
  • 1
    Ваш ответ кажется разумным, но нет никакого pkill в hp Unix, который я дал which pkill и ничто не возвратило –  munish 17.01.2012, 16:41
  • 2
    между прочим, что то, что-i, используемый прежде pkill, делает –  munish 17.01.2012, 16:44
  • 3
    любые другие люди –  munish 17.01.2012, 16:45
  • 4
    1 идей. Хорошо, я заменил его killall. Посмотрите man killall для чтения, какие опции можно поместить там (идея: killall -u rswrk$i уничтожил бы все процессы того пользователя). 2. -i аргумент sudo совпадает с - аргумент su: это запускает сценарии входа в систему пользователя, которые создают его среду. –  angus 17.01.2012, 16:49
  • 5
    $ sudo -u rswrk96 usage: sudo -V | -h | -L | -l | -v | -k | -K | [-H] [-S] [-b] [-p prompt] [-u username/#uid] -s | <command> это - то, что я получаю, когда я даю sudo-u вместо sudo su - donno, почему –  munish 17.01.2012, 17:01

kill -9 -1 просто отменит все процессы, работающие от имени пользователя выполнения команды, даже оболочки. Можно попробовать это sudo для уничтожения процессов другого пользователя. sudo -u user1 kill -9 -1

Или просто используйте -u флаг к pkill команда.

1
27.01.2020, 21:09

Теги

Похожие вопросы