Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
Итак... ОС Solaris. Ведется лог-файл. Могучая кучка юзеров скидывает туда по строчке текста время от времени. Задача: закачивать лог в базу оракл с целью обработки статистики. Хотелось бы каждую новую строчку лога скидывать сразу. Могу предположить что для этого нужно использовать tail -f. Далее строчка должна передаваться скрипту который делает закачку в базу. Меня интересует как передать каждую новую строчку от tail -f скрипту закачки в качестве параметра? Заранее благодарен за Ваши ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2005, 15:35 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. типа того... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2005, 16:03 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
Работоспособно, но не очень красиво - я, думаю так лучше Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Возможны ощибки - не проверял. Но идея така... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 00:15 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
74bytes #!/bin/sh tail -f test.txt | while read i do ./script.sh "$i" done 541bytes FILELN=0 FILELOG=test.log while : do CUR_FILELN=`wc -l $FILELOG | awk '{print $1}'` if [ $FILELN -ne $CUR_FILELN ]; then TAIL_CNT=`expr $CUR_FILELN - $FILELN` exec 7<&0 < tail -$TAIL_CNT $FILELOG while : do read CUR_LINE if [ $? -ne 0 ]; then break; fi ./load_line_to_db.sh $CUR_LINE done FILELN=$CUR_FILELN exec <&7 else sleep 5 fi done Красота требует жертв...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 01:48 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
при каждой итерации порождается процессов (при использовании sh): в первом случае - 1 во втором случае - 8 :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 10:54 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
Продолжая о красоте. Что для меня _не_красиво_ это tail -f 1) tail -f при первом вызове выдает какое-то определенное количество строк (так где-то с 10), что не плохо бы обработать 2) tail -f _спит_ 1 секунду. Что не всегда приемлемо (может и не надо спать вообще, а может надо спать 10 минут. Как следсвие, скрипт (который грузит строчки) может просто не успеть за tail -f. В моем подходе такую ситуацию можно отпахать. Ну а так, все работает, конечно, я ничего против не имею, не красиво тольки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 01:07 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
И еще, неточность (на мой скромный взгляд) Взглянем на Код: plaintext 1. 2. 3. 4. И за 1 сек ни одной новой строчки. Цикл, заверщился, скрипт умер. А потом повалило, повалило ... и все мимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 01:14 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
andrushokИ еще, неточность (на мой скромный взгляд) ... И за 1 сек ни одной новой строчки. Цикл, заверщился, скрипт умер. А потом повалило, повалило ... и все мимо. вообще-то все тут ОК, цикл просто так незавершается пока не нажмешь Cntrl C Однако, хочу вам предложить более правильный путь Будем писать скрипт, который можно будет вставить в cron, кот. будет выполняться с заданной периодичностью. Его можно будет запустить в любой момент вручную, или если хочешь вообще его вставить в цикл .... Обрабатываемый файл Код: plaintext 1. 2. 3. 4. 5. скрипт Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Замечание : вам самостоятельно нужно еще будет предусмотреть действия в случае ошибок вашего скрипта по вставке в базу! Анализируй код завершения.. Успехов ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 08:02 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
о, насчет количества строк - это легко можно изменить :) tail -n1 -f test.txt По производительности - у нас tail успевал за весьма интенсивным логом, записи не терялись. Как раз shell скрипты с порождением множетва подпроцессов обычно тормозят, ибо помногу fork()-ают на каждую запись. Конечно, можно много придумать, но tail - это стандартное решение. Часто скрипт надо написать просто быстро и "на коленке" (обычно пишущий такие скрипты - админ и ему уже надо куда-то бежать чего-то конфигурить :-)) "настоящий программист" вообще бы на С написал это наверное :-) P.S. "Пусть расцветают все цветы" - Мао Цзе Дун. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 09:18 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
Я не admin, хотя абсолютно согласен, что для админа tail -f достаточно. Я обычно скриптики клиентам передаю, так что там все тики-тики должно быть. Вредные клиенты иногда попадаются... В данном примере, проблема не в том что tail не успеет, он всегда (почти) успеет. Проблема в том, что загрузчик может не успеть за tail. Хотя на 95% случаев сойдет и _не_красиво_... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 22:24 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
2 Санек, Я уважаю bash (всегда себе его ставлю), но скриптики все же на sh предпочитаю ваять... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 22:26 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
andrushokЯ уважаю bash (всегда себе его ставлю), но скриптики все же на sh предпочитаю ваять... а это не один xрeн? Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 06:53 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
Не один, а два. И не хрен, а ракушка. Shell то бишь =). А чо у Вас там наверчено, я за то не в ответе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 07:24 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
А если на другой машине понадобиться скрипт запускать? Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 09:06 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
авторlrwxrwxrwx 1 root root 4 Янв 12 10:36 /bin/sh -> bash Так только в линухе. Автор вопроса работает в Solaris, для нее bash только дополнительно ставится, из пакетов. А в 2.6 и в пакетах вроде не было, тока скомпилять. Не случайно скрипты всегда на sh. 2andrushok: а как загрузчик может не успеть за tail??? Насколько я в курсе, как работает tail, такого не может произойти. А если не успеет - в чем, по Вашему, это выразится? tail проглотит пустую строку? Но tail смотрит именно на последнбб строку. Насколько я понимаю, tail просто все время читает файл, делая холостой lseek в цикле. (во всяком случае так на сях реализуется). В таком случае это невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 09:41 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
--null-- авторlrwxrwxrwx 1 root root 4 Янв 12 10:36 /bin/sh -> bash Так только в линухе. Автор вопроса работает в Solaris, для нее bash только дополнительно ставится, из пакетов. А в 2.6 и в пакетах вроде не было, тока скомпилять. Не случайно скрипты всегда на sh. Хорошо бы, если б всегда, но в последнее время всё больше появляется умельцев, уверенных, что sh -- это тот же bash, а потому .sh скрипты должны содержать первой строкой #!/bin/bash... ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 09:49 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
DocAl несомненно, я имел в виду системные скрипты и поставляемые с нормальным software ;-) Наверное, внутренний самопал можно на чем угодно делать, если не лень везде поддерживать одну и ту же версию оболочек. У нас был зоопарк: RedHat, SCO Open Server и Solaris8, мы везде ставили bash, но только для удобства интерактивной работы пользователей, а скрипты писать - было железное правило - если shell, то sh, если awk - то обычный awk и т.д. Зато не теряли времени при переносе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 10:05 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
--null--DocAl У нас был зоопарк: RedHat, SCO Open Server и Solaris8, мы везде ставили bash, но только для удобства интерактивной работы пользователей, а скрипты писать - было железное правило - если shell, то sh, если awk - то обычный awk и т.д. Зато не теряли времени при переносе. Ну если bash поставляется со всем этим зоопарком, то проблем с совместимостью быть не должно А возможностей у башика все ж таки поболее чем у стандартного sh. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 11:49 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
2 Нулевой Может Вы и правы, проверять лень. Просто мне лично не нравиться tail -f, вот и все. Как кому-нить голубой цвет не нравится (а кому то нравится, однако). А по поводу шелов всяких, у нас до сих пор солярка с 2.6 стоит. И кады клиенту пишещь - тольки на sh - железное правило. И grep, и awk тольки стандартные... Чо касается и gzip, unzip тоже ни - ни. Вот compress, uncompress - пожелте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 20:39 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
2 Второй Кой-какой в Теле (Толстый, наверно) А каки таки возможности у башика крутые, шо низя через sh реализовать. Я пока токи знаю для bash Код: plaintext 1. для sh Код: plaintext 1. 2. Ну дык переживем, как-нить. Чо-нить ще есть? Я не имею ввиду некие различия в синтаксисе, но если если Вы считаете ЭТО КРУТО (в синтасисе) - приведите примеры пожалста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 20:46 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
andrushok2 Второй Кой-какой в Теле (Толстый, наверно) А каки таки возможности у башика крутые, шо низя через sh реализовать. Я пока токи знаю для bash Код: plaintext 1. для sh Код: plaintext 1. 2. Ну дык переживем, как-нить. Чо-нить ще есть? Я не имею ввиду некие различия в синтаксисе, но если если Вы считаете ЭТО КРУТО (в синтасисе) - приведите примеры пожалста... man bash man sh - в системах где bash не линк на sh Там усе расписано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 21:09 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
Ну а можно таки конкретный пример столь серьёзной пользЫ, чтобы использовать потенциально менее переносимый шелл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2005, 23:15 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
Уважаемый Второй, Какой-То В man посылать, енто как-то на 3 буквы, однако. Невежливо, стало быть (хорошо, что хоть на эти 3 буквы). Тем паче, шо man тупой, разницы между bash и sh все равно не даст. Можно, конечно diff на него напустить, но толку наверно мало будет =). Мы тут, так на заваленке гутарим, у кого какой опыт на сей счет имеется. Так не могли бы Вы своим опытом с честной аудиторией поделиться, шо такого в bash примечательного и ради чего Вы готовы пострадать из-за возможной несовместимости. Милости просим, однако... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2005, 00:34 |
|
||
|
Погогите новичку с шел-скриптом
|
|||
|---|---|---|---|
|
#18+
DocAlНу а можно таки конкретный пример столь серьёзной пользЫ, чтобы использовать потенциально менее переносимый шелл? А че так народ возбудился то? Да не агитирую я за bash. Было упоминание о безвозвратно потерянном на перенос времени. Собственно время надо потратить на установку непосредственно bash - по-моему несколько секунд всего. То есть я просто хотел сказать, что не такая уж это и большая проблема - менее переносимый - пока в основном да (в Линухе нет ), но поставляемый чуть ли не совсеми Юниксами... Но как всегда меня неправильно поняли - вон андрюшок даже хамить чего-то начал - наверное sh очень любит Это конечно не очень серьезно, но мне например удобнее оформить цикл так: Код: plaintext 1. 2. 3. 4. чем так Код: plaintext 1. 2. 3. 4. 5. 6. Вообще у меня только Линуксы, а там везде башик по умолчанию ставится. Когда игрался с FreeBSD 4.5, мне тамошний sh каким-то убоговатым показался. Деталей не помню - давно это было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2005, 00:48 |
|
||
|
|

start [/forum/topic.php?fid=25&msg=32881271&tid=1491057]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
143ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 425ms |

| 0 / 0 |
