Титла: Проблеми с bash скрипт Публикувано от: angie_bg в Dec 11, 2011, 12:49 Здравейте, опитвам се да напиша скрипт (първи опит изобщо), който да прави следното:
1. изключва deluge 2. отмонтира твърдия диск 3. проверява файловата система за грешки 4. монтира диска 5. пуска deluge За момента скриптът е: Код: #!/bin/bash Цитат deluge: no process foundОт друга страна: Цитат angie@angie-desktop:~$ ps ax |grep delugeПравата на скрипта са: Цитат -rwxr-xr-x 1 angie angie 113 2011-12-11 12:12 torrent.shВъпросите: 1. къде греша и защо процесът не се открива? 2. трябва ли да сменя правата/собственика на скрипта, за да може да се изпълнява чрез cron? Благодаря! Титла: Re: Проблеми с bash скрипт Публикувано от: Intel в Dec 11, 2011, 12:53 Добави пълния път до deluge, но не съм сигурен, че скрипта ти е изобщо скрипт. Това е все едно на perl-ски само system system system system....това са последователни команди и никаква вложена друга мисъл, не съм много веж в тази област, но си мисля, че алгоритъма като цяло го няма. if-вете ти къде са?
Титла: Re: Проблеми с bash скрипт Публикувано от: angie_bg в Dec 11, 2011, 13:18 Няма if-ове, защото не са нужни. Това трябва да се пуска да речем един път в денонощието, тъй като твърдия ми диск има грешки. В момента го правя на ръка, но понякога ме няма понякога 2-3 дни вкъщи и това е загубено време, през което компът работи напразно. Ако сменя пътя с /usr/bin/delug ефектът е същият, т.е. никакъв.
Титла: Re: Проблеми с bash скрипт Публикувано от: stan_25 в Dec 11, 2011, 13:27 Грешката да не е заради това че процеса за убиване трябва да е deluge-gtk, а не deluge?
Титла: Re: Проблеми с bash скрипт Публикувано от: b2l в Dec 11, 2011, 13:28 Грешката да не е заради това че процеса за убиване трябва да е deluge-gtk, а не deluge? +1, изпревари ме. Титла: Re: Проблеми с bash скрипт Публикувано от: angie_bg в Dec 11, 2011, 13:43 И така пробвах - нищо. Като извикам System monitor се вижда само един процес:
(http://www.linux-bg.org/home/angie/Desktop/S2.png) Титла: Re: Проблеми с bash скрипт Публикувано от: angie_bg в Dec 11, 2011, 13:46 картинката
Титла: Re: Проблеми с bash скрипт Публикувано от: stan_25 в Dec 11, 2011, 15:11 Значи като неможеш да убиеш делугето по име пробвай чрез номера на самия процес (PID)
Замени killall deluge с Код: ps -A | grep deluge | kill -9 `awk '{print $1}'` Титла: Re: Проблеми с bash скрипт Публикувано от: angie_bg в Dec 11, 2011, 19:16 Благодаря, така "убихме" торента и проблемът се прехвърли на втория ред:
Цитат umount: /media/W1: device is busy.lsof и fuser не ми дадоха нищо полезно като информация Титла: Re: Проблеми с bash скрипт Публикувано от: stan_25 в Dec 11, 2011, 19:21 Не съм много по скриптовете и аз, но се поразмислих и ако греша някъде, нека да ме поправят останалите.
Основната ти цел е да демонтираш даден дял за да извършиш проверка на него. Така за целта трябва да се убият всички процеси които ползват въпросния дял, иначе няма да може да се демонтира. Хубаво спираш deluge-то, но това ли единствения процес който ползва дяла? Ако се окаже че по времето на изпълнението на скрипта работи и друг процес, тогава дяла няма да се демонтира, скрипта ще изплюе грешка и спира. Значи трябва да се намери по-подходящо решение от горното. Трябва да се открият всички процеси след което да се спрат. Чрез lsof /dev/sdc1 може да изкараш списък с всички процеси които ползват дяла /dev/sdc1 след което в комбинация с kill да ги терминираш. После си изпълняваш останалите операции. Ето как ще иглежда и скрипта за целта. Код: #!/bin/bash пс: angie_bg това го писах по същото време с твоя последен пост :) Титла: Re: Проблеми с bash скрипт Публикувано от: angie_bg в Dec 11, 2011, 19:33 @стан, благодаря за скрипта. Дискът не се използва от друг процес (поне съзнателно пуснат от мен), но ще модифицирам скрипта според последните ти поправки.
Май всичко тръгна: засега се оказва, че има значение как е пуснат deluge: ако е стартиран през конзолата - скриптът тръгва, ако е стартиран от менюто Applications > Internet > deluge - дори да се убие процеса, не може да се отмонтира диска. Ще го наблюдавам няколко дни и тогава ще отбележа проблема като решен. Титла: Re: Проблеми с bash скрипт Публикувано от: stan_25 в Dec 11, 2011, 20:17 Май всичко тръгна: засега се оказва, че има значение как е пуснат deluge: ако е стартиран през конзолата - скриптът тръгва, ако е стартиран от менюто Applications > Internet > deluge - дори да се убие процеса, не може да се отмонтира диска. Дам... Мисля че намерих решение и на този проблем. Просто демонтирането на дяла трябва да се забави след като се убият процесите. Ето новото ми предложение. Код: #!/bin/bash Командата sleep осигурява забавянето а числото след нея са секундите на забавяне. В случая убива процесите, изчаква 2 сек и тогава демонтира диска. Тествай и ако се налага увеличи паузата. Титла: Re: Проблеми с bash скрипт Публикувано от: b2l в Dec 11, 2011, 20:20 //off
Имам един много тъп въпрос: при положение, че диска ти се скапва, защо продължаваш да го мъчиш с тия торенти? Само не ми казвах, че гониш рейтинг? Титла: Re: Проблеми с bash скрипт Публикувано от: vox в Dec 11, 2011, 20:45 +1 за b2l , рейтинга се осребрява в края на месеца :)
Титла: Re: Проблеми с bash скрипт Публикувано от: solarflux в Dec 12, 2011, 00:16 можеш да замениш целия първи ред с
fuser -km /mountpoint_of_sdc1 Титла: Re: Проблеми с bash скрипт Публикувано от: shoshon в Dec 12, 2011, 00:56 можеш да замениш целия първи ред с Ама той човека не иска да освободи файловата система от процеси, иска да отрепе делугето щото му е сърдит дето му скапва диска Не. че делугето скапва диска, ама... Не, че А бе радвам се че си дал единствения правилен отговор! Титла: Re: Проблеми с bash скрипт Публикувано от: angie_bg в Dec 12, 2011, 09:02 Цитат //off//on Защото ми е жал да хвърля 1ТВ диск (все пак от него 4/5 са относително здрави). Фирменият софтуер на WD отказва да работи - явно е решил, че дискът е за хвърляне. И все пак... използвам го за буферен диск - при първа възможност прехвърлям записаното на подложки или на друг диск. Титла: Re: Проблеми с bash скрипт Публикувано от: bop_bop_mara в Dec 12, 2011, 16:53 А Deluge демонизирано ли го пускаш?
Титла: Re: Проблеми с bash скрипт Публикувано от: angie_bg в Dec 14, 2011, 19:35 Цитат А Deluge демонизирано ли го пускаш?Освен, че работи като енергиен и емоционален вампир - не, май не. За първи път съм го стартирал от менюто, а след това тръгва като съхранена сесия. Не е включено в някакъв стартиращ скрипт при запуск на машината. Титла: Re: Проблеми с bash скрипт Публикувано от: bop_bop_mara в Dec 14, 2011, 19:57 Няма ли да е по-удобно да го пускаш като демон (deluged) и да си върви, пък като ти потрябва да си го цъкаш, да си пускаш и графичния интерфейс?
Титла: Re: Проблеми с bash скрипт Публикувано от: angie_bg в Dec 16, 2011, 07:27 Цитат Няма ли да е по-удобно да го пускаш като демон (deluged)Кое е по-удобното? Нямам опит и съответно мнение. Другият проблем, който не съм решил е следният: deluge спира, дискът се отмонтира, но не може да се монтира (като потребител), защото няма съответен запис във fstab. Мога да добавя запис, но в момента дискът е sdc1, а като го сложа на друг порт ще има друга буква. Ако го монтирам по uuid няма значение портът, но не съм сигурен при последващо форматиране дали няма да се промени uuid и съответно да се налага промяна във fstab. Направи ми впечатление още нещо: при добавяне на задачата излиза предупреждение, че скриптът ще се стартира от домашната ми директория (той е там), но според bash ръководствата трябва да може да се стартира с ./torrent.sh. Да, ама не - получавам съобщение, че нямам права за изпълнение (независимо дали съм потребител или root). Ако го стартирам с bash torrent.sh - тръгва. Защо е така? Коя от командите трябва да е в кронтаба - само "torrent.sh" или "bash torrent.sh"? Титла: Re: Проблеми с bash скрипт Публикувано от: bop_bop_mara в Dec 16, 2011, 08:59 Цитат Кое е по-удобното? Нямам опит и съответно мнение.Ъм, така, както го пускаш, не се ли отваря и прозорец с програмата? (Може да бъркам...) Цитат според bash ръководствата трябва да може да се стартира с ./torrent.sh Така се стартира, ако е в текущата директория и има вдигнато x (execute) право: Код По принцип уж root има права за всичко, но за x правото на файл май се иска да е вдигнато поне за някой от user, group или others. Цитат Коя от командите трябва да е в кронтаба - само "torrent.sh" или "bash torrent.sh"Ако вдигнеш x правото, няма значение, равносилни са (ако не го вдигнеш, ясно, че само работещата :)). Титла: Re: Проблеми с bash скрипт Публикувано от: angie_bg в Dec 16, 2011, 17:09 Цитат не се ли отваря и прозорец с програмата?Отваря се, но не ми е пречил досега. Цитат ако е в текущата директория и има вдигнато x (execute) право:в текущата директория (/home/angie) и правата са rwх за всички - собственик, група и др. Но стартира само с "bash", а не с "./" - иначе дава съобщение за грешка. Сега не съм при компа, но утре следобед бих могъл да приложа картинка Титла: Re: Проблеми с bash скрипт Публикувано от: bop_bop_mara в Dec 16, 2011, 17:29 в текущата директория (/home/angie) и правата са rwх за всички - собственик, група и др. Но стартира само с "bash", а не с "./" - иначе дава съобщение за грешкаТова и от терминал като го пускаш, или само от cron, че не разбрах? По принцип в crontab не се ли слага пълен път до скриптовете? Отваря се, но не ми е пречил досега.Ако е като демон, може да си върви на машината, без да се налага да има отворен прозорец, без дори да трябва графична среда, достатъчно е просто да е заредена ОС. При мен е така - мога да пусна демона и да го оставя да си работи (ъплоудва основно), а чак като ми дотрябва да управлявам торентите, пускам и графичния клиент, който се връзва към демона. Отделно, че по този начин мога и с графичен клиент от друг компютър да се вържа към демона и да му кажа какво да свали или махне от моя. А самият демон също мога да си го пускам и спирам когато си реша. Ти си преценяш, разбира се, просто такъв вариант ми се струва пасващ на нещата, които правиш (доколкото разбрах правиш точно това - пускаш торента и го оставяш да си работи). Иначе, ако отваряш графично приложение от скрипта, струва ми се, че е добре да настройваш и променливата DISPLAY. Титла: Re: Проблеми с bash скрипт Публикувано от: angie_bg в Dec 17, 2011, 12:19 Цитат Това и от терминал като го пускаш, или само от cron, че не разбрах?Би трябвало да е от cron, но за да го видя дали работи го пускам от терминал. (http://store.picbg.net/pubpic/A2/72/5673db8cb681a272.png) Както виждаш скриптът има всички права, но при стартиране с "./" не тръгва нито като потребител, нито като администратор. Тръгва само с "bash torrent.sh". Следващият проблем е при монтирането след проверката: липсващ запис в fstab или mtab. При стартиране на компа, дискът се монтира автоматично в папка W1 (какъвто е етикетът на диска) в /media. Ако има запис в fstab и предварително създадена директория /media/W1, при стартиране се създава и дискът се монтира във W1_, a файловете започват да се свалят наново в /media/W1, а не в новосъздадената /media/W1_. Вариантът да се включва диска след стартиране на системата за момента не ме устройва. Цитат По принцип в crontab не се ли слага пълен път до скриптовете?Според съобщението , което получавам, не би трябвало пътят да е пълен, ако скриптът е в домашната директория. Сега съм въвел целият път, но същото съобшение се появява и без да съм го описал.(http://store.picbg.net/pubpic/78/4C/2e25124f5d5f784c.png) Цитат ...а чак като ми дотрябва да управлявам торентите, пускам и графичния клиентКаква комбинация демон+клиент ползваш (мисля да пусна един стар комп без Х, който да се занимава предимно с торентите)? Титла: Re: Проблеми с bash скрипт Публикувано от: radoshow в Dec 17, 2011, 17:14 @angie_bg Пробвай да стартираш по този начин скрипта:
Код
|