Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Edward Muhutdinov                    2:5049/91.38   25 Apr 2000  20:50:26
 To : All
 Subject : прибить процесс
 -------------------------------------------------------------------------------- 
 
 
 Операционка - Linux Mandrake 7.0, перл родной. В терминале постоянно висит
 задача, с некоторым промежутком времени сканирующая наперед заданный файл. При
 появлении в нем строки демон считывает ее, удаляет из файла, и запускает
 согласно данной строке долгоиграющую задачу (конкретно - квантовохимический
 расчет). Естественно, во время расчета он неактивен, и хотя память занимает...
 но немного. По завершении расчета управление ему возвращается, он снова
 проевряет файл. Если есть строка - запускает следующую задачу, если нет -
 переходит в режим ожидания и с какой-то периодичностью опять сканирует состояние
 файла.
 
 Итак, стоит проблема - как прибить этот расчет, не трогая работы самого демона, 
 при помощи другой программы. Ситуация крайне осложняется тем, что демон
 запускается с правами root, и процесс, им вызываемый, тоже root, а прибивание
 процесса необходимо производить программой, запускаемой _не_ суперпользователем.
 Установка разных флагов на скрипт проблемы не решила, постоянный permission
 denied.
 
 Пошел на хитрость - от root'а запускается еще один демон, проверяющий наличие
 другого файла, и при его обнаружении успешно прибивающий процесс. Создать
 файл-флаг любым пользователем уже проблемы не составляет. Однако здесь
 получается такая закавыка, что второй демон уже отъедает ресурсы постоянно, с
 какой-то периодичностью просыпаясь и проверяя файл. Hам не хотелось бы терять и 
 тот мизер, что он забирает.
 
 Родилась идея вместо sleep $secs вызывать просто sleep. Тогда демон по идее
 будет ждать alarm, и по просыпанию проверять состояние файла. Более того, в
 данном случае файл-флаг ему даже становится не нужен: демон получает сигнал,
 сразу прибивает процесс, после чего снова засыпает. Впрочем, флаг можно оставить
 для пущей безопасности.
 
 Итак, вопрос: каким образом сделать взаимодействие двух перловских программ, из 
 которых одна висит постоянно, в режиме sleep, запущенная с правами root, а
 вторая запускается по необходимости пользователем с ограниченными правами. Очень
 хотелось бы получить непосредственный рецепт с кодом, который нужно вставить в
 демона и кодом, который нужно вставить в клиента - в документации и примерах
 сегодня копался два часа, ничего конкретного не нарыл.
 
 Гм... А может, как-нибудь можно осуществить прибивание процесса, запущенного
 root, программой, запущенной не root? Это был бы самый лучший выход.
 Заранее спасибо.
 
                                        С приветом, Edward M.
 
 --- ДДДmailto:wtiger@mail.ruДДДhttp://wtiger.ncport.ruДДДICQ UIN 9625056ДДДДД
  * Origin: Эк тебя скрючило! (2:5049/91.38)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 прибить процесс   Edward Muhutdinov   25 Apr 2000 20:50:26 
 Re: прибить процесс   Artem Chuprina   28 Apr 2000 22:17:13 
Архивное /ru.perl/3414390608ff.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional