Во-первых, вам не нужны эти пробелы и двойные кавычки.
ExecStartPre=/run/current-system/sw/bin/mkdir -p %h/.config/example/pending
Во-вторых, пробовали ли вы эту команду в своей системе, как она написана? В твоей скорлупе:
mkdir -p ~/.config/example/pending
Наконец, %h относится к дому пользователя. Но, возможно, ваша система нацелена на другое место, так как команда mkdir находится не в том месте. echo ~
, чтобы увидеть свой домашний каталог.
В конце концов, ядро операционной системы может разрешить «отдавать» (виртуальную память )страницы по частям, (это может быть беспорядок; и на практике это не так важно, неиспользуемая страница в любом случае достаточно скоро будет удалена из оперативной памяти ). По более или менее тем же причинам,среда выполнения языка может просто хранить вещи (, если вы, например. в C go malloc()
и free()
ничто не гарантирует, что ваше освобожденное пространство является непрерывной страницей в адресном пространстве --, отдавая его обратно только для того, чтобы попросить больше места позже, когда оно будет стоить ).
В Unix есть sbrk(2)
, что позволяет расширять/сокращать сегмент данных процесса, но это предполагает наличие одного сегмента данных (, у вас может получиться несколько ), стек времени выполнения в принципе расширяется и сжимается. Опять же, если среда выполнения языка или ядро действуют на это, зависит от реализации.
Проверьте, например. Стандарт C :Они тщательно формулируют свое правило "как если бы" программа должна вести себя так, чтобы ее можно было объяснить, абстрагируясь от любых таких деталей и обрабатывая любые ограничения ресурсов.