Отговори на тема  [ 123 мнения ]  Отиди на страница Предишна  1 ... 5, 6, 7, 8, 9  Следваща
Ubuntu / Debian 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение Re: Ubuntu / Debian
То класическия вариант е с lock файл, обаче не ме радва, че ако ми умре процеса файла ще остане - тогава пък става една... за девайс, който може да не види ресет със седмици е лошо. Освен да сложа пък някой, който да забърсва файловете с pid, който липсва в момента. От друга страна тъй като разните приложения в по-голямата си част, но не винаги, се явяват в thread на друго приложение знам ли какво ще се получи?
Това което предлагаш е друг вариант, обаче той си е по същество приложение, не разбрах как да направя същото от C код (т.е. сега търся). Но май там подводни камъни имаше някакви. Нещо като:

Цитат:
fuser cannot report on any processes that it doesn't have permission to look at the file descriptor table for.


В случая като root няма какво да ми се опре, но все пак не може да няма по-читаво решение?
Има ли начин да се създаде lock файл, който автоматично да бъде изчистен, когато създаващото го приложение изчезне поради някаква причина?


Пон Сеп 23, 2013 3:29 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: Ubuntu / Debian
http://stackoverflow.com/questions/3568 ... semaphores
мисля, че проблема най добре се решава с твой си шаред семафор

_________________
Мразя да мразя ...


Пон Сеп 23, 2013 5:24 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение Re: Ubuntu / Debian
Какво ще кажеш за flock? Че така го написах, но утре ще го пробвам. Има ли подводен камък при условие, че приложенията са стартирани през thread-ове на един процес и то като root? Остави другото, ами е и "безсмъртен" (от inittab-а)...
Баси, това като го написах и се замислих дали не съм объркал тотално концепцията, ама късно :D


Пон Сеп 23, 2013 5:35 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение Re: Ubuntu / Debian
На мен ми се струва странно, че можеш да стартираш две копия на една и съща програма като root и двете да могат едновременно да отворят и работят например с /dev/ttyS0. Не съм го пробвал да видя какво ще се получи, но все си мисля, че би трябвало да ти върне грешка, когато второто копие се опита да отвори вече отворения /dev/ttyS0. Довечера ще пусна две копия на moserial като root да видя какво ще стане.

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Пон Сеп 23, 2013 6:21 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение Re: Ubuntu / Debian
Всъщност това си е концепция в линукса - файла си е файл и щом ти е разрешено - можеш да го правиш каквото си решиш едновременно от две-три-Н места. Стига да имаш права. А де факто руута няма кой да го спре. То и за това ги има всичките тия лок-ове. Просто така е направено за разлика от бозата, където кой хванал първи той работи. Ако е просто потребител мисля има опция да поиска от девайса да бъде заключен към него, докато го освободи - това ще важи за другите потребители, но руута отново минава метър и не му пука за тая опция. По дефоулт обаче всички могат да работят едновременно с девайса. Сещаш се до какво води.


Пон Сеп 23, 2013 9:17 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение Re: Ubuntu / Debian
А защо трябва непременно програмата ти да работи като root ? Защо не е с обикновенни потребителски права ?

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Пон Сеп 23, 2013 9:40 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение Re: Ubuntu / Debian
Е, така се наложи, прави някакви неща, за които ми трябва root-а... Пък и не съм сигурен, че има начин приложение стартирано от inittab (за да е безсмъртно) да бъде с нещо различно от root права. Или греша?


Пон Сеп 23, 2013 10:01 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: Ubuntu / Debian
Е ти като си руут винаги можеш да стартираш процес от името на някой юзер. Друг е въпроса дали по това време вече можеш да сменяш юзери. А защо ти се налага да синхронизираш 2 процеса? т.е. какво пречи да го направиш всичко в един процес където имаш повечко механизми за синхронизация - рестартираш ли го? какво? тя и нишка се рестартира :)

_________________
Мразя да мразя ...


Пон Сеп 23, 2013 10:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение Re: Ubuntu / Debian
@palavrov, би ли подсказал как се стартира процес от името на друг юзър? Стана ми интересно... Точно сега надали, но ще да е полезно.
Е, те са по същество отделни приложения, всяко може да се вика от различно място, за да направи нещо. Някой от тях ползват серийния порт за обмен на данни с някой отвън. Почти всички трябва да се викат периодично, за да си вършат работата. Викането им е асинхронно, всяко на някакъв си интервал, който отговаря на задачата му. Наредил съм си ги като лист с приоритети и време между извикванията им + аргументи и си ги викам от едно безсмъртно приложение като отделни нишки - всяко си върши работата, докладва на това приложение успешно или не, и дали иска да бъде извикано по-скоро отново или по нормален график. И така ... проблем е когато две се застъпят и поискат да ползват серийния порт заедно. Отделно някой от тях могат да бъдат извикани от друго място, защото на някакъв съвсем отделен процес му е притрябвало да направи това-оново с девайса от вън. И когато и тоя се включи в искането да ползва сериен порт - сещай се какъв бой настава.
Та въпроса беше как да им указвам, че порта е зает от друго приложение (защото очевидно не мога да го забраня) и да си спестя мешаницата?


Пон Сеп 23, 2013 11:04 pm
Профил WWW
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Авг 07, 2012 3:16 pm
Мнения: 331
Мнение Re: Ubuntu / Debian
Ако е за от конзола

su username -c "program arg1 arg2"

може и

su username programname

но първият вариант е по-гарантиран да работи и да се предадът правилно аргументите към програмата.

Въпроса е да не би да питаш за Inittab. А обмислял ли си да си пускаш нещата с cron (crontab) ?

edit:

За crontab идеята ми е, че в root-ския може да укажеш директно от кой потребител да се изпълни дадената програма и със стринга @reboot може това да става веднъж при boot / reboot.

Цитат:
Run programs at startup via crontab

There is an easy way to start a program during system boot. Just put this in your crontab:

@reboot /path/to/my/program

The command will be executed on every (re)boot.


Т.е нещо от рода

@reboot username /path/to/program

в root-ския crontab ще ти свърши работа :-)
Най-лесно да го редактираш е с `crontab -e` като root.


Пон Сеп 23, 2013 11:11 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: Ubuntu / Debian
Ами той scout_3pm ти го написа как - не е кой знае каква философия. Аз лично за ембедед системи хич не харесвам да се слага убунту/дебиан и т.н. десктоп дистрибуции - излишно се товари с камари шел скриптове за какво ли не - при това още от буутването.
Мисля, че ще ти е много по лесно ако събереш всичко в една програма - веднага ще ти отпаднат сумати проблеми, включително тези със споделения сериен порт. Разбира се ако ти пишеш всички програми, ако ги ползваш на готово може и да не ти е по лесно :D

_________________
Мразя да мразя ...


Пон Сеп 23, 2013 11:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение Re: Ubuntu / Debian
@scout_3pm, мерси :) Това беше полезно. Но пък съм махнал su-то от съображения за сигурност. Но да - питах за inittab-a. Колкото до cron-a доколкото го гледах (но не задълбах) не е толкова гъвкав, в смисъл не ми позволява така добре да взимам решения след колко време да викам съответното приложение. Беше някак си ... по-фиксиран. Може да не съм дочел нещо.
@palavrov, нито е дебиан, нито е убунту, къстъм си е, просто ме мързеше да отварям нова тема, пък тук си питам за общи работи относно линукса - за това пак тук постнах :) Може би си прав, че трябваше да го обединия като едно голямо нещо, но дори и тогава голямото нещо можеше да бъде извикано от поне 2 различни места - няколко пъти наблегнах на това - т.е. няма гаранция, че дори и като голямо нещо то няма да има два такива процеса искащи да работят със сериен порт (или каквото друго дойде). Въпроса беше да се предпазя от бой за ресурс/девайс. Е, още се чудя как е най-удачно :)


Вто Сеп 24, 2013 12:27 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: Ubuntu / Debian
Относно извикването от 2 различни места - това може да се направи като вместо да стартираш нов процес, просто пратиш различни сигнали на един и същ, а той си стартира вътрешно каквито тхредове му трябват. В рамките на един процес споделянето на общ ресурс става съвсем лесно с мутекс например. Също така не забравяй, че реално имаш трети процес който решава кога да ги извика другите два. Обикновенно това се прави с различни малки програмки вместо в една монолитна по ред причини, и не всички правилни ;) Много често причината е, че програмиста му се струва по трудно да направи една програма на Ц и предпочита да направи няколко скрипта (баш, питон, и т.н.), много често е и защото въобще не знае Ц ама се пише програмист ;) Та то не, че и така не работи, ама по скоро е отбиване на номера отколкото сериозно и стабилно решение. Единствено което мен ме блазни в такъв дизайн е, че може да подменяш компонентите по отделно. А за ембедет система не съм сигурен дали това въобще се налага.
Абе я не ми се впрягай много на приказките - прави както си го решил - все ще стане. Някоя друга милисикунда излишна работа на процесора няма да натежи на никой :)

_________________
Мразя да мразя ...


Вто Сеп 24, 2013 10:45 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Юни 01, 2008 9:54 pm
Мнения: 1503
Местоположение: Пловдив
Мнение Re: Ubuntu / Debian
Не съм съвсем съгласен с теб. Ако беше това (за монолитната програма) то разни приложения правещи различни неща, но използващи общ ресурс (като да кажем серийния порт) щяха да се предлагат като ... голяяямо приложение. Не ти ли изглежда странно? Мене ако питаш неща от типа на busybox-а са хубави (типичен пример за това което казваш), но не съвсем. Предпочитам отделни приложения. Обаче тогава си отварям тоя проблем, който и сега имам. Хората са му намерили решение с лок-овете - малко като забърсване под килима, но логично. Може някой ден и да си променя мисленето, сега така го виждам.
Пък ако погледнеш колко неща в дистрибуциите са направени на разхвърляни скриптове (баш/питон) и малки приложения ... сигурно има защо? Предполагам.
То така или иначе вече го написах с flock, не дава проблеми. Уж.


Вто Сеп 24, 2013 11:19 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: Ubuntu / Debian
я кажете някакво тулче дето може да експортира картинки в raw 1bpp формат?

Пробвах кво ли не... gimp-а може и С-файлове да прави ама само за RGB пък аз искам 1 бит/пиксел да ми запише


Пон Юни 30, 2014 2:29 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 123 мнения ]  Отиди на страница Предишна  1 ... 5, 6, 7, 8, 9  Следваща

Кой е на линия

Потребители разглеждащи този форум: RM и 0 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни