Титла: как да получа времето на стартиране на процес Публикувано от: vstoykov в Jul 23, 2008, 21:52 Използвам wput за качване на файлове. Написал съм скрипт, който да качва всички файлове от текущата директория и да повтаря качването, ако не е било успешно. Проблемът е, че понякога wput забива и не предава изпълнение на скрипта, който го е извикал докато не се прекрати (killall wput).
Идеята ми е, на всеки 5 минути да се пуска чрез crond една програма, която да проверява за забили процеси wput и да ги убива (за да може да се стартират отново). Но за целта ми трябва времето на стартиране на даден процес. Как мога да го получа? Ето това е скрипта за сигурно качване: wput_всички_обекти_от_ТЕКУЩАТА_директория_един_по_един.bash
Титла: как да получа времето на стартиране на процес Публикувано от: Nikolavp в Jul 23, 2008, 22:49 Не разбрах какво искаш да постигнеш и кое точно време искаш. Ако е времето на стартиране на процеса, както си описал можеш да го вземеш с
P.S. По интересно е защо wput забива ![]() ![]() Титла: как да получа времето на стартиране на процес Публикувано от: vstoykov в Jul 24, 2008, 07:15 Благодаря за кода. Това с awk е интересно - аз нямаше да се сетя да го направя така - щях да ползвам
и една допълнителна програма crunch, която е взета от инсталатора на Slackware:
Да, по-интересно е да се разбере защо wput забива, но трябва да се чете доста изходен код ![]() По-лесно става като се стартира отново ![]() Обикновено се наблюдава когато качвам файл на някой безплатен хостинг и връзката се наруши поради някаква причина (струва ми се, че е при точно определена грешка, но не мога да го докажа). Ползвам версия 0.6, която не е последната. Титла: как да получа времето на стартиране на процес Публикувано от: vstoykov в Jul 24, 2008, 07:29 Трябва да се добави и
за да не се получи взимане на времето на grep:
Получава се:
Титла: как да получа времето на стартиране на процес Публикувано от: gat3way в Jul 24, 2008, 11:01 Какво значи "забива" ?
Може ли да видя как ps показва един "забил" процес? Също така дали можеш да пуснеш strace -f -p pida_na_zabilia_proces и да пейстнеш резултата? Титла: как да получа времето на стартиране на процес Публикувано от: vstoykov в Aug 04, 2008, 20:07 В случая под "забил" имам предвид да не извежда нищо на монитора и да не прекратява изпълнението си за неограничено дълго време.
Ще се опитам да издебна един такъв процес. Титла: как да получа времето на стартиране на процес Публикувано от: vstoykov в Aug 04, 2008, 20:45 Скрипта е готов - настрох crond да го пуска на всеки 5 минути:
Може би трябва да заменя "kill $k" с "killall wput" - така няма да има риск някой друг процес със същия номер да бъде убит (съществува вероятност процесът да приключи изпълнение и някой друг да се стартира със същия номер?). Титла: как да получа времето на стартиране на процес Публикувано от: tarator в Aug 04, 2008, 22:09 vstoykov,
Честно казано решението не ми харесва. Какво ще стане ако решиш да използваш wput да копираш огромен файл някъде, забравяйки че имаш скрипт, който убива всички wputs които са работили повече от 5 минути? Аз бих променил първоначалния скрипт да запазва pid-а на пуснатия wput някъде (a защо не и времето на пускане в нещо по-човешко като секундите от началото на епохата например?) и съответно cronjob-a да използва този pid за да реши дали и кога да убие процеса. Всъщност не бих използвал изобщо допълнителен cronjob, а бих пуснал wput в background и бих направил оригиналния скрипт да проверява от време на време дали wput e завършил. |