- Запуск Скрипта, allez, 16:14 , 04-Сен-09 (1)
- Запуск Скрипта, buboni, 23:08 , 05-Сен-09 (2)
>[оверквотинг удален] >>Но он то там есть))) > >Во-первых, где "там" указан именно bin/bash? Что-то я нигде такой строчки не >обнаружил... >Во-вторых, если он "там" все-таки есть, то не следовало ли указать полный >путь: _/bin/bash? >В-третьих, "^M" ненавязчиво намекает на то, что было бы неплохо файлы, отредактированные > >в Windows, привести в человеческий вид с помощью, например, dos2unix, fromdos или >d2u. bash я поменял не помагло, у меня есть только bash скрипт и мне нужно его запустить как службу) win файлов у меня нет. может у кого пример есть скрипта запуска службы?
- Запуск Скрипта, allez, 17:10 , 06-Сен-09 (3)
- Запуск Скрипта, buboni, 18:05 , 06-Сен-09 (4)
>>может у кого пример есть скрипта запуска службы? > >У вас их в /etc/init.d полно. вот наверху пример и вроде все правильно, но не работает.
- Запуск Скрипта, allez, 18:42 , 06-Сен-09 (5)
- Запуск Скрипта, buboni, 20:19 , 06-Сен-09 (6)
>>вот наверху пример и вроде все правильно, но не работает. > >В таком случае запустите его руками и процитируйте сообщения, которые будут выданы >на экран. >Именно процитируйте (методом "скопировать-вставить"), а не пересказывайте своими словами. Кстати, >я, если честно, так толком и не понял, как называется ваша служба: >"restart", "restard" или "restartd". :-) > >P. S. Да, и что из себя представляет /usr/local/sbin/restart? Если обычный скрипт, >приведите здесь его. и так у меня есть скрипт вот он и имеет название restart #!/bin/bash prov() { /bin/echoscu -aec CONQUESTSRV1 192.168.1.2 5678 -v -to 5 label=$? if [ "$label" = 0 ]; then pin else /bin/mail -s "Centrisity_Archive" buboni2009@yandex.ru < /tex Fi Pin } pin() { ping 192.168.1.2 -c 6 label=$? if [ "$label" = 0 ]; then proverka else /bin/mail -s "Centrisity_Archive" buboni2009@yandex.ru < /tex1 fi proverka } proverka() { /bin/echoscu -aec DCM4CHEE 127.0.0.1 11112 -v label=$? if [ "$label" = 0 ]; then sleep 300 prov else /etc/init.d/capi restart fi sleep 120 /bin/echoscu -aec DCM4CHEE 127.0.0.1 11112 -v label=$? if [ "$label" = 0 ]; then sleep 300 prov else /etc/init.d/capi restart fi sleep 120
/bin/echoscu -aec DCM4CHEE 127.0.0.1 11112 -v label=$? if [ "$label" = 0 ]; then sleep 300 prov else /etc/init.d/capi restart fi sleep 120 /bin/echoscu -aec DCM4CHEE 127.0.0.1 11112 -v label=$? if [ "$label" = 0 ]; then sleep 300 prov else shutdown -r now fi } Prov пусть этот скрипт имеет название restart Теперь мне нужно этот скрипт запускать как службу
вот те сообщения которые появляются если использовать исполняемый скрипт с названием restard (на верху) он мне выдает состояние в списках служб env: /etc/init.d/restartd: No such file directory где restartd имеет название исполнительный скрипт службы а restart мой скрипт restard!!!! )))) Опечатка возможно в этом моя ошибка )))))) если запустить в терминале bash: /etc/rc.d/init.d/restard: bin/bash^M: плохой итерпретатор: Нет такого файла или каталога заранее спасибо
- Запуск Скрипта, allez, 20:33 , 06-Сен-09 (7)
- Запуск Скрипта, buboni, 21:49 , 06-Сен-09 (8)
>[оверквотинг удален] >> if [ "$label" = 0 ]; then >>pin >> else >>/bin/mail -s "Centrisity_Archive" buboni2009@yandex.ru < /tex >>Fi > >Для начала: у вас в скрипте написано именно так - "Fi"? Если >да, то исправьте на "fi". >Это, конечно, вряд ли устранит вашу основную проблему, но ситуацию точно не >ухудшит. :-) ХОРОШО ИСПРАВЛЯЮ)))
- Запуск Скрипта, elvenic, 18:56 , 07-Сен-09 (15)
- Запуск Скрипта, buboni, 19:16 , 07-Сен-09 (17)
>И не только Fi/fi. Если у вас функции называются "prov" и "pin", >то и их вызовы должны быть "prov" и "pin", а не >"Prov" и "Pin". bash это не Basic или Pascal, тут имеет >значение буковки большие или маленькие. Да я уже переделываю весь скрипт так использовать функции в моей задаче нереально (( (а сними проще, они похожи на команду go to))) ) половину исправил вот голову ломаю как сделать условие трех раз. если есть пример покажите плиз.
- Запуск Скрипта, Arpo, 09:02 , 07-Сен-09 (9)
- Запуск Скрипта, pavel_simple, 10:07 , 07-Сен-09 (10)
- Запуск Скрипта, buboni, 16:08 , 07-Сен-09 (11)
>le directory >> >>если запустить в терминале >> >>bash: /etc/rc.d/init.d/restard: bin/bash^M: плохой итерпретатор: Нет такого файла или каталога > >если вы сочиняете ваши скрипты в любимом редакторе в винде - помните >нужно делать конвертацию с win2unix - просто потому что есть различая >в обозначении перенос на следующую строку. нет я делаю в centos
- Запуск Скрипта, buboni, 16:14 , 07-Сен-09 (12)
Народ у меня теперь повис ещё один вопросик при вызове функций prov и proverka из следующей через какое-то время стек будет переполнен, и скрипт подвесит свой экземпляр bash точно, а может, и всю систему ))) можно ли как нибудь еще организовать переходы не используя функции?
- Запуск Скрипта, elvenic, 17:26 , 07-Сен-09 (14)
- Запуск Скрипта, buboni, 19:03 , 07-Сен-09 (16)
>[оверквотинг удален] > >К сожалению, интерпретатор bash не реализует "оптимизацию хвостовой рекурсии" (tail recursion optimization). > > >В этих условиях вам, пожалуй, прийдется спуститься с вершин функционального стиля и >снизойти до использования простых циклов: > > while [ condition ] ; do > command > done )))))я уже понял и переписываю скрипт. вот только застрял на вопросе как реализавать условие: если после 3 раз не получается, выполнить то то если сможешь намекни)) заранее спасибо
- Запуск Скрипта, elvenic, 19:29 , 07-Сен-09 (18)
- Запуск Скрипта, buboni, 21:13 , 07-Сен-09 (19)
>[оверквотинг удален] > >SUCCESS="true" > fi > fi > let COUNTER=COUNTER+1 >done > >Подробнисти смотри здесь: http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html > >а также 'man test' блин постояно крутит цикл даже если условие выхода верно мррр а есть какие нибудь еще примеры
- Запуск Скрипта, elvenic, 22:12 , 07-Сен-09 (20)
- Запуск Скрипта, buboni, 09:08 , 08-Сен-09 (21)
>[оверквотинг удален] > let the programmer do something useful > calculate success condition > if [ success condition ]; then > break > fi > let COUNTER=COUNTER+1 >done >if [ $COUNTER -eq 3 ]; then > kill the programmer >fi Ой сори я разобрался ))) огромное спасибо тебе друг Ну вот беда откуда не ждал допустим я хочу организовать 2 цикла (цикл в цикле) 1.цикд while [условие]; do команды 2.цикл until [условие]; do команды done done И вот как только он выходит из второго перед ним done от первого, а он зараза думает что от второго и второй цикл начинается заново а мне нужно чтоб начинался с первого ((( как тут быть?
- Запуск Скрипта, elvenic, 17:10 , 07-Сен-09 (13)
|