Fórum Root.cz
Hlavní témata => Distribuce => Téma založeno: Hamparle 07. 11. 2020, 23:56:23
-
Když si spustím youtube-dl (v htopu je vidět jako "/usr/bin/python3 /user/bin/youtube-dl) a běží, je v pozadí, chci ho nechat běžet, tak se mi to nedaří. Příkaz disown jsem dal, jobs, hlásí žádné úlohy.
Ovšem stále v htopu ho vidím jako potomek shellu a když ho zavřu, stahování se přeruší. Čím to? Může být proces imunní k disownutí (to je nějaký signál tomu procesu a on to musí přijmout nebo to jde automaticky?)?
Myslel jsem, že tomu rozumím, s wget mi to jde.
Za další:
existuje nějaký příkaz kombinující disown a disown - h (již potom, co příkaz byl spuštěn, takže modifikátor nohup na začátku není možnost)?
Pokud to dobře chápu, tak "disown" odstraní proces z tabulky úloh, ale "disown -h" neodstraní. (o čemž jsem se přesvědčil spuštěním příkaz na pozadí a příkazem disown(-h) a jobs). Ale čekal jsem že parametr -h souvisí s prevencí ukončení (signál HANGUP)
Mám shell bash.
A další otázka:
Může se to celé chovat jinak, když to dělám přes ssh?
-
https://www.byobu.org
-
Asi bych to spustil ve screen (https://www.root.cz/clanky/screen-jeste-mocnejsi-terminal/). Je to jednoduchý a k tomu určený nástroj.
Vysvětlení & disown a nohup viz https://unix.stackexchange.com/a/148698
-
Asi bych to spustil ve screen (https://www.root.cz/clanky/screen-jeste-mocnejsi-terminal/). Je to jednoduchý a k tomu určený nástroj.
Vysvětlení & disown a nohup viz https://unix.stackexchange.com/a/148698
screen je opravdu moc jednoduchy, lepsi je tmux a jeste lepsi to byobu ;-)
edit: Byobu je "nadstavba" nad tmux (muze byt i nad screen, ale nad tmux je vhodnejsi a default) a pridam take link na root kterej vysel o 3roky po tom cos daval o screenu ;-)
https://www.root.cz/clanky/byobu-jeste-o-kousek-lepsi-terminal/
-
:) No vida.
-
Na Rootu jsem psal o všech třech: Screen (https://www.root.cz/clanky/screen-jeste-mocnejsi-terminal/), Byobu (https://www.root.cz/clanky/byobu-jeste-o-kousek-lepsi-terminal/), Tmux (https://www.root.cz/clanky/okna-v-terminalu-pomoci-tmux/).
Osobně používám Tmux, automaticky se mi instaluje na všechny stroje ve správě.
-
Inspirace je to zajímavá o tom žádná ,ale opravdu proč to najdnou dělá ty anomálie, že to ten proces furt má rodiče beze změny?
-
Inspirace je to zajímavá o tom žádná ,ale opravdu proč to najdnou dělá ty anomálie, že to ten proces furt má rodiče beze změny?
Tak rodiče asi změnit nejde, ledaže by byl rodič zabit - pak potomka adoptuje init. Zkuste příkaz pstree. Viz https://unix.stackexchange.com/questions/193902/change-the-parent-process-of-a-process
The parent process id (ppid) of a process cannot be changed outside of the kernel; there is no setppid system call. The kernel will only change the ppid to (pid) 1 after the processes parent has terminated - if the process did not respond to a signal that the parent was terminated. For this to happen, the process needs to have ignored various signals (SIGHUP, SIGTERM, etc.) beforehand.
Vás spíš zajímá připojení k terminálu (stdin, stdout, sterr, reakce na HUP) a to je popsáno, jak už jsem psal, např. na https://unix.stackexchange.com/a/148698
screen(1) has a very elegant means of handling detaching and reattaching. When you first start screen, you are actually starting a user interface (ui), which by default will create a daemon (the session manager). This daemon has no terminal associated with it, a new process group (setpgrp(2)), a new session id (setsid(2)). The daemon, running as SCREEN, will then create subprocesses connected to pseudo-terminals (pty), then multiplexes the data from the ptys and the ui (screen). The subprocesses think they are talking with a real terminal.