Почему этот код работает в bash v4.4, но не в bash v3.2?

У меня была та же проблема, и мне удалось ее исправить. Общая причина невозможности подключения к серверу репозитория yum заключается в том, что оператор такого сервера выключает его по любой причине (отсутствие денег, так далее). В CentOS 6 файлы конфигурации с путями к репозиториям yum находятся в папке /etc/yum.repos.d/. Имена этих файлов: CentOS-Base.repo, CentOS-Base.repo.custom и т. Д. Сначала вам нужно проанализировать ошибку, сгенерированную yum. Yum обычно сообщает, к какому серверу он не может подключиться. Вы должны записать путь к этому серверу и попытаться найти файл (в папке /etc/yum.repos.d/), который соответствует домену этого сервера. Затем вам нужно отключить этот сервер, открыв этот файл и изменив enabled = 1 на enabled = 0. В моем случае у меня был файл atrpms.repo, который пытался загрузить репозитории с http://dl.atrpms.net/el $ releasever- $ basearch / atrpms / stable source server, который был отключен. Я отключил этот источник, и теперь ошибки нет, и я могу обновлять репозитории с помощью yum. Ваш случай может быть другим, поэтому вам нужно поэкспериментировать с различными комбинациями включенных и отключенных источников репозиториев.

-2
22.01.2019, 06:04
1 ответ

Нельзя использовать позиционные параметры с псевдонимом.
Команда, которую вы запускаете с этим псевдонимом,:

ps ax | grep | cut -f1 -d' ' | xargs kill something

Вам нужно сделать это функцией.

Гораздо длиннее вашего кода, но вот похожая функция, которую я использую:

smash () {
    local T_PROC=$1
    local T_PIDS=($(pgrep -i "$T_PROC"))
    if [[ "${#T_PIDS[@]}" -ge 1 ]]; then
        echo "Found the following processes:"
        for pid in "${T_PIDS[@]}"; do
            echo "$pid" "$(ps -p "$pid" -o comm= | awk -F'/' '{print $NF}')" | column -t
        done
        if ( yorn.ask "Kill them?" ); then
            for pid in "${T_PIDS[@]}"; do
                echo "Killing ${pid}..."
                ( kill -15 "$pid" ) && continue
                sleep 2
                ( kill -2 "$pid" ) && continue
                sleep 2
                ( kill -1 "$pid" ) && continue
                echo "What the hell is this thing?" >&2 && return 1
            done
        else
            echo "Exiting..."
            return 0
        fi
    else
        echo "No processes found for: $1" >&2 && return 1
    fi
}

yorn.ask— это отдельная функция, которую я использую:

yorn.ask () {
    read -p "$@ [Y/n]: " RESP && local YORN_RESP="$(echo "${RESP:0:1}" | grep -i "[YN]")"
    while [[ -z "$YORN_RESP" ]]; do
        echo "Please respond only with: y or n"
        read -p "$@ [Y/n]: " RESP && local YORN_RESP="$(echo "${RESP:0:1}" | grep -i "[YN]")"
    done
    [[ "$YORN_RESP" == 'Y' || "$YORN_RESP" == 'y' ]] && return 0 || return 1
}
4
28.01.2020, 05:14

Теги

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