Как можно было бы обнаружить, если внешняя команда существует в сценарии?

Нет никакого общего средства для спящего режима единственного процесса, только целая система.

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

Если Вы знаете, что процесс, вероятно, будет неактивен в течение долгого времени и что Вы испытываете необходимость в быстром времени отклика в какой-то момент, можно вынудить много RAM быть освобожденным теперь путем выделения большого количества RAM в процессе короткой продолжительности, например.

perl -e '$tmp = "a" x 999999999' # allocate about 1GB

Вы не получаете контроля на том, что выгружается, таким образом, другие процессы могут быть выгружены. На Linux можно загрузить процесс назад путем насильственного доступа к страницам, которые он отображает. Сценарий в этом ответе сделает это: загрузите в память все страницы, отображенные процессом (обратите внимание, что это включает открытые файлы; можно пересечь регионы выборочно на основе информации о карте, чтобы не загружать данные, что Вы знаете, что Вам не будет нужно, видеть этот ответ для получения дополнительной информации).

5
03.09.2011, 02:36
1 ответ

В Bash type встроенная оболочка дает информацию об исполняемых вещах: псевдонимы, функции, исполняемые файлы. Посмотрите help type для деталей.

# just check for existence
type -t 'yourfunction' > /dev/null || echo 'error: yourfunction not found'

# explicitly check for given type
[[ "$( type -t 'yourfunction' )" != 'function' ]] && \
    echo 'error: yourfunction not found or is not a function'
13
27.01.2020, 20:33

Теги

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