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

  • Получить список файлов в качестве вывода скрипта?
  • Shell_exec динамически созданного скрипта с else
  • zsh скрипт успешно тестирует ssh или нет
  • Необходимо извлечь часть строки с помощью оболочки
  • Как проверить синтаксис в задании cron
  • Передача файла с локального компьютера на удаленный сервер
  • как отправлять строки / сообщения в файл почтового журнала
  • это нормально, чтобы запустить работу cron с тем же временем?
  • Как сохранить результат команды mailx в unix для чтения почты в текстовый файл?
  • Несколько команд в sshpass
  • Правильное экранирование / сохранение цитаты в функции bash
  • Linux и Unix - лучшая ОС в мире.