Я не уверен насчет старых программ Qt, но современные фреймворки Qt работают на концепции "сигналов и слотов" (http://doc.qt.io/qt-4.8/signalsandslots.html). Я могу предположить, что автор/создатель Konsole создал связь между событием нажатия кнопки и функцией, генерирующей новую вкладку, но не создал связь между опцией программы --new-tab
и этой функцией (в то время).
Я не знаю способа исправить это в вашей текущей ситуации (с установленными версиями программного обеспечения и фреймворка), однако, эта опция --new-tab
была доступна в более поздних версиях Konsole:
--new-tab Create a new tab in an existing window rather
вместо создания нового окна
--tabs-from-file Создать вкладки, как указано в заданном файле tabs
конфигурационный файл
Информация о версии:
Qt: 5.5.1
KDE Frameworks: 5.18.0
Konsole: 15.12.3
Если это возможно (исключая любые несовместимости с критически важными сервисами/программами), самым простым решением может быть просто обновление Konsole и/или KDE до более новой версии.
Вероятно, существует родительский процесс, который убивает дочерние процессы и создает новые дочерние процессы. Вы можете использовать pstree, чтобы найти родительский процесс:
pgrep mtp | xargs -i pstree -ps {}
Или, в качестве альтернативы, вы можете использовать параметр ppid ps:
pgrep mtp | while read line; do ps -p $line -o ppid; done
Затем вы можете убить родительский процесс
Вы можете использовать pkill mtp или kill -9 pidof mtp
Обратите внимание, что если существует несколько процессов mtp, обе эти команды уничтожат все процессы mtp в системе.
Рами Розен
Я выпустил
ps aux | grep mtp
, который дал мне несколько процессов, связанных с mtp, и сравнил с установленной и отключенной камерой, чтобы получить конкретный процесс
, а затем
pkill -9 gvfsd-mtp
сделал свое дело.
Но я предполагаю, что приведенный выше ответ тоже будет работать:)
Если вы хотите завершить процесс, который постоянно меняется, вы делаете это динамически:
pkill name_of_process
или
kill -kill $(ps -A | grep name_of_process | awk '{print $1}')
Узнайте больше об убийстве здесь:https://www.thegeekstuff.com/2009/12/4-ways-to-kill-a-process-kill-killall-pkill-xkill/
Примечание.:Поиск, выполняемый grep или sed, чувствителен к -регистру, и вы должны убедиться, что конкретный процесс сужен до уникального идентификатора, отличного от PID, прежде чем вы сможете убить его, используя эти Примеры.
Если вы хотите найти родителя этого процесса динамически, вы должны сделать:
ps -o ppid=$(ps -A | grep name_of_process | awk '{print $1}')
Оттуда вы можете убить родительский процесс, так как у вас есть его PPID.
Если вы не можете убить родительский процесс, вам придется прибегнуть к первому решению. Проблема в том, что иногда PID процессов меняется быстрее, чем вы можете его найти. В этом случае вы можете использовать Sed вместо Grep. Первый пример становится:
kill -kill $(ps -A | sed '/name_of_process/!d' | awk '{print $1}')
Чтобы еще больше ускорить работу, вы можете улучшить результаты, возвращаемые командой ps , используя другие флаги other-A . Посмотрите справочную страницу ps:
https://www.man7.org/linux/man-pages/man1/ps.1.html
Иногда процесс продолжается с помощью демона. Посмотрим, сможешь ли ты убить и это.
Две другие вещи, которые вы можете рассмотреть, это терминал , связанный с процессом , или команда killall .
https://linoxide.com/linux-command/linux-killall-my-options/