Автор Тема: Проблеми с bash скрипт  (Прочетена 6225 пъти)

angie_bg

  • Напреднали
  • *****
  • Публикации: 842
  • Distribution: Ubuntu 10.04
  • Window Manager: Gnome
    • Профил
    • WWW
Проблеми с bash скрипт
« -: Dec 11, 2011, 12:49 »
Здравейте, опитвам се да напиша скрипт (първи опит изобщо), който да прави следното:
1. изключва deluge
2. отмонтира твърдия диск
3. проверява файловата система за грешки
4. монтира диска
5. пуска deluge
За момента скриптът е:
Код:
#!/bin/bash         
killall deluge
umount /dev/sdc1
fsck -y /dev/sdc1
mount /dev/sdc1
/usr/bin/deluge
Проблем възниква още на първия ред:
Цитат
deluge: no process found
От друга страна:
Цитат
angie@angie-desktop:~$ ps ax |grep deluge
11714 pts/0    Z      1:31 [/usr/bin/deluge] <defunct>
11928 ?        Rl     2:16 /usr/bin/python /usr/bin/deluge-gtk
12022 pts/0    S+     0:00 grep --color=auto deluge
Правата на скрипта са:
Цитат
-rwxr-xr-x 1 angie angie 113 2011-12-11 12:12 torrent.sh
Въпросите:
1. къде греша и защо процесът не се открива?
2. трябва ли да сменя правата/собственика на скрипта, за да може да се изпълнява чрез cron?
Благодаря!
Активен

Intel

  • Гост
Re: Проблеми с bash скрипт
« Отговор #1 -: Dec 11, 2011, 12:53 »
Добави пълния път до deluge, но не съм сигурен, че скрипта ти е изобщо скрипт. Това е все едно на perl-ски само system system system system....това са последователни команди и никаква вложена друга мисъл, не съм много веж в тази област, но си мисля, че алгоритъма като цяло го няма. if-вете ти къде са?
« Последна редакция: Dec 11, 2011, 13:13 от Intel »
Активен

angie_bg

  • Напреднали
  • *****
  • Публикации: 842
  • Distribution: Ubuntu 10.04
  • Window Manager: Gnome
    • Профил
    • WWW
Re: Проблеми с bash скрипт
« Отговор #2 -: Dec 11, 2011, 13:18 »
Няма if-ове, защото не са нужни. Това трябва да се пуска да речем един път в денонощието, тъй като твърдия ми диск има грешки. В момента го правя на ръка, но понякога ме няма понякога 2-3 дни вкъщи и това е загубено време, през което компът работи напразно. Ако сменя пътя с /usr/bin/delug ефектът е същият, т.е. никакъв.
Активен

stan_25

  • Напреднали
  • *****
  • Публикации: 66
    • Профил
Re: Проблеми с bash скрипт
« Отговор #3 -: Dec 11, 2011, 13:27 »
Грешката да не е заради това че процеса за убиване трябва да е deluge-gtk, а не deluge?
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Проблеми с bash скрипт
« Отговор #4 -: Dec 11, 2011, 13:28 »
Грешката да не е заради това че процеса за убиване трябва да е deluge-gtk, а не deluge?

+1, изпревари ме.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

angie_bg

  • Напреднали
  • *****
  • Публикации: 842
  • Distribution: Ubuntu 10.04
  • Window Manager: Gnome
    • Профил
    • WWW
Re: Проблеми с bash скрипт
« Отговор #5 -: Dec 11, 2011, 13:43 »
И така пробвах - нищо. Като извикам System monitor се вижда само един процес:
Активен

angie_bg

  • Напреднали
  • *****
  • Публикации: 842
  • Distribution: Ubuntu 10.04
  • Window Manager: Gnome
    • Профил
    • WWW
Re: Проблеми с bash скрипт
« Отговор #6 -: Dec 11, 2011, 13:46 »
картинката
Активен

stan_25

  • Напреднали
  • *****
  • Публикации: 66
    • Профил
Re: Проблеми с bash скрипт
« Отговор #7 -: Dec 11, 2011, 15:11 »
Значи като неможеш да убиеш делугето по име пробвай чрез номера на самия процес (PID)

Замени killall deluge с

Код:
ps -A | grep deluge | kill -9 `awk '{print $1}'`
Активен

angie_bg

  • Напреднали
  • *****
  • Публикации: 842
  • Distribution: Ubuntu 10.04
  • Window Manager: Gnome
    • Профил
    • WWW
Re: Проблеми с bash скрипт
« Отговор #8 -: Dec 11, 2011, 19:16 »
Благодаря, така "убихме" торента и проблемът се прехвърли на втория ред:
Цитат
umount: /media/W1: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
fsck from util-linux-ng 2.17.2
e2fsck 1.41.11 (14-Mar-2010)
/dev/sdc1 is mounted. 
lsof и fuser не ми дадоха нищо полезно като информация
Активен

stan_25

  • Напреднали
  • *****
  • Публикации: 66
    • Профил
Re: Проблеми с bash скрипт
« Отговор #9 -: Dec 11, 2011, 19:21 »
Не съм много по скриптовете и аз, но се поразмислих и ако греша някъде, нека да ме поправят останалите.

Основната ти цел е да демонтираш даден дял за да извършиш проверка на него. Така за целта трябва да се убият всички процеси които ползват въпросния дял, иначе няма да може да се демонтира. Хубаво спираш deluge-то, но това ли единствения процес който ползва дяла? Ако се окаже че по времето на изпълнението на скрипта работи и друг процес, тогава дяла няма да се демонтира, скрипта ще изплюе грешка и спира. Значи трябва да се намери по-подходящо решение от горното. Трябва да се открият всички процеси след което да се спрат. Чрез lsof /dev/sdc1 може да изкараш списък с всички процеси които ползват дяла /dev/sdc1 след което в комбинация с kill да ги терминираш. После си изпълняваш останалите операции. Ето как ще иглежда и скрипта за целта.

Код:
#!/bin/bash         
lsof /dev/sdc1 | kill -9 `awk 'FNR>1''{print $2}'`
umount /dev/sdc1
fsck -y /dev/sdc1
mount /dev/sdc1
/usr/bin/deluge

пс: angie_bg това го писах по същото време с твоя последен пост :)
« Последна редакция: Dec 11, 2011, 19:25 от stan_25 »
Активен

angie_bg

  • Напреднали
  • *****
  • Публикации: 842
  • Distribution: Ubuntu 10.04
  • Window Manager: Gnome
    • Профил
    • WWW
Re: Проблеми с bash скрипт
« Отговор #10 -: Dec 11, 2011, 19:33 »
@стан, благодаря за скрипта. Дискът не се използва от друг процес (поне съзнателно пуснат от мен), но ще модифицирам скрипта според последните ти поправки.
Май всичко тръгна: засега се оказва, че има значение как е пуснат deluge: ако е стартиран през конзолата - скриптът тръгва, ако е стартиран от менюто Applications > Internet > deluge - дори да се убие процеса, не може да се отмонтира диска.
Ще го наблюдавам няколко дни и тогава ще отбележа проблема като решен.
Активен

stan_25

  • Напреднали
  • *****
  • Публикации: 66
    • Профил
Re: Проблеми с bash скрипт
« Отговор #11 -: Dec 11, 2011, 20:17 »
Май всичко тръгна: засега се оказва, че има значение как е пуснат deluge: ако е стартиран през конзолата - скриптът тръгва, ако е стартиран от менюто Applications > Internet > deluge - дори да се убие процеса, не може да се отмонтира диска.

Дам... Мисля че намерих решение и на този проблем. Просто демонтирането на дяла трябва да се забави след като се убият процесите. Ето новото ми предложение.

Код:
#!/bin/bash         
lsof /dev/sdc1 | kill -9 `awk 'FNR>1''{print $2}'`
sleep 2
umount /dev/sdc1
fsck -y /dev/sdc1
mount /dev/sdc1
/usr/bin/deluge

Командата sleep осигурява забавянето а числото след нея са секундите на забавяне. В случая убива процесите, изчаква 2 сек и тогава демонтира диска. Тествай и ако се налага увеличи паузата.
« Последна редакция: Dec 11, 2011, 20:19 от stan_25 »
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Проблеми с bash скрипт
« Отговор #12 -: Dec 11, 2011, 20:20 »
//off

Имам един много тъп въпрос: при положение, че диска ти се скапва, защо продължаваш да го мъчиш с тия торенти? Само не ми казвах, че гониш рейтинг?
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

vox

  • Напреднали
  • *****
  • Публикации: 147
  • Distribution: HP-UX, Solaris, AIX
  • Window Manager: console only
  • #!/bin/ksh
    • Профил
Re: Проблеми с bash скрипт
« Отговор #13 -: Dec 11, 2011, 20:45 »
+1 за b2l , рейтинга се осребрява в края на месеца :)
Активен

No Windows, no Gates only apache inside

solarflux

  • Напреднали
  • *****
  • Публикации: 100
    • Профил
Re: Проблеми с bash скрипт
« Отговор #14 -: Dec 12, 2011, 00:16 »
можеш да замениш целия първи ред с
fuser -km /mountpoint_of_sdc1

Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
BASH: Как да поддържам една програма работеща
Общ форум
Regia 1 10825 Последна публикация Feb 16, 2005, 08:51
от
bash
Настройка на програми
tuxi 7 6444 Последна публикация Jun 11, 2005, 19:12
от tuxi
Моля за малко помощ за BASH
Настройка на програми
bonbon 3 5068 Последна публикация Dec 04, 2005, 16:37
от bonbon
BASH
Общ форум
Dean79 3 5184 Последна публикация Jan 13, 2006, 00:24
от Dean79
Bash присвояване на стойност от файл
Общ форум
Pulear 6 6014 Последна публикация May 21, 2006, 17:20
от Pulear