Перенаправить cronjob STDOUT и STDERR в /dev/null не работает

Я озадачен тем, почему это не работает.

Я попытался перенаправить STDOUT и STDERR, используя "&>", а также "2>&1", но ни один из них не работает. Я все еще получаю электронное письмо от этой работы cron (каждую минуту!) С жалобой smbclient на то, что в общем ресурсе нет файлов.

* * * * * smbclient //scanner/scan-import secretpass -U administrator -c "prompt; mget *; del *" &> /dev/null

Для любопытных: у клиента есть старый и дорогой сканер, который сканирует несколько документов на высокой скорости, но у программного обеспечения нет способа настроить местоположение для сохранения. Они не хотят, чтобы документы сохранялись непосредственно на старой рабочей станции XP, поэтому я поделился местом сохранения и использую это задание cron для автоматической отправки документов на их сервер Linux.

3 ответа

Решение

Bash поддерживает перенаправление stdout и stdin вместе, используя &>, но sh не. Крон использовал раковину Борна (sh) а не баш. использование >/dev/null 2>&1 вместо.

Я не думаю, что вам нужно первое "&", не так ли? Просто "> /dev/null 2>&1";

Попробуйте обернуть все это в отдельный скрипт оболочки:

#!/bin/bash
smbclient //scanner/scan-import secretpass -U administrator \ 
      -c "prompt; mget *; del *" 

и отредактируйте строку cron в

* * * * * /path/to/your/script &> /dev/null
Другие вопросы по тегам