Перенаправить 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