Нет ничего пропавшего. Float был разработан для случая, когда вы хотите, чтобы изображение (например) сидело рядом с несколькими абзацами текста, поэтому текст обтекает изображение. Этого не произойдет, если текст «растянет» контейнер. Ваш первый абзац закончится, а затем ваш следующий абзац начнется под изображением (возможно, несколько сотен пикселей ниже).
И именно поэтому вы получаете результат.
Как видно из комментариев, проблема заключается в том, что вы не определяете, какую программу следует использовать для выполнения сценария. Учтите, что cronjob выполняется в крошечной среде; там не так много можно предположить. Вот почему мы определяем полные пути и т. Д.
Итак, вам нужно сказать что-то вроде:
1 * * * * /bin/sh /var/www/html/dbsync/dbsync.sh /var/www/html/dbsync
# ^^^^^^^
/bin/sh
, являющегося двоичным файлом, который вы хотите использовать для выполнения сценария.
В противном случае вы можете установить разрешения на выполнение сценария и добавить заголовок shell-script , сообщающий ему, какой интерпретатор использовать:
#!/bin/sh
Если вы сделать это, добавление пути двоичного файла не требуется.
Из Устранение общих проблем с заданиями cron :
Использование относительных путей. Если ваше задание cron выполняет какой-либо скрипт, вы должны обязательно использовать только абсолютные пути внутри этого скрипта. Например, если ваш скрипт находится в /path/to/script.phpand, вы пытаетесь открыть файл с именем file.php в том же каталоге, вы не можете использовать относительный путь, например fopen (file.php). Файл должен быть вызван из его абсолютного пути, например: fopen (/path/to/file.php). Это связано с тем, что задания cron не обязательно запускаются из каталога, в котором находится скрипт, поэтому все пути должны быть вызваны специально.
blockquote>
Кроме того, я понимаю, что вы хотите запустить этот каждую минуту. Если это так,
1 * * * *
не будет. Intead, он будет запускать каждые 1 минута каждый час . Поэтому, если вы хотите запускать его каждую минуту, скажите* * * * *
.
Важно понимать «login shell» и «интерактивная оболочка», что они означают.
С помощью ОС начались сценарии оболочки, а задания cron не соответствуют указанному выше способу для запуска оболочки. Поэтому никаких системных сценариев (.bashrc) или профилей пользователей не выполняется. Это означает, что наша переменная PATH не инициализируется. Команды оболочки не могли найти, потому что переменная PATH не указывает на нужные места.
Это объясняет, почему ваш скрипт работает успешно, если вы запускаете его вручную, но не удается, когда вы запускаете его через crontab.
Решение-1: Используйте абсолютный путь для каждой команды оболочки вместо имени команды, используемой в вашем файле сценария.
Решение-2: Инициализировать переменные среды и особенно переменную PATH до выполнение сценариев оболочки!
PATH
(даже в начальных записях, но вверху файла - любые пары key=value
автоматически экспортируются в среду), этот ответ, похоже, не позволяет явно обсуждать такой простой подход к выполнению того, что он командует.
– Charles Duffy
14 March 2018 в 15:04