Это потому, что вы не печатаете идентификатор группы процессов (PGID), вы печатаете «идентификатор группы процессов управляющего tty», tpgid. Как объясняется в man ps
:
tpgid TPGID ID of the foreground process group on the tty
(terminal) that the process is connected to, or
-1 if the process is not connected to a tty.
Итак, вы видите PID процесса переднего плана, который в вашем случае является программой ps
:
$ sleep 1000 &
[1] 6745
$ ps ax -O tpgid | grep -E 'sleep|ps a'
6745 7136 S pts/1 00:00:00 sleep 1000
7136 7136 R pts/1 00:00:00 ps ax -O tpgid
7137 7136 S pts/1 00:00:00 grep --color -E sleep|ps a
as как вы можете видеть выше, напечатанное значение tpgid является PID процесса ps
. Вы ищете pgid
, а не tpgid
:
pgid PGID process group ID or, equivalently, the process ID
of the process group leader. (alias pgrp).
$ ps ax -O pgid | grep -E 'sleep|ps a'
8414 8414 S pts/1 00:00:00 sleep 1000
8656 8656 R pts/1 00:00:00 ps ax -O pgid
8657 8656 S pts/1 00:00:00 grep --color -E sleep|ps a
Конечно, поскольку вы на самом деле не выполняете никакую группу процессов (это происходит, например, когда скрипт вызывает другие сценарии), PGID для сна
совпадает с его PID. Тем не менее, вы можете убить его таким способом, если хотите:
$ kill -9 -8414
$ ps ax -O pgid | grep -E 'sleep|ps a'
10065 10065 R pts/1 00:00:00 ps ax -O pgid
10066 10065 S pts/1 00:00:00 grep --color -E sleep|ps a
[1]+ Killed sleep 1000
Более информативным примером может быть запуск такого сценария:
#!/bin/bash
sleep 1000 &
sleep 1000 &
sleep 1000 &
sleep 1000
Если я сохраню его как foo.sh
и запустил его, все команды sleep
будут иметь один и тот же PGID:
$ foo.sh &
[1] 13555
$ ps ax -O pgid | grep -P '[s]leep|[f]oo.sh'
13555 13555 S pts/1 00:00:00 /bin/bash /home/terdon/scripts/foo.sh
13556 13555 S pts/1 00:00:00 sleep 1000
13557 13555 S pts/1 00:00:00 sleep 1000
13558 13555 S pts/1 00:00:00 sleep 1000
13559 13555 S pts/1 00:00:00 sleep 1000
Итак, каждый дочерний процесс находится в группе процессов родительского, foo.sh
. Если мы сейчас уберем группу процессов, все процессы будут завершены:
$ kill -9 -13555
$ ps ax -O pgid | grep -P '[s]leep|[f]oo.sh'
[1]+ Killed foo.sh
У меня тоже была эта проблема. Моя мышь вышла за пределы экрана в какое-то воображаемое место снаружи, и мне пришлось вернуться на то же расстояние, чтобы вернуться в видимую область.
Решение Перейдите в Все настройки> Дисплеи Если это как в моем случае, вы увидите ящик с вызовом Неизвестный дисплей слева от Встроенный дисплей в большом поле с серым фоном
Щелкните неизвестный дисплей и отключите его, отключив кнопку чуть ниже серый ящик.
Это решает проблему!
Это также может быть ваш драйвер дисплея. В последних версиях Ubuntu (14, 16 )инициируйте «Дополнительные драйверы» в разделе «Системные инструменты» -> «Настройки». Если вы найдете альтернативные, обычно проприетарные, драйверы дисплея, вы можете попробовать один из них.
Я решил точно такую же проблему на своем Gateway NV57H, переключившись с драйвера xorg Nouveau на драйвер nVidia -375.
У меня была та же проблема, и я решил ее, перейдя в «Экран» и обнаружив, что у меня два экрана. Главный выделен красным, а сбоку есть синий экран с надписью «неизвестно». Итак, я нажал на «неизвестный» экран, и есть возможность отключить его, что я и сделал. После этого у меня больше не было проблем:)