Автор Гілка: Процеси - демони і shell скрипти  (Прочитано 8973 раз)

Відсутній Андрій Головинський

  • Кореспондент
  • ***
  • дописів: 141
  • Карма: +0/-0
Зіткнувся з такою проблемою ( не раз ):
як зробити, щоб певна програма ( готова ) стала демоном?
якщо якусь програму викликати з ініціалізаційного скрипта, наприклад,
rc.M, то вона завершує роботу майже зразу, мабуть, із закінченням роботи rc.M.
Схожий ефект можна спостерігати, якщо запустити її з консолі. Тоді при закритті консолі закриються всі дочірні програми.

Never argue with idiots. They just drag you down to their level, and then beat you with experience

Відсутній Taras

  • Новачок
  • *
  • дописів: 0
  • Карма: +0/-0
  • Що новенького?
Re: Процеси - демони і shell скрипти
« Відповідей #1 : 2004-10-23 09:49:10 »
Може б ми не переймали гірших традицій і не демонізували український лінакс (в розумінні перекладу термінології)?

Відсутній Андрій Головинський

  • Кореспондент
  • ***
  • дописів: 141
  • Карма: +0/-0
Re: Процеси - демони і shell скрипти
« Відповідей #2 : 2004-10-23 15:01:02 »
Перепрошую.
Я не знаю канонічних український назв.

Теба було: процеси-чортяки?

Нормального відповідника слову скрипт я підібрати не можу :-(

Наведіть, будь ласка, правильний варіант.
Never argue with idiots. They just drag you down to their level, and then beat you with experience

Відсутній Євгеній Мещеряков

  • Дописувач
  • **
  • дописів: 65
  • Карма: +0/-0
Re: Процеси - демони і shell скрипти
« Відповідей #3 : 2004-10-23 15:18:47 »
Можна спробувати запускати за допомогою nohup. Також непогано б було перенаправляти stdout та stderr у /dev/null або інший файл.

Відсутній Андрій Головинський

  • Кореспондент
  • ***
  • дописів: 141
  • Карма: +0/-0
Re: Процеси - демони і shell скрипти
« Відповідей #4 : 2004-10-23 17:57:30 »
nohup не допомагає.

Знайшов прогу start-stop-daemon із Debian, яка робить потрібне.
Але тільки з консолі. У rc.M чомусь ні.

Яка принципова різниця між консоллю і rc.M для програм, які з них викликаються?
Never argue with idiots. They just drag you down to their level, and then beat you with experience

Відсутній Євгеній Мещеряков

  • Дописувач
  • **
  • дописів: 65
  • Карма: +0/-0
Re: Процеси - демони і shell скрипти
« Відповідей #5 : 2004-10-23 19:11:46 »
start-stop-daemon робить цось подібне до цього: nohup prog > /dev/null < /dev/null 2> /dev/null

Відсутній Андрій Головинський

  • Кореспондент
  • ***
  • дописів: 141
  • Карма: +0/-0
Re: Процеси - демони і shell скрипти
« Відповідей #6 : 2004-10-23 20:18:08 »
nohup prog > /dev/null < /dev/null 2> /dev/null  &

Працює добре, коли викликано з консолі. Тоді процес витримує закриття консолі, перезапуск іксів.

А коли я його кладу, скажімо, в rc.dem
А потім викликаю з rc.M таким чином:
. /etc/rc.d/rc.dem
то на момент завантаження користувача програми вже немає

А запуск rc.dem з консолі працює як слід.
Never argue with idiots. They just drag you down to their level, and then beat you with experience

Відсутній Євгеній Мещеряков

  • Дописувач
  • **
  • дописів: 65
  • Карма: +0/-0
Re: Процеси - демони і shell скрипти
« Відповідей #7 : 2004-10-23 21:13:40 »
Це випадково не інтерактивна програма?

Відсутній Андрій Головинський

  • Кореспондент
  • ***
  • дописів: 141
  • Карма: +0/-0
Re: Процеси - демони і shell скрипти
« Відповідей #8 : 2004-10-23 21:20:27 »
Спробував виділити проблему в чистому вигляді:
rc.M:
#!/bin/sh

...........

#Start Yes
if [ -x /etc/rc.d/rc.yes ]; then
  . /etc/rc.d/rc.yes
fi

............

rc.yes:
#!/bin/sh
echo "Starting Yes"
/usr/bin/nohup  /usr/bin/yes > /dev/null < /dev/null 2> /dev/null &

Строка Starting Yes з'являється. Але yes на орбіту не запускається.

Коли запускаю rc.M з консолі, то все працює як слід.

Що я роблю не так?
Never argue with idiots. They just drag you down to their level, and then beat you with experience

Відсутній Taras

  • Новачок
  • *
  • дописів: 0
  • Карма: +0/-0
  • Що новенького?
Re: Процеси - демони і shell скрипти
« Відповідей #9 : 2004-10-25 08:05:40 »
Перепрошую.
Я не знаю канонічних український назв.

Це не була претензія до Вас за таку термінологію. Це пропозиція для вироблення загального підходу. Хто більше розуміється в суті того явища, хай запропонує заміну. Процес, служба?

Відсутній Андрій Головинський

  • Кореспондент
  • ***
  • дописів: 141
  • Карма: +0/-0
Re: Процеси - демони і shell скрипти
« Відповідей #10 : 2004-10-25 10:02:15 »
Служба - то непогано, але якось по-віндовському.
І не зовсім відповідає англійській. У Unix традиційно використовується слово server (  MySQL server, LPD server, etc) а не  service, що є відповідником "службі".
Вже точніше буде казати "службовець" чи щось подібне. Але, як на мене, то так не звучить.

Тепер щодо демонів ( daemons ).
Слова daemon і demon мають спільний корінь, але трохи різні
відтінки у значенні.
Demon - то ті, яких ви звикли бачити на телеекрані.
Слово Daemon -, наскільки я зрозумів, із давньоанглійської, значить "дух-покровитель людини". У цьому сенсі не є втіленням добра чи зла,
а незалежними істоти, із власними намірами і бажаннями.
Отже, ніякого відношення до християнства.

Погодьтеся, блискуча аналогія. Слово служба виглядає убого.
Як у віндавсі, який такий гидкий, що у ньому ні демони, ні гремліни
жити не хочуть. Одні черви.

Я згоден на український відповідник, але без втрат.
Хто хотів би працювати із стирільною системою, з точними, але
безбарвними назвами?
Never argue with idiots. They just drag you down to their level, and then beat you with experience

Відсутній Taras

  • Новачок
  • *
  • дописів: 0
  • Карма: +0/-0
  • Що новенького?
Re: Процеси - демони і shell скрипти
« Відповідей #11 : 2004-10-25 16:07:48 »
Дивлюся в Lingvo: daemon=demon I. Щодо відтінків, то вони зникають під час перекладу. А чим процес не підходить?

Відсутній Андрій Головинський

  • Кореспондент
  • ***
  • дописів: 141
  • Карма: +0/-0
Re: Процеси - демони і shell скрипти
« Відповідей #12 : 2004-10-25 18:27:32 »
Процес - дуже загальне слово. Принаймі для мене.

Скажімо:
Use option -d to run sendmail as daemon  -  це зрозуміло
Використайте опцію -d щоб запустити sendmail як процес - не зрозуміло
Вже тоді краще "служба", принаймі зрозуміло.

Ще щодо демонів:
Це питання виникало не раз, ось у арабів. Для цікавих.
https://listman.redhat.com/archives/fedora-trans-ar/2004-September/msg00085.html

Як на мене, приймайте його як акронім до
"Disk And Execution MONitor", який має транслітеруватись.

Принаймі у моїх дописах це так. І ніякої демонології.
Never argue with idiots. They just drag you down to their level, and then beat you with experience

Відсутній iip))

  • Графоман
  • ****
  • дописів: 277
  • Карма: +0/-0
  • Перекладач KDE, openSUSE...
Re: Процеси - демони і shell скрипти
« Відповідей #13 : 2004-10-25 21:17:03 »
Із словника:
"daemon (по англ. вимовляється деймн або ді:мн) - це програма, яка не викликається явно, але очікує на певну зміну умови чи умов."

Ідея назви взята із поняття, що людина має усвідомлювати, що демон(и) крутиться навколо неї очікуючи, щоб вона згрішила. Так і  програма, яка спричинятиме цю зміну умов повинна знати, що daemon "крутиться неподалік" очікуючи на зміну. Пізніше ця назва була хитромудро обгрунтована як акронім з "Disk And Execution MONitor".

Оскільки немає відповідного українського слова, яке б вповні передавало значення цього терміну, а буквальний переклад "демон" викликає у багатьох дуже негативну реакцію, пропоную його просто транслітерувати як "даемон". По-перше, слово даемон не має негативного значення в укр. мові, а по-друге, воно зрозуміле для тих, хто обізнаний з англ. комп'ютерною термінологією.
« Змінено: 2004-10-25 21:27:58 від iip »
"You should not be satisfied with being a victim, nor with being a survivor. You should aim to be a conqueror." "Now, go do the right thing!" Dr. Laura

Відсутній Андрій Головинський

  • Кореспондент
  • ***
  • дописів: 141
  • Карма: +0/-0
Re: Процеси - демони і shell скрипти
« Відповідей #14 : 2004-10-25 22:19:03 »
Цілком підтримую.

А щодо самої проблеми, то її вдалося обійти, викликаючи rc.yes прямо
з inittab ( підглянув у якомусь форумі по IAX ).
Чому так - не знаю. Десь є якийсь невеликий нюанс.
Never argue with idiots. They just drag you down to their level, and then beat you with experience