В оболочке tcsh
есть команда hup
, которая сообщает оболочке о завершении команды при выходе:
hup mycommand...
Это не помогает для запуска функции, так как tcsh
не поддерживает функции.
В zsh
при включенном управлении заданиями это выполняется по умолчанию для всех фоновых заданий.
$ zsh -c 'set -m; sleep 2 &'; ps
[1] 23672
zsh:1: warning: 1 jobs SIGHUPed
Однако включение управления заданиями в сценариях может иметь побочные эффекты.
bash
тоже может это сделать, но только в интерактивном режиме (хотя вызов с помощью -i в сценарии также сделает это )и только при входе в оболочку (!? ). И вам нужно включить опцию huponexit
. Так:
bash -O huponexit -lic 'sleep 2 &'
Это имеет довольно много побочных эффектов, поэтому, вероятно, это не очень хорошая идея.
Другим вариантом с zsh
было бы уничтожение всех известных запущенных дочерних процессов (в любом случае, мы не можем легко узнать о великих -дочерних процессах (и о том, что мы всегда хотели бы их убить )). ] при выходе. zsh
делает это доступным в ассоциативном массиве $jobstates
:
TRAPEXIT() kill -s HUP ${${jobstates[(R)running:*]/#*:/}/%=*/}
trap exit INT HUP TERM
Другие оболочки не раскрывают свой список дочерних процессов, но вы можете убить процессы, чей ppid равен $$
, например:
trap 'pkill -HUP -P "$$"' EXIT INT HUP TERM
Вы пытались создать два системных раздела EFI, также называемых ESP, НЕ два раздела /boot.
У вас может быть только один из них.
Было бы безопасно указать вашему установщику на существующий ESP и добавить запись в grub для загрузки обеих ОС из grub в вашей установке Leap 15, используя что-то вроде того, что сделал этот парень:
https://www.garron.me/en/linux/os-prober-update-grub-arch-linux-debian-ubuntu.html