Cron работа в Unix - PullRequest
       4

Cron работа в Unix

0 голосов
/ 05 октября 2010

Я создал скрипт helloworld.sh, и его путь равен /home/ehimkak/cronTabTest:

#/usr/bin/sh
echo $1
if [[ $1 = "cron" ]] ; then
  echo "hiiiii"
else
  echo "sorry"
fi

Если я запускаю его из местоположения / с командой

/home/ehimkak/cronTabTest/helloworld.sh cron

, то онработает нормально.


Теперь я добавил задание cron, сначала установив редактор как vi (export EDITOR = vi), а затем использовал команду crontab -e.

Там я добавил строку

10,15,20,25,30,35,40,45,50,55 * * * * /home/ehimkak/cronTabTest/helloworld.sh cron>>/home/ehimkak/cronTabTest/t1.txt

В результате сценарий работает, но вывод не соответствует желаемому.

Вывод в файл t1.txt, который я получаю,

cron
sorry

но мой вывод должен прийти

cron 
hiiii

В скрипте нет проблем, но я не понимаю, почему crontab ведет себя таким образом.
Пожалуйста, помогите ...

Ответы [ 4 ]

2 голосов
/ 14 ноября 2011

что-то еще для читабельности: вместо того, чтобы звонить каждые 5 минут, вы можете сказать, что это различно:

 bevore: 10,15,20,25,30,35,40,45,50,55 * * * * "/home/ehimkak/cro...
 after:  */5 * * * *  "/home/ehimkak/cro...

* / 5 будет вызывать cronjob каждые 5 минут, что делает его более читабельным!эндо

2 голосов
/ 06 октября 2010

Я смог решить проблему, и решение было очень простым.

Я только что отредактировал строку оболочки, которая является первой строкой теперь первая строка

#!/usr/bin/sh

так что я добавил! и моя проблема была решена

2 голосов
/ 05 октября 2010

попробуйте заменить

if [[ $1 = "cron" ]] ; then

на

if [[ "$1" = "cron" ]] ; then
1 голос
/ 05 октября 2010

Формирует типичную man-страницу crontab (5) ....

В шестом поле (остальная часть строки) указывается команда для запуска.Вся командная часть строки, вплоть до новой строки или символа%, будет выполнена / bin / sh или оболочкой, указанной в переменной SHELL файла cronfile.Знаки процента (%) в команде, если они не экранированы обратной косой чертой (), будут изменены на символы новой строки, и все данные после первого% будут отправлены в команду в качестве стандартного ввода.

я бы далВам два совета:

  • Сначала попытайтесь понять, что происходит.Журнал всегда твой друг.Сказал, что в вашем скрипте добавьте что-то вроде:

    echo $ #> / tmp / log

    echo $ @ >> / tmp / log

    echo $ * >>/ tmp / log

И проверьте, передаются ли параметры.

Другой совет - попробуйте передать все экранированные слова, как:

10,15,20,25,30,35,40,45,50,55 * * * * "/home/ehimkak/cronTabTest/helloworld.sh cron" >>/home/ehimkak/cronTabTest/t1.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...