как сделать так, чтобы процесс не убивался при закрытии консоли

walder

субж

artimon

ботать nohup или screen

Realist

сделай пару fork-ов (м.б. и одного достаточно? и твое приложение (второй потомок) не будет привязано к консоли

no-signal

man 3 daemon

zya369

я чего-то не понимаю?

[asuuis stable]$ sleep 10m &
[1] 28217
[asuuis stable]$ ps x
PID TTY STAT TIME COMMAND
1259 ? S 0:00 /misc/ACE133/ACE_wrappers/build/redhat9/TAO/orbsvcs/Naming_Service/Naming_Service -ORBEndpoint iiop://192.168.0.248:20000 -o /var/w
14688 ? S 0:00 bash
14702 ? TW 0:00 stty erase ?
30368 ? SW 5:15 /home/stable/misc/asuuis -ORBInitRef NameService=file:///var/www/html/ns_stable.ior -ORBDottedDecimalAddresses -ORBDebugLEvel 0 1
30385 ? S 3:23 /IBM_Java/bin/java -Djava.endorsed.dirs=/home/stable/t41/common/endorsed -classpath /IBM_Java/lib/tools.jar:/home/stable/t41/bin/bo
28170 ? S 0:00 [sshd]
28171 pts/3 S 0:00 -bash
28217 pts/3 S 0:00 sleep 10m
28218 pts/3 R 0:00 ps x
[asuuis stable]$ logout


Using username "stable".
asuuis1.cnd.ru's password:
[asuuis stable]$ ps x
PID TTY STAT TIME COMMAND
1259 ? S 0:00 /misc/ACE133/ACE_wrappers/build/redhat9/TAO/orbsvcs/Naming_Service/Naming_Service -ORBEndpoint iiop://192.168.0.248:20000 -o /var/w
14688 ? S 0:00 bash
14702 ? T 0:00 stty erase ?
30368 ? S 5:15 /home/stable/misc/asuuis -ORBInitRef NameService=file:///var/www/html/ns_stable.ior -ORBDottedDecimalAddresses -ORBDebugLEvel 0 1
30385 ? S 3:23 /IBM_Java/bin/java -Djava.endorsed.dirs=/home/stable/t41/common/endorsed -classpath /IBM_Java/lib/tools.jar:/home/stable/t41/bin/bo
28217 ? S 0:00 sleep 10m
28231 ? S 0:00 [sshd]
28232 pts/10 R 0:00 -bash
28269 pts/10 R 0:00 ps x
Это в Putty
В линух мне грузится влом, но там имхо тоже самое будет...
или под "закрыть консоль" что-то иное понимается?
ЗЫ все понял
надо внятнее топик было назвать

Ivan8209

Ещё: man 8 daemon
---
...Я работаю антинаучным аферистом...

Marinavo_0507

Маза если "консоль" - это про Windows.
Потому что в *nix это называется "терминал".

sergey_m

> Ещё: man 8 daemon
В линуксе нет такого.

Marinavo_0507

У меня есть man 3 daemon

sergey_m

КОНТРА написал 8.

Ivan8209

Если человек не указывает ОС, то, видимо,
выбор ОС не столь важен для него.
---
...Я работаю антинаучным аферистом...

sergey_m

Если человек не указывает ОС, то он говорит о линукс.
Твоё изречение построено на логике, моё на практических наблюдениях.

Ivan8209

Ну, ничто не мешает линуксоидам написать свой daemon(8).
Может, и такое появится.
---
...Я работаю антинаучным аферистом...

sergey_m

Им даже ничто не мешает взять уже написанный. Надо только убедить в этом строителей какого-нибудь релиза.

Ivan8209

Как это?
А ГПЛ и все дела?
Думаю, они скорее переизобретут этот велосипед.
Или не изобретут вовсе.
---
...Я работаю антинаучным аферистом...

Julie16

Вместо того чтобы строить пустые предположения, заглянули бы на ftp://debian.local, а именно на ftp://debian.local/debian/pool/main/d/daemon

Ivan8209

О! Ну надо же!
---
...Я работаю антинаучным аферистом...

Julie16

Так что у нас есть GPL daemon. Есть ли у вас BSD сс?

Ivan8209

А зачем "нам" ещё один cc?
---
...Я работаю антинаучным аферистом...

walder

Во нафлудили-то
В бщем, мне это нужно было, чтобы можно было с помощью fork запустить несколько процессов одновременно и они не убились. Неубиваться-то они неубиваются, но зомби плодятся просто ужас. В случае одного дочернего процесса все нормально, а когда их несколько... Корректно ли запускать fork в цикле?

bleyman

Дык убивай зомбей.
Например, объяви что последний (или первый) процесс ответственен за убийство зомбей, и каждый новый форк отдавал бы ему сцылку на нового дитя, а он сам при завершении убивал бы всех зомбей, после чего отдавал бы список первому (последнему) незомбю. Синхронизируйся через мутекс.

walder

А чуть поподробнее в виде кода можно?

bleyman

Бррр.
Что-то я перестал понимать, на самом деле.
Самое лёгкое - завести себе специальный процесс, которому все будут сообщать о порождении детских процессов, а он будет постоянно убивать зомбей. Ну я не знаю, какой там самый простой способ IPC много-одному-шлют-мессаги, можно просто в файл пиды писать, хз.
Если мы этот процесс хотим открепить от закрытия консоли (форкнувшись один раз то возникает резонный вопрос - кто убъёт его? То есть он-то всех остальных зомбей убъёт, но они его в процессе покусают, поэтому когда он потом совершит ритуальное самоубийство, то сам станет зомби. Надо с этим как-то побороться, а я не знаю как.

yolki

waitpid на каждый рождённый процесс - хотя бы один раз. помогает против зомбей.
Это кстати, в манах где-то прописано. что он зомби, до тех пор, пока родитель waitpid для него не вызовет.

Barbie29

лучший вариант - наплодить самописных демонов и через сокеты c ними общаться...
Оставить комментарий
Имя или ник:
Комментарий: