SIGPIPE при отображении переменной внутри скрипта bash - PullRequest
0 голосов
/ 28 сентября 2011

У меня запущен cronjob на коробке Debian. В определенные моменты скрипта я устанавливаю переменные через

HOSTNAME=$( hostname -s | tr A-Z a-z )

потом, я записываю это значение в системный журнал (чтобы я мог видеть, что все работает правильно)

function log {
    # just echo it
    echo -n `date -u "+%s"`
    echo -n " "
    echo $1

    /usr/bin/logger -t $0 -- $1
}

log "Hostname: ${HOSTNAME}"

Однако на этом ящике я получаю SIGPIPE. Это происходит много раз по всему сценарию. Я поймал в ловушку SIGPIPE, чтобы подтвердить, что это так, но вместо этого хотел бы решить проблему.

Может кто-нибудь сказать мне, что может быть причиной SIGPIPE, и как это исправить? Я пытался создать меньший тестовый скрипт, но этот скрипт не реагирует так же.

1 Ответ

1 голос
/ 28 сентября 2011

Мое предположение: в среде cron значение PATH ограничено, что означает, что оболочка может не найти имя хоста и / или tr .Сначала выясните, где находятся hostname и tr, и используйте вместо этого абсолютный путь, например:

HOSTNAME=$( /bin/hostname -s | /usr/bin/tr A-Z a-z )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...