Обобщение файла задания qsub Grid Engine для нескольких программ и имен входных файлов

В bash запустите echo $$, чтобы увидеть идентификатор процесса оболочки, затем приготовьтесь нажать Tab в bash. Откройте другой терминал и запустите strace -p1234, где 1234 — идентификатор процесса bash. strace напечатает трассировку системных вызовов, выполняемых bash. Даже если вы не совсем понимаете, что происходит, этого часто бывает достаточно, чтобы понять, что занимает время — обычно это выполнение сетевого запроса или доступ к очень большому количеству файлов. Выяснить, какие настройки следует изменить, чтобы избежать замедления, может быть или не просто.

В зависимости от настроек безопасности вашей системы вам может быть запрещено запускать strace для несвязанного процесса. Если это не так, запустите strace в качестве родителя bash:

strace -tt -T -o bash.trace bash

Сделайте попытку завершения, затем выйдите из bash и просмотрите файл трассировки bash.trace. Каждая строка имеет временную метку в начале, указывающую, когда начался системный вызов, а число в угловых скобках в конце строки — это время, затраченное на системный вызов.

strace — это команда Linux. Если вы не используете Linux, найдите соответствующую команду в своей системе — dtrace, truss, trace, …

.
1
20.01.2017, 12:06
1 ответ

Хэш и функция поиска могут выглядеть примерно так:

#!/usr/bin/env bash

declare -A proggies

# "aliases" and then the path said should expand to
proggies[foo]=/some/big/long/stupid/path/foo
proggies[bar]=/some/big/long/stupid/path/bar

function qrunner {
    local exe
    exe=${proggies[$1]}
    if [[ -z "$exe" ]]; then
        echo >&2 "no mapping for '$1'"
        return 1
    fi
    # echo here is for debugging, remove when ready to
    # really break things
    echo qsub job.sh "$exe" "$2"
}

# positive test
qrunner bar filename
echo $?

# and also a negative one
qrunner nope filename
echo $?
0
28.01.2020, 01:03

Теги

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