Как уничтожить (в последний раз - 1) PID с ударом

Как сказанный Renan, это - результат несоответствия на 32/64 бита. На OpenSUSE попробовать zypper in Mesa-32bit устанавливать версию на 32 бита библиотеки. В целом, если у Вас есть версия на 64 бита, можно использовать rpm -qf найти пакет, содержащий библиотеку:

% rpm -qf /usr/lib64/libGLU.so.1
Mesa-7.11-11.4.2.x86_64

На OpenSUSE соглашение о присвоении имен для 32bit-библиотек состоит в том, чтобы добавить -32bit к имени пакета таким образом разделите версию и информацию об архитектуре и добавьте суффикс для получения Mesa-32bit.

2
23.05.2013, 21:22
1 ответ

сводка:

Необходимо использовать jobs перечислять, и использовать kill %n для уничтожения n'th фонового процесса, и если удар поддерживает его: kill %-1 уничтожит n-1'th фоновый процесс.

подробнее:

# find / -print >/dev/null 2>/dev/null &
[1] 1291234
# find /./ -print >/dev/null 2>/dev/null &
[2] 2162424
# find /././ -print >/dev/null 2>/dev/null &
[3] 680176
#
# jobs
[1]   Running                 find / -print >/dev/null 2>/dev/null &
[2]-  Running                 find /./ -print >/dev/null 2>/dev/null &
[3]+  Running                 find /././ -print >/dev/null 2>/dev/null &
# kill %2  # or kill %-1  if your version of bath supports it
#
[2]-  Terminated              find /./ -print >/dev/null 2>/dev/null
# jobs
[1]-  Running                 find / -print >/dev/null 2>/dev/null &
[3]+  Running                 find /././ -print >/dev/null 2>/dev/null &
#

Заметьте, что дополнительные "входят", должен был видеть [2]- Terminated find /./ -print >/dev/null 2>/dev/null сообщение (показанный только перед следующей подсказкой)

Теперь, если Ваш удар поддерживает kill %-n нотация: это легко:

kill %-1  # will kill not the n'th (or last), but the n-1'th backgrounded process

Но если Ваш удар не поддерживает kill %-1 : Вот (чрезмерно сложен...) попытка автоматизации (который должен только уничтожить, если существует n-1th задание, которое будет уничтожено..., надо надеяться),

jobs \
  | awk 'BEGIN {cur="";}

           /./ { last=cur ; cur=$0 ; }

           END { if ( last != "")
                 { print last ;} }' \
  | tr -d '[]+-' \
  | awk '{ print $1 }' \
  | xargs -I __ echo kill %__

(выньте "эхо", после того как Вы уверены, что оно делает то, к чему Вы хотите его...),

7
27.01.2020, 21:53

Теги

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