2015-06-04 2 views
0

Использование:Проблема с планированием Баш скрипт с кронтаб

20 21 * * * /bin/sh /Users/username/Documents/first.sh 

выполнить свой скрипт, который делает кстати есть это на вершине:

#!/bin/sh 

и вместо этого я получаю это:

You have new mail in /var/mail/username 

со следующим выходом:

/Users/username/Documents/first.sh: line 3: wget: command not found 
/Users/username/Documents/first.sh: line 4: wget: command not found 

Как исправить это?

+0

Прочитайте письмо? –

+0

Я получаю письмо каждый раз, когда запускаются мои скрипты cron. Электронная почта содержит весь вывод. – donjuedo

+0

@ EdHeal исправил это на основании того, что сообщение в моей почте указано. Можете ли вы объяснить, почему «ошибка», если вы будете там записаны? – carrots

ответ

-2

Благодарственное вы все, я нашел решение:

Я изменил мой кронтаб файл:

34 21 * * * CD/Пользователи/имя пользователя/Документы & & Баш first.sh

+0

, поэтому путь находится в локальном .bashrc –

2

Несмотря на то, что вы сделали свою работу по работе cron, я бы очень хотел отметить, что ваше «решение» кажется неуместным.

  1. «Баш first.sh» не является хорошей идеей, поскольку начало сценария начинается с «#/бен/ш!», Что означает: вы просто «first.sh» и система будет интерпретировать используя "/ bin/sh".

  2. «cd/Пользователи/имя пользователя/документы» НЕ решает проблему «команда не найдена».

Это на самом деле общая проблема с заданиями cron. Основная причина: задания cron (first.sh в этом случае) выполняются в «чистой» среде. То есть ваш профиль не создан. Следовательно, PATH env var содержит только минимальное количество путей и, к сожалению, «wget» не находится в этих путях.

Решение: это просто и прямо. Вы можете

  1. evoke wget и т. Д. С их абсолютными путями. Или
  2. установка PATH соответственно (или источник в соответствующих профилях) в начале вашего скрипта.

Для обеспечения безопасности мы обычно предпочитаем вызывать внешние команды (wget и т. Д.) С использованием абсолютных путей.