Size: a a a

2020 October 17

VP

Vadim "Oxyd&quo... in pro.bash
Егор
это сработало, но мана для bg нет
Вот ведь страннота. И чой-то нет отдельного мана для встроенной, в шелл, команды? 😉
источник

VP

Vadim "Oxyd&quo... in pro.bash
асоциальный пикотранзистор ᶘಠᴥಠᶅ
nohup в нынешних шеллах бесполезен, баш и так не отправляет сигхап дочерним процессам при выходе.
Другой вопрос, что приложения ассоциированы с pts, который уничтожается в момент закрытия эмулятора терминала, и с этим беда: приложение умрет при попытке написать что-то в stdout/stderr или прочитать из stdin. Но пока процесс этого не делает, он будет жить до конца времён.

Теперь по поводу бэкграунда. gdb позволяет приаттачиться к процессу, закрыть у него fd (0, 1, 2) и открыть новые, например, в /dev/null.
А gdb позволяет процессу прописать новый PPID? И если да, то как? А то тут у человека древняя центось, без системды и у него сироты иногда буянят.
источник

аᶘ

асоциальный пикотран... in pro.bash
Vadim "Oxyd" Priluzkiy
Вот ведь страннота. И чой-то нет отдельного мана для встроенной, в шелл, команды? 😉
help bg
источник

аᶘ

асоциальный пикотран... in pro.bash
Либо в man'е внутри шелла.
источник

аᶘ

асоциальный пикотран... in pro.bash
Vadim "Oxyd" Priluzkiy
А gdb позволяет процессу прописать новый PPID? И если да, то как? А то тут у человека древняя центось, без системды и у него сироты иногда буянят.
Честно говоря, слабо себе это представляю.
источник

VP

Vadim "Oxyd&quo... in pro.bash
асоциальный пикотранзистор ᶘಠᴥಠᶅ
Честно говоря, слабо себе это представляю.
Ну gdb позволяет зомбей прибивать, не убивая родителя, например.
источник

аᶘ

асоциальный пикотран... in pro.bash
Vadim "Oxyd" Priluzkiy
Ну gdb позволяет зомбей прибивать, не убивая родителя, например.
Ну вот представь, что ты пишешь программу на Си. Можешь ли системными вызовами добиться присоединения твоей программы к любому процессу в качестве чайлда?
источник

VP

Vadim "Oxyd&quo... in pro.bash
асоциальный пикотранзистор ᶘಠᴥಠᶅ
Ну вот представь, что ты пишешь программу на Си. Можешь ли системными вызовами добиться присоединения твоей программы к любому процессу в качестве чайлда?
Systemd-то как-то усыновляет сирот в момент их появления... Переписывает им PPID вместо имеющегося, на единичку.  Значит и через gdb это, по идее, сделать можно.
источник

аᶘ

асоциальный пикотран... in pro.bash
Vadim "Oxyd" Priluzkiy
Systemd-то как-то усыновляет сирот в момент их появления... Переписывает им PPID вместо имеющегося, на единичку.  Значит и через gdb это, по идее, сделать можно.
Сироты становятся под ppid 1 сами по себе, без systemd.
источник

VP

Vadim "Oxyd&quo... in pro.bash
асоциальный пикотранзистор ᶘಠᴥಠᶅ
Сироты становятся под ppid 1 сами по себе, без systemd.
ШТА?
источник

аᶘ

асоциальный пикотран... in pro.bash
Могу тебе на alpine показать, там никогда не было systemd, лол.
источник

F

Fljúgandi Kettlingur... in pro.bash
Vadim "Oxyd" Priluzkiy
Systemd-то как-то усыновляет сирот в момент их появления... Переписывает им PPID вместо имеющегося, на единичку.  Значит и через gdb это, по идее, сделать можно.
просто он инит
источник

F

Fljúgandi Kettlingur... in pro.bash
если бы у тебя был другой инит, не системд - вставали бы под него
источник

VP

Vadim "Oxyd&quo... in pro.bash
Fljúgandi Kettlingur
просто он инит
А фигли инит на 6 каком-то центосе так не делает?
источник

аᶘ

асоциальный пикотран... in pro.bash
Vadim "Oxyd" Priluzkiy
А фигли инит на 6 каком-то центосе так не делает?
Это не делает инит, это делает ядро.
источник

аᶘ

асоциальный пикотран... in pro.bash
Vadim "Oxyd" Priluzkiy
А фигли инит на 6 каком-то центосе так не делает?
А какой ppid у «сироты», если процесс с pid = ppid умер?
источник

аᶘ

асоциальный пикотран... in pro.bash
> When a parent process dies before a child process, the kernel knows that it's not going to get a wait call, so instead it makes these processes "orphans" and puts them under the care of init (remember mother of all processes). Init will eventually perform the wait system call for these orphans so they can die.
источник

VP

Vadim "Oxyd&quo... in pro.bash
асоциальный пикотранзистор ᶘಠᴥಠᶅ
А какой ppid у «сироты», если процесс с pid = ppid умер?
Он никуда не меняется, пока инит, или ядро (хотя с какого перепугу?) ему его не поменяет на 1 Сирота потому так и называется, что у него PPID умершего процесса.
источник

аᶘ

асоциальный пикотран... in pro.bash
> In a Unix-like operating system any orphaned process will be immediately adopted by the special init system process: the kernel sets the parent to init.
источник

аᶘ

асоциальный пикотран... in pro.bash
Vadim "Oxyd" Priluzkiy
Он никуда не меняется, пока инит, или ядро (хотя с какого перепугу?) ему его не поменяет на 1 Сирота потому так и называется, что у него PPID умершего процесса.
У вас какая-то неверная информация. Пока не увижу — не поверю!
источник