2010-10-05 2 views
0

я сделал сценарий helloworld.sh и его путь /home/ehimkak/cronTabTest:Cron Работы в UNIX

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

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

/home/ehimkak/cronTabTest/helloworld.sh cron 

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


Теперь я добавил хроны по первой установке редактора, как VI (экспорт 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 ведет себя таким образом.
Пожалуйста, помогите ...

+0

Ваше эхо-утверждение было хорошей идеей: более уверенно быть читаемым, если вы эхо "\ $ i == '$ i". Если вы получаете пустую строку между сорри, тогда вы знаете, что не подаете аргумент. Вы уверены, что yuo не имеет новой строки после имени скрипта и до «cron» и т. Д.? –

+0

Я попытался переформатировать ваш вопрос. Пожалуйста, ознакомьтесь с [Справка по редактированию Markdown] (http://stackoverflow.com/editing-help) и проверьте, как я отформатировал ваше сообщение. –

+0

Я уверен, что нет пустой строки – kaka

ответ

2

пытается заменить

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

с

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

извините, это не решило мою проблему. – kaka

1

формой типичного кронтаба (5) .... станицей руководством

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

я хотел бы дать вам две рекомендации:

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

    эхо $ #>/TMP/журнал

    эхо $ @ >>/TMP/журнал

    эхо $ * >>/TMP/журнал

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

Еще один совет пытается передать все убежали, как:

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

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

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

#!/usr/bin/sh 

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

+1

этот ответ –

+0

старый хруст взрыва! –

+0

Стоит отметить, что он запускался из командной строки, потому что он уже находился в среде bash –

2

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

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

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