Как KDE Konsole обрабатывает SIGTERM?

Это совершенно нормально и не является поводом для беспокойства. Примером того, когда это может произойти, является обновление вашего канала, и в этом случае вы получите две (или потенциально больше )копий nixpkgs. Даже если вы перестроите свою систему на основе обновленного канала, старое поколение системы все еще может ссылаться на старую версию.
В более общем случае -независимо от того, может ли на него ссылаться что-то, Nix не удалит старую версию, пока не будет выполнена сборка мусора.

0
22.10.2019, 11:41
1 ответ

Один частичный ответ — запускать небольшой скрипт вместо konsoleнапрямую:

#!/bin/bash

#SIGTERM handler
on_term () {
    echo "SIGTERM got, sending to worker"
    kill -TERM $WORKERID
}

#intercept SIGTERM
trap _term SIGTERM

# launch console 
konsole --hide-menubar --hide-tabbar --nofork -e worker &

#get Konsole pid
KONSOLEID=$!

# wait for worker to be launched
sleep 1

# get worker pid 
WORKERID=$(pgrep -P $KONSOLEID worker )

echo "worker is running under pid: $WORKERID"

# wait for one child end
wait

echo "worker terminated"

Это решение не идеально, так как оно не работает, когда Konsoleнаходится рядом с кнопкой закрытия, но решает исходную проблему.

0
28.01.2020, 03:13

Теги

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