Я сбит с толку, почему это не работает.
Я пробовал перенаправить 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