Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: [HOWTO] Пишем bash скрипты  (Прочитано 220614 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Spoofi

  • Новичок
  • *
  • Сообщений: 5
  • Власть пингвинам! :)
    • Просмотр профиля
    • Блог об интернете
Re: HOWTO: Пишем bash скрипты
« Ответ #75 : 14 Июня 2010, 21:09:33 »
Спасибо за кучку полезных ссылок, очень помогли (:
ASUS EeePC 1000h: Ubuntu 10.04 LTS

Оффлайн Ariec

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #76 : 28 Июля 2010, 18:37:51 »
Привет всем. Вопрос:
Как окончить выполнение скрипта, если комп переходит в ждущий режим? В арче нашел как при переходе в ждущий режим выполнять определенную команду (написал killall bash), и теперь киляются все мои скрипты. А хотелось бы один единственный  :)

UPD: Мысли в слух:
думаю, можно при переходе в ждущий писать в какой-нибудь файл 1, а при выходе писать 0. А скриптом опрашивать этот файл... Но получается огород + нужно будет ну очень часто проверять этот файл => нагрузка на проц и винчестер...
« Последнее редактирование: 28 Июля 2010, 20:07:48 от Ariec »

Оффлайн pe1ro

  • Участник
  • *
  • Сообщений: 123
  • xubuntu 9.10
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #77 : 29 Июля 2010, 02:30:39 »
ну у процесса есть несколь свойств. Есть его имя, pid (по сути порядковый номер), его полный адресс.
Кто вам подсказал убивать баш? Как вы дошли до такой жизни? Нет, не отвечайте (это неважно, я скорблю вместе с вами).

Вам нужно убить процесс, ок, убейте его
killall имя_скрипта

Оффлайн Ariec

  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #78 : 29 Июля 2010, 11:53:53 »
Сам додумался  ;D
 bash 1.bash
Выполнение...
После чего
killall 1.bash
1.bash: процесс не найден
Может я его не так киляю?  :-[
Поэтому соорудил монстроузную конструкцию))) В основной скрипт добавил
#!/bin/bash
...
echo $BASHPID > 1.bash_pid #записываем pid текущего скрипта в файл
...
И при переходе в ждущий выполняю следующее:
#!/bin/bash
#Скрипт убийства скрипта 1.bash =)
pid=$(cat /home/oleg/scripts/1.bash_pid)        #читаем pid убиваемого скрипта
kill $pid                                       #убиваем скрипт с этим pid

Оффлайн mouserok

  • Активист
  • *
  • Сообщений: 326
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #79 : 30 Сентября 2010, 15:18:25 »
вычитывание строк из файла с помощью (bash)sh срипта

если запустить
stat -c %i /home
stat -c %i /home/user

получим
4567
15877

мне эти числа нужно далее подставить в  строку типа echo 4567, 15877-------------------------------------------------------------------------
нужно вычитать из файла dirs.ini строки ... в файле будут строки
/home
/home/user

которые в дальнейшем можно было запустить с командой stat -c %i
и полученное значения использовать в коммандной строке echo 4567, 15877

Оффлайн Adagumer

  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #80 : 01 Октября 2010, 22:33:24 »
В скрипте  запущенном в терминале вызывается программа которая выводит в терминал свои данные , нужно  открыть вторую  вкладку терминала и через заданный промежуток времени запустить еще одну программу , которая будет тоже будет выводить свои данные. Как мне составить такой замысловатый код ??

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #81 : 04 Октября 2010, 09:17:44 »
Я что-то подобное где-то писал. Сходу не нашел. Там были манипуляции в профилях гном-терминалов.
Вот другой вариант (их на самом деле море).

Команда tty выводит текущий терминал.
Вызываемому скрипту можно в качестве параметра передать вывод tty.
А в вызываемом скрипте делать в него вывод.
« Последнее редактирование: 04 Октября 2010, 09:20:08 от alexander.pronin »

Оффлайн mouserok

  • Активист
  • *
  • Сообщений: 326
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #82 : 08 Октября 2010, 22:41:07 »
помогите с последними двумя командами

ping IP -c3
if [ $? -ne 0 ]
then
ifconfig wlan0 down
ifconfig wlan0 up
else
ждать 1 сек
перейти в начало
fi

Оффлайн pe1ro

  • Участник
  • *
  • Сообщений: 123
  • xubuntu 9.10
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #83 : 09 Октября 2010, 19:55:48 »
ждать - sleep
sleep 1
Теперь что касается возвращению к началу. Завершите скрипт не командой exit 0, а командой exec "адрес_вашего_скрипта"

Строчку с пингом можно упростить до
if ping IP -c 3Дело в том, что пинг завершается с кодом 1, если не может пингануть адресс, что и проверяет if по умолчанию. Я бы кстати ещё подавил выход.

Но сам скрипт... Вы хотите постоянно в фоновом режиме пинговать кого-то?
« Последнее редактирование: 09 Октября 2010, 20:07:21 от pe1ro »

Оффлайн mouserok

  • Активист
  • *
  • Сообщений: 326
    • Просмотр профиля
Re: HOWTO: Пишем bash скрипты
« Ответ #84 : 09 Октября 2010, 20:14:47 »
Цитировать
Но сам скрипт... Вы хотите постоянно в фоновом режиме пинговать кого-то
связь WiFi почему-то обрывается в логах нашел только No active IBSS STAs - trying to scan for other IBSS networks with same SSID (merge)
что-то на подобии goto в SH нету ???

Оффлайн talifero

  • Участник
  • *
  • Сообщений: 181
    • Просмотр профиля
Re: [HOWTO] Пишем bash скрипты
« Ответ #85 : 16 Октября 2010, 16:34:26 »
Goto пережиток прошлого, его из всех языков удалили  :)
Если нужен цикл рекомендуется использовать for

#!/bin/bash
for (( ; ; ))
do
   echo "infinite loops [ hit CTRL+C to stop]"
done

бесконечный  цикл

Пользователь решил продолжить мысль 16 Октября 2010, 16:49:36:
Кстати, ерунда какая. Вот так работает,
tar -acf vilnius_scenery.tar.gz FlightGearа вот так нет.
tar -cfa vilnius_scenery.tar.gz FlightGear
« Последнее редактирование: 16 Октября 2010, 16:49:36 от talifero »

Оффлайн Polkan

  • Участник
  • *
  • Сообщений: 124
    • Просмотр профиля
Re: [HOWTO] Пишем bash скрипты
« Ответ #86 : 18 Октября 2010, 12:54:30 »
Кстати, ерунда какая. Вот так работает,
tar -acf vilnius_scenery.tar.gz FlightGearа вот так нет.
tar -cfa vilnius_scenery.tar.gz FlightGear
Потому что -f - ключ задающий имя файла. т.е. после него должно быть имя файла, а не что-то другое (например другие ключи)
так будет работать:
tar -cf vilnius_scenery.tar.gz -a FlightGear

Оффлайн D1ablo

  • Новичок
  • *
  • Сообщений: 25
  • Develop
    • Просмотр профиля
    • D1ablo.ru
Re: [HOWTO] Пишем bash скрипты
« Ответ #87 : 23 Октября 2010, 01:40:35 »
Нужен скрипт который будет искать в определенной папке файл в названии которого содержится 720p. и удалять его. Записать этот скрипт в крон, чтобы крон запусках скрипт каждую секунду.
По поводу скрипта вопрос снят find . -iname "*720p*" -exec rm {} \;. Подскажите по поводу крон
« Последнее редактирование: 23 Октября 2010, 08:57:55 от D1ablo »

Оффлайн antaeus

  • Участник
  • *
  • Сообщений: 140
    • Просмотр профиля
Re: [HOWTO] Пишем bash скрипты
« Ответ #88 : 23 Октября 2010, 10:23:33 »
Подскажите по поводу крон
в /etc/crontab записываешь

Цитировать
*/1   *         *   *   *     root       /путь/до/скрипта

будет раз в минуту т.к. крон не умеет запускать скрипты раз в секунду, потому что это противоречит здравой логике.
успеет твой скрипт отработать за секунду?



Оффлайн 32reg

  • Участник
  • *
  • Сообщений: 122
    • Просмотр профиля
    • Linux32.ru
Re: [HOWTO] Пишем bash скрипты
« Ответ #89 : 09 Ноября 2010, 13:45:40 »
Подскажите как сделать скрипт который бы открывал нужный (текстовый) файл, искал определенные слова в нем и заменял их на другие, а потом закрывал этот файл с сохранением изменений?
www.linux32.ru - новости и статьи о Linux

 

Страница сгенерирована за 0.067 секунд. Запросов: 25.