Назад | Перейти на главную страницу

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

Bash поддерживает перенаправление stdout и stdin вместе, используя &>, но sh не. Крон использовал оболочку Борна (sh), а не Bash. Использовать >/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