Есть ли способ отправлять процесс использования процесса на диске?

Сообщение по адресу https://github.com/mitchellh/vagrant/pull/1745#issuecomment-33159374 было полезным. Следующая строка сделала трюк!

config.vm.network "public_network", :bridge => "eth0", ip: "xxx.yyy.zzz.153", :netmask => "255.255.255.128", auto_config: false

-121--289105-

Это довольно новые функции, задокументированные в magic (5) :

use
Рекурсивно вызывайте именованную магию, начиная с текущее смещение. Если имя ссылки начинается с ^ , то эндианния магии переключается; если магия, упомянутая, например, leshort , она рассматривается как beshort и наоборот. Это полезен, чтобы избежать дублирования правил для различных эндианний.

clear
Этот тест всегда выполняется и снимает флаг соответствия для этого уровня продолжения. Он предназначен для используется с тестом по умолчанию.

Под «довольно новым»:

2014-11-27 18:40 Christos Zoulas

    * Allow setting more parameters from the command line.
    * Split name/use and indirect magic recursion limits.

2013-04-22 11:20 Christos Zoulas

    * The way "default" was implemented was not very useful
      because the "if something was printed at that level"
      was not easily controlled by the user, and the format
      was bound to a string which is too restrictive. Add
      a "clear" for that level keyword and make "default"
      void. This way one can do:            

            >>13    clear   x
            >>13    lelong  1       foo
            >>13    lelong  2       bar
            >>13    default x
            >>>13   lelong  x       unknown %x 

-121--184676-

Самым простым и понятным способом был бы просто для петля с одним из ваших , если внутри нее, который ломается


Если вы не хотите этого, в Bash type принимает несколько аргументов для поиска:

type grealpath realpath ...

, и первое слово выходной строки для соответствующей записи всегда 1 является именем команды/функции/псевдонима. Вы можете захватить стандартный вывод в массиве и проиндексировать в него, чтобы избежать дальнейшего подпроцесса:

words=($(type realpath grealpath foo make 2>/dev/null))
realpath_exec=${words[0]}
if ! [ "$realpath_exec" ] ...

С определенной точки зрения, это элегантно, но определенно сложнее понять, когда вы рискуете через него.


Разделение слов в инициализаторах массива зависит от значения IFS . Если IFS был изменен или какая-либо из команд содержит космос, это не сработает.


1 Экспериментально это происходит в большинстве языковых стандартов, даже если это не естественный порядок слов, и после этого всегда появляется U + 0020 ASCII-пространство, но формат вывода далее не указывается. В некоторых локализациях это не сработает; вы должны подумать, будет ли это проблемой для вас. Можно использовать LC _ ALL = C тип... , чтобы (более или менее) гарантировать подходящий формат вывода.


В zsh , если вы заботитесь только о исполняемых файлах, а не о функциях или псевдонимах, можно использовать команды $

realpath_exec=${commands[grealpath]:-${commands[realpath]:-${commands[another]:?No compatible command found}}}

Расширение $ {param: -...} дает значение param , если оно не равно null, и ... в противном случае; $ {param:?...} ошибки с ... при сбое param . Это остается довольно некрасивым.

Если вы не заботитесь о порядке выбора команд, вы можете использовать более простую версию с (i) подстрочным флагом :

realpath_exec=${commands[(i)realpath|grealpath|another]}

Для включения функций и псевдонимов, а также в любой из них, вы можете использовать $ functions и $ aliases , но это будет повторяться.

1
28.09.2018, 18:31
2 ответа

О чем вы просите (i. е. перемещение использования памяти процессом в своп )произойдет автоматически, если ядру потребуется освободить место в ОЗУ для активного процесса, пока рассматриваемый процесс находится в остановленном состоянии.

2
27.01.2020, 23:31

Вы можете создать контрольную группу , добавить в нее процесс и использовать swappiness(/proc/sys/vm/swappiness)для каждой контрольной группы, чтобы контролировать использование подкачки этой конкретной группы. Вы также можете принудительно запретить подкачку памяти конкретного процесса с помощью mlock (см. man mlockиman mlockall).

0
27.01.2020, 23:31

Теги

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