Cronjob не будет работать правильно

У меня есть этот сценарий sh:

ufw allow 27017 && iptables -F 

в файле test.sh

И я хочу запускать это с cronjob с рутом каждый день в 07:00, вот так:

 0 7 * * * /root/cron/test.sh 

И я также проверил, действительно ли этот скрипт запускается с помощью grep CRON / var / log / syslog, и я вижу, что он действительно работал:

24 августа 07:00:01 vps118774 CRON [1672]: (root) CMD (/root/cron/test.sh)

Теперь моя проблема в том, что настоящий скрипт из test.sh не запустился должным образом, чтобы разблокировать мой порт, на котором запущен этот cronjob, суть в том, что если я запускаю этот скрипт вручную с терминала на сервере с помощью:

 sh script.sh 

Все работает нормально, и скрипт выполнит желаемое действие, поэтому скрипт работает как положено, но что не так с моим cron, выполняющим это?

Я положил логи казни получил эти:

root / cron / test.sh: 2: /root/cron/test.sh: ufw: не найден

One Solution collect form web for “Cronjob не будет работать правильно”

Задания Cron выполняются в среде оболочки, которая может отличаться от обычной среды интерактивной оболочки. Например, переменная PATH может содержать список различных каталогов и может не иметь некоторых каталогов, из которых вы привыкли выполнять утилиты.

ufw , где ufw утилита ufw (с помощью command -v ufw в командной строке), затем либо

  1. используйте полный путь к этой утилите в скрипте, или
  2. измените переменную PATH внутри скрипта, чтобы она включала каталог, в котором может быть найдена утилита ufwiptables ).

Скрипт, как показано в вопросе, не имеет надлежащего #! -линия. Это не проблема, если вы запускаете его явно с помощью sh , но вы не делаете этого в спецификации задания cron. Вместо этого сделайте скрипт исполняемым, а затем запишите его как

 #!/bin/sh PATH="$PATH:/usr/sbin:/sbin" ufw allow 27017 && iptables -F 

Затем вызовите скрипт из вашего crontab точно так же, как вы это делаете сейчас.

Здесь я также добавил две директории /usr/sbin и /sbin в переменную PATH , просто чтобы показать, как это можно сделать в скрипте.

  • Динамические переменные в оболочке
  • Скрипт умирает, когда родительский процесс завершается
  • Найти перекрытие / пересечение списков с bash
  • Как перезаписать файл сценарием оболочки без использования дополнительного места на устройстве?
  • Использование netcat и curl вместе в скрипте bash
  • Как сделать так, чтобы скрипт вызывался внутри другого скрипта в команде ssh?
  • Как пропустить первый аргумент в скрипте
  • Ошибка выдачи скрипта «=: не найдено»
  • Как сделать так, чтобы клиент Transmission torrent запускался и запускался автоматически при запуске ПК?
  • Разбить строку без разделителя и сохранить ее в массиве
  • Как заменить один символ, чтобы получить много строк в оболочке?
  • Interesting Posts

    Как приостановить и возобновить процессы, такие как bash

    Установите ls -l формат времени

    Почтовое оповещение с сообщением «tar: Удаление ведущих` / 'из имен участников »

    Bash: показать содержимое текстового файла, при каждом появлении выделенного слова

    Почасовой cronjob не работает

    Требуется sed для удаления знаков препинания

    Установка mpd 0.17 или 0.16 на debian squeeze

    Как я могу заставить пользователя войти в систему с помощью ключей ssh, но не с паролем?

    Установка узла: нет модуля с именем gyp.common

    Синтаксис Grep Perl и авторский характер

    Как сделать 32-битное и 64-битное изображение iso под 64-разрядным debian, используя simple-cdd?

    Нечетное поведение GUI программного обеспечения в Ubuntu на основе eOS (источники, выбранные в фоновом режиме)

    / proc / cpuinfo показывает одно ядро ​​под VirtualBox

    Могут ли другие пользователи просмотреть аргументы, переданные команде?

    Сохранение дерева зависимостей Systemd

    Linux и Unix - лучшая ОС в мире.