корректно завершающиеся процессы с killall <processname>

Очень простая причина в том, что, по крайней мере, для файловых систем типа EXT2 / EXT3 / EXT4, имена файлов файлов хранятся через записи в записях каталога , хранящихся в файлах типа каталогов.

Это означает, что эти файлы, которые имеют тип каталога типа, имеют более или менее сложную систему для хранения файлов файлов (файлов внутри каталога) и inodes, которые приводят к данным этих файлов.

Некоторые упрощенные (Ext3 / 4 используют HASH-Tables Heastables для ускорения древовидного обхода каталога и т. Д. ...) Это выглядит как такое список:

## filenames ##    ## inode-numbers ##
filename1            0123
filename2            01242
anotherfilename      3313
yetanotherfilename   11233

, по сути, имена файлов , только когда-либо возникает внутри данных, связанных с Файлы Дирекотрии и не хранятся нигде в метаданных хранилища файловых систем для / из inodes . Поэтому единственный способ получить имена файлов, связанных с номером inode, проходит через все записи каталога всех файлов каталога.

0
14.12.2014, 13:16
2 ответа

SIGTERM позволяет процессу выполнять очистку перед завершением, но действительно ли процесс это делает, и какая очистка выполняется, зависит от того, как была написана программа и (в какой-то степени) от средств, на которых она была написана на языке, на котором она была написана. Таким образом, когда программа получает ЗАПИСЬ, она не обязана ничего сохранять, но вполне вероятно, что любые файлы, которые у нее открыты в настоящее время, будут закрыты.

Есть сигналы "лучше", чем SIGTERM, например SIGUSR1, но программа будет игнорировать такие сигналы, если они не были написаны специально для их прослушивания.

4
28.01.2020, 02:14

Можно использовать wmctrl для грациозного закрытия всех окон конкретного приложения 1 (насколько я знаю, это "так же чисто, как если бы приложение было закрыто с помощью menu->Exit").
используя приложение wm_class:

for win in $(wmctrl -lx | awk '$3 ~ /Icedove/ {print $1}'); do wmctrl -ic "$win"; done

используя приложение pid:

for win in $(wmctrl -lp | awk -v icepid=$(pgrep icedove) '$3 == icepid {print $1}'); do wmctrl -ic "$win"; done

1: При закрытии приложения в трее оно будет минимизировано в трей. Если оно уже в трее, то -c ничего не будет делать. В wmctrl для этого случая нет альтернативы закрытию или команды 'kill' (-c).

3
28.01.2020, 02:14

Теги

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