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

Об окнах Tkinter

Окно в вашем изображении является окном Tkinter . Окна Tkinter по умолчанию не соответствуют значку средства запуска , если только вы специально не настроили средство запуска (файл .desktop) в соответствии с WM_CLASS окна. Далее объясняется, как это сделать.

однако

Если вы не определите конкретный WM_CLASS в своем коде python / Tkinter, все окна Tkinter имеют то же самое WM_CLASS. Вы можете видеть, что если вы запустите

xprop WM_CLASS

в терминале, нажмите Return kbd>, а затем щелкните в окне Tkinter. Это покажет:

WM_CLASS(STRING) = "tk", "Tk"

Это означает, что если у вас есть несколько приложений Tkinter, все они будут отображаться под одним значком в панели запуска. Это будет универсальный , если вы не отредактируете свой .desktop файл.

Как установить отличительный WM_CLASS в python / Tkinter

Вы можете определить WM_CLASS, установив его следующим образом:

#!/usr/bin/env python3
from tkinter import *

# set the WM_CLASS
win = Tk(className="applicationname")
# set the window title
win.wm_title("Test 123")
win.mainloop()

enter image description here

Добавьте WM_CLASS в ваш файл .desktop

Добавьте следующую строку в ваш файл .desktop:

StartupWMClass=applicationname

где applicationname - имя Вы устанавливаете в коде python / Tkinter.

3
задан 15.04.2020, 18:39

1 ответ

Вот пример сценария:

#!/bin/bash

# Here put the name of your process
ProcName="process_name"
# Here put the desired memory limit in KBytes
MemLimit=400000
ProcID=$(pidof "$ProcName")
if [ -z "$ProcID" ] ; then echo "Process not found" ; exit ; fi

while true
do
  MemCurrent=$(grep VmSize /proc/"$ProcID"/status | cut -f 2 | tr -d ' kB')
  if [ $MemCurrent -gt $MemLimit ]
  then
    kill -9 "$ProcID"
    exit
  fi
  sleep 5
done

Установите желаемое имя процесса и ограничение памяти в переменных ProcName и MemLimit. Сохраните этот скрипт где-нибудь, например как ~/killer.sh. Сделайте его исполняемым: chmod +x killer.sh. Затем запустите его: ./killer.sh.

Что вы подразумеваете под « изменить его обратно »?

N.B. На самом деле VmSize не даст вам точного использования памяти. Расчет реального использования памяти процесса является сложной задачей. Вы можете получить некоторое представление здесь: https://stackoverflow.com/questions/131303 . Но я думаю, что этого сценария будет достаточно в вашем случае.

1
ответ дан 15.04.2020, 18:40
  • 1
    привет жаль о нарушают, был бы u загружать dat пожар в медиа файла 2 сценария или что когда-либо и gme da link для процесса называют " Sro_Client.exe" на пределе " 400kb" и iwana знают, работает ли тот сценарий на окна 7 окончательных 64 бита – plinth 15.04.2020, 18:40
  • 2
    Нет никакого wordpad в Ubuntu (по крайней мере, в стандартной установке). Wordpad и пакетные файлы от мира Windows. Вы имеете в виду gedit вместо этого? Я добавил еще некоторые инструкции сделать вещи более ясными. Что касается сценария - это работает. Я протестировал его. Как только процесс превышает VmSize предел, он закрывается быстро. – 14 revs 15.04.2020, 18:41
  • 3
    Мне поиском решения в абсолютно неправильном месте кажется. Вы задаете вопросы на askUBUNTU форуме ( подсказка : всеми вопросами здесь является связанный UBUNTU). Пойдите и ищите где-нибудь на askWINDOWS форумах. I' m сделанный. – moogs 15.04.2020, 18:41
  • 4
    куда я могу поместить dat сценарий, я записал им на wordpad файле и изменении исключая 2 летучими мышами, но это было неэффективно – priyanka 15.04.2020, 18:41

Теги

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