POSIX объясняет рассуждение следующим образом:
There are two reasons why POSIX programmers call fork(). One reason is to create a new thread of control within the same program (which was originally only possible in POSIX by creating a new process); the other is to create a new process running a different program. In the latter case, the call to fork() is soon followed by a call to one of the exec functions.
Когда fork()
используется как «потоки бедняка -человека», имеет смысл скопировать файловые дескрипторы. Этот случай использования -должен продолжать поддерживаться, поэтому эта функция останется...
@JdeBP намекнул, что это как-то связано сsnapper
(утилитой автоматического создания моментальных снимков для файловых систем btrfs ).
В итоге я удалил все свои старые снимки корневого каталога, т.е.
# snapper -c root delete <first>-<lasts> #e.g. snapper -c root delete 7-945
и это, кажется, решило эту проблему, по крайней мере, на данный момент.
Обратите внимание, что в /etc/defaults/snapper
вы увидите строки
# if you want to disable snapshot per install/upgrade, then set "yes"
DISABLE_APT_SNAPSHOT="no"
, который включает или выключает автоматические моментальные снимки apt (, которые могут возникать до и после операции apt ).
/etc/apt/apt.conf.d/80snapper содержит этот код:
DPkg::Pre-Invoke { "if [ -e /etc/default/snapper ]; then. /etc/default/snapper; fi; if [ -x /usr/bin/snapper ] && [ ! x$DISABLE_APT_SNAPSHOT = 'xyes' ] && [ -e /etc/snapper/configs/root ]; then rm -f /var/tmp/snapper-apt || true ; snapper create -d apt -c number -t pre -p > /var/tmp/snapper-apt || true ; snapper cleanup number || true ; fi"; };
DPkg::Post-Invoke { "if [ -e /etc/default/snapper ]; then. /etc/default/snapper; fi; if [ -x /usr/bin/snapper ] && [ ! x$DISABLE_APT_SNAPSHOT = 'xyes' ] && [ -e /var/tmp/snapper-apt ]; then snapper create -d apt -c number -t post --pre-number=`cat /var/tmp/snapper-apt` || true ; snapper cleanup number || true ; fi"; };
... или переформатировать
#if vi :set ts=8
# DPkg::Pre-Invoke {
# "
# if [ -e /etc/default/snapper ]; then. /etc/default/snapper; fi; # Set environment variable: DISABLE_APT_SNAPSHOT ="no"
#
# if [ -x /usr/bin/snapper ] && [ ! x$DISABLE_APT_SNAPSHOT = 'xyes' ] && [ -e /etc/snapper/configs/root ]; then
# rm -f /var/tmp/snapper-apt || true ;
# snapper create -d apt -c number -t pre -p > /var/tmp/snapper-apt || true ; # -d dscp; -c cleanup-algo; -t type; -p print#
# snapper cleanup number || true ; # trim old or excessive snapshots
# fi";
# };
#
#
# DPkg::Post-Invoke {
# "
# if [ -e /etc/default/snapper ]; then. /etc/default/snapper; fi;
# if [ -x /usr/bin/snapper ] && [ ! x$DISABLE_APT_SNAPSHOT = 'xyes' ] && [ -e /var/tmp/snapper-apt ]; then
# snapper create -d apt -c number -t post --pre-number=`cat /var/tmp/snapper-apt` || true ;
# snapper cleanup number || true ;
# fi";
# };