файловая система / каталог, объединяющие точки монтирования как уровни

Это эквивалентно нажатию Ctrl+Z в других командах.

Он приостанавливает работу оболочки и возвращает управление родительской оболочке или процессу, если таковой имеется.

Пример:

zsh$ bash
bash-4.4$ cd /
bash-4.4$ suspend
zsh: suspended (signal)  bash
zsh$ fg
[1]  + continued  bash
bash-4.4$ pwd
/

Функция исходит из csh, оболочки BSD (откуда происходит управление заданиями) в начале 80-х.

В AT&T ksh это встроенный псевдоним для kill -s STOP $$ (да, без кавычек! )

В вашем случае , bash, вероятно, был запущен непосредственно эмулятором терминала. И ваш эмулятор терминала не ожидал, что процесс будет приостановлен.

Этот баш был лидером сессии. Если лидер сеанса приостановлен, если мы возьмем вид старых временных терминалов, у пользователя не будет возможности возобновить его.

bash устраняет это, отказываясь приостановить, если это оболочка входа в систему. Но в вашем случае ваш эмулятор терминала, вероятно, не запускает bash в режиме входа в систему, поэтому защита не работает.

zsh и mksh не имеют проблемы, поскольку они отправляют сигнал SIGTSTP (тот, который также отправляется после Ctrl+Z), например csh вместо SIGSTOP (и в группу вызывающего процесса для mksh, как в csh, и в основную группу процессов оболочки для zsh, а не для $$ только процесс). SIGTSTP игнорируется при доставке в группу потерянных процессов, и квалифицируется группа лидера. Идея состоит в том, что SIGTSTP не должен приостанавливать то, что не может быть возобновлено пользователем.

В mksh или yash можно также использовать suspend для приостановки подоболочки:

$ (set -x; sleep 1; suspend; sleep 2)
+ sleep 1
+ suspend
[1] + Stopped(SIGSTOP)     (set -x; sleep 1; suspend; sleep 2)
$ fg
[1] (set -x; sleep 1; suspend; sleep 2)
+ sleep 2

Это не сработает с zsh, который отправляет SIGTSTP основной группе процессов, а не вызывающей стороне. В любой оболочке со встроенным kill всегда можно использовать kill -s TSTP 0.

1
29.11.2016, 22:28
1 ответ

Самый гибкий и простой вариант, который я нашел, это AUFS, например. :

mount -t aufs -o "br=CustomFolderToWriteAt:CustomTopOverriderFolder:CustomInBetweenOverriderFolders: CustomLowestPriorityFolder" none CustomMergedMountPointFolder

CustomFolderToWriteAt будет содержать все модификации, которые будут записаны в CustomMergedMountPointFolder, даже если вы коснетесь файла, он создаст полную копию такого, там.

CustomInBetweenOverriderFolders, здесь их может быть много, разделенных ":".

Изменения в других пользовательских папках мгновенно применяются в объединенной папке CustomMergedMountPointFolder.

0
28.01.2020, 01:06

Теги

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