Планирование - правильный путь?

Самый простой способ - использовать псевдоним (стратегия 3). Если вам действительно нужна команда xargs , вы все равно можете переопределить ее с помощью функции bash.

alias grep='grep --color'
xargs() {
    local args
    for ((i=1; i<=$#; i++))
    do
            if [[ "-E -L -P -I -s -d" == *"${!i}"* ]]; then
                    ((i=i+1))
            elif [[ ${!i:0:1} != "-" ]]; then
                    if [[ ${!i} == "grep" ]]; then
                            args="--color"
                    fi
                    /usr/bin/xargs ${@:1:i} $args ${@:i+1}
                    return;
            fi
    done
}

Но это не лучше, чем использование команды-оболочки, которая, по-видимому, является рекомендуемым решением команды grep :

/usr/local/bin/grep:

#!/bin/bash
/bin/grep --color "$@"

По моему скромному мнению, вам следует обратиться к grep команда разработчиков попросила их предоставить простую замену переменной GREP_OPTIONS , которая включит цвет в grep в соответствии с некоторой переменной среды.

Для них было бы довольно просто включить по умолчанию параметр цвет или когда был установлен GREP_COLORS .

1
03.07.2017, 20:12
2 ответа

Вероятно, вам нужен один сценарий, который выполняет все необходимые шаги последовательно:

#!/bin/sh
sudo -u www-data php /var/www/owncloud/occ maintenance:mode --on
apt-get update && apt-get upgrade -y
sudo -u www-data php /var/www/owncloud/occ maintenance:mode --off

А затем запустите его из crontab root.

0
27.01.2020, 23:45

suи друзья на помощь! Здесь можно использовать su, sudoи super. suявляется традиционным, sudo— самым простым, и superимеет преимущества, если вы хотите, чтобы пользователи могли выполнять часть этого.

Поскольку вы специально упомянули о проверке состояния выхода apt-get upgrade, вы должны использовать 1 7 * * 1 apt-get update && apt-get upgrade && sudo -u www-data php /var/www/owncloud/occ maintenance:mode --off.

Теперь это становится немного длиннее, поэтому следование совету Трига и включение его в скрипт имеет преимущества, но его пример имеет два недостатка :он не проверяет возвращаемые значения, а за режимом обслуживания по команде сразу следует следующий command, и я предполагаю, что была причина задержки между входом в режим обслуживания и запуском apt -get, так что вам может понадобиться нечто подобное:

#!/bin/sh
set -e
sudo -u www-data php /var/www/owncloud/occ maintenance:mode --on || sudo -u www-data php /var/www/owncloud/occ maintenance:mode --on
sleep 1m || true
apt-get update || apt-get update
apt-get upgrade -y || apt-get install
sudo -u www-data php /var/www/owncloud/occ maintenance:mode --off || sudo -u www-data php /var/www/owncloud/occ maintenance:mode --off

Но у вас хорошее начало.

1
27.01.2020, 23:45

Теги

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