Это назвало канал. Выполненный man 7 pipe
и Вы узнаете все о том, как работают каналы.
Отредактированный для добавления: Короче говоря, винный вывод команды собран в буфере. Когда буфер полон, и вино пытается записать больше, винный процесс останавливается ядром. Когда пространство становится доступным в буфере (т.е. когда чтения цикла с условием продолжения от него), остановленный процесс повторно пробужден, и позволяется продолжиться. Это - классический алгоритм ограниченного буфера, но в мире Unix/Linux он обычно называл канал. Это очень популярно и мощно, и я рекомендую узнать все об этом.
Проверьте #!/bin/bash строка (строка хижины). Это - действительно первая строка? Возможно, файл запускается еще с некоторого комментария, строка хижины будет проигнорирована, и сценарий выполнился с текущей оболочкой (командная строка могла бы быть ударом, crontab будет/bin/sh), Касание будет работать, строка с КЛЮЧЕВЫМИ СЛОВАМИ перестанет работать.
Команда после! должно быть допустимым. Когда файл редактируется в Windows, строка могла бы закончиться с \r\n. Когда строка закончится с пространством, чем интерпретатор будет искать "удар".
Вы сказали запуск программы как./thescriptname.sh. В этом случае недопустимая хижина будет замечена также. Но возможно Вы запустили его с
. ./thescriptname.sh
При запуске файла с точки строка хижины проигнорирована. Это объяснило бы, почему это работает с помощью командной строки.
crontab предоставлял вывод? Возможно, Ваша учетная запись Unix имеет почту. Иначе измените crontab и перенаправьте stdout и stderr в tmp файл:
* * * * * /bin/sh /root/miami.sh > /tmp/miami.out 2>&1
Просто совет и мнение; Попробуйте свой скрипт Перейти к
, которые известны Cron (показано в переменной пути)
и
просто добавить в Crontab в качестве имени сценариев.