Conky заполнение текста с помощью dzen2

используйте trap 'kill 0' EXITв основном скрипте. это убьет всех детей при выходе из скрипта. независимо от того, как сценарий завершается. кроме kill -9. подробнее об этом позже.

для демонстрации я создал два файла

$ cat killchildren 
#! /bin/sh
trap 'echo killing all children; kill 0' EXIT # this is the important line
./sleepx 4 &
./sleepx 2
echo killchildren done

$ cat sleepx 
#! /bin/sh
trap 'echo sleep$1 killed' EXIT # just print that it was killed
sleep $1
trap - EXIT # clear trap so not print that it was killed
echo sleep$1 done

здесь просто бегут и остаются в покое

$./killchildren 
sleep2 done
killchildren done
killing all children
sleep4 killed

здесь он убит обычнымkill(примечание, что я увеличил время сна, потому что я не быстро печатаю)

$./killchildren &
[1] 13248

$ kill 13248
killing all children
sleep8 killed
sleep10 killed
[1]+  Terminated             ./killchildren

здесь убитkill -9

$./killchildren &
[1] 13259

$ kill -9 13259
[1]+  Killed                 ./killchildren

$ #... time passes...
sleep8 done
sleep10 done

обратите внимание, что из основного сценария не было сообщения о выходе, и дети не были уничтожены.

особо не проверял. работает по крайней мере с sh в Arch Linux по состоянию на 2018 год.


это не будет работать, если основной скрипт kill -9. потому что семантика kill -9заключается в немедленном завершении, не позволяя процессу что-либо делать. даже не обработка ловушки.

в котором говорилось, что все, что убивает ваш процесс, не должно делать это с помощью kill -9. я бы посчитал это багом. здесь больше информации о том, почему бы и нетkill -9:

0
19.02.2021, 12:20
1 ответ

Я понимаю, что это довольно устаревший вопрос, но недавно я столкнулся с той же проблемой, и это было высоко в результатах поиска. Поскольку мне удалось найти ответ, я решил опубликовать его для всех, кто сталкивается с этой проблемой.

lua_load =...должен находиться в вашей conky.configтаблице (, а не на верхнем уровне файла, как это было в старом синтаксисе конфигурации ). Примерно так:

conky.config = {
    lua_load = 'path_to_script.lua',
   ...
};

Странно, что даже при включенной отладке через -DDconky не жалуется на неуместную строку.

2
21.08.2021, 22:55

Теги

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