Portál AbcLinuxu, 3. května 2025 10:28
Jo, tomu říkám magie.$ nohup sleep 200 & [1] 27701 nohup: vstup ignoruji a výstup připojuji k „nohup.out“ $ # po odhlášení a přihlášení: $ ps xa | grep sleep 28045 ? S 0:00 sleep 100
$ whereis nohup nohup: /usr/bin/nohup
nohup
neprovede fork
+ exec
, ale pouze exec
(poté, co přesměruje výstup do souboru a zavře vstup), takže PID spuštěného příkazu se nezmění screen -x
. Tím se dá připojit na jednu screen z více míst současně. Pokud na těch více místech sedí i víc lidí, tak vidí, co dělají ostatní a můžou tak spolupracovat.
bash$ ( prikaz >& log &)
&
), takže v textu článku je „uvedením znaku & (ampersand)“ místo „uvedením znaku & (ampersand)“.
..uvedením znaku & amp; (ampersand)..
$ sleep 100 & [1] 26579 $ fg
Zásadní nevýhodou je, že výstup z programu je neustále přesměrovaný na výstup.a kam inam?
Jak s tímhle gibber-speakem můžete prosím vás pracovat? Vždyť tomu neni absolutně rozumět![1]+ Pozastaven sleep 100 $ bg [1]+ sleep 100 & $ [1]+ Dokonán sleep 100nohup: vstup ignoruji a výstup připojuji k „nohup.out“
V novější verzi bashe jsou tato slovesa již v ženském rodě. Původně jsem měl jako podmět „příkaz“, ale pak jsem se přiklonil k „úloze“, protože s ní operuje příkaz „jobs“.
Znáte lepší překlad? Rádi si ho přečteme (<translation-team-cs@lists.sourceforge.net> nebo <diskuze@lists.l10n.cz>).
OK. Je to jinak, ale výsledek je stejný. Cituji manuál bash:
The shell exits by default upon receipt of a SIGHUP. Before exiting, an interactive shell resends the SIGHUP to all jobs, running or stopped.
exit
či CTRL-D
žádný SIGHUP při tom tomu shellu na serveru zpravidla neposílám:).
hup.sh
:
#!/bin/bash function hup() { echo hup } trap hup HUP sleep 300Nyní standardní odhlášení:
-bash$ ./hup.sh & -bash$ exit logout Connection to localhost closed.SIGHUP se neposlal, na rozdíl od:
-bash$ ./hup.sh & -bash$ kill -HUP <..pid..> -bash$ Hangup hup Connection to localhost closed.
bash
e se zapnutým huponexit
i při ukončení. Proto je často dobře své joby proti tomu ošetřit
Nastartoval lze i další screen, ale vhodnější je vytvoření další obrazovkyJak kdy. Pokud si například upravíte screen tak, že na spodní hraně zobrazuje spuštěné obrazovky (např. pomocí
hardstatus string '%{= kw}%-w%{= kG}%50>%n %t%{= kw}%+w %{= kW}%-=%Y/%m/%d %c:%s%{-}%<'
), potom spuštění dalšího screenu vytvoří vlastně strom (jeho obrazovky se zobrazují nad obrazovkami nadřazeného screenu). Ve spojení s ssh STROJ -t screen
(resp. mým upraveným obalem, který se automaticky znovu připojí při ztrátě spojení) velmi užitečná věc, pokud spravujete desítky strojů a chcete se v tom vyznat (a pokud použijete screen -x
a připojujete se z několika míst najednou, např. notebooku a mobilu, tak je to ještě zajímavější) lennycz@machina:~$ leafpad & [1] 2054 lennycz@machina:~$ lennycz@machina:~$ [1]+ Done leafpad lennycz@machina:~$Vysvětluji si to tak, že shell nechce přerušit jiný výstup, ale není přece podstatnější informace, že proces skončil a to v reálném čase? Nebo ještě lépe: je za "okamžitým" vypsáním hlášky i vážnější riziko než jen "optické rozhození" výstupu?
Vysvětluji si to tak, že shell nechce přerušit jiný výstup, ale není přece podstatnější informace, že proces skončil a to v reálném čase?Není :). Jinak byste určitě použil nějakou interaktivnější metodu, zvlášť v dnešní době. Zkus si představit třeba uživatele nějaké celoobrazovkové aplikace, jak se mu rozsype celý display kvůli výpisu ukončení jobu, se kterým navíc ještě celkem počítal, že někdy skončí.
To je vlastnost knihovny readline, ktrou bash používá. V okamžiku, kdy bash čeká na vstup od uživatele, tak běží smyčka z knihovny readline, která o nějakých úlohách nemá ani páru. Teprve až když uživatel odešle vstup (obvykle klávesa Enter), tak se řízení vrátí do bashe, který se přes waitpid(2) dozví o ukončení potomků.
Samozřejmě by se to dalo udělat i jinak, ale takto je to (pro mě) lepší, protože se mi nerozsype právě zadávaný příkaz.
(I to by se dalo ošetřit, ale zjevně to nikdo ještě nenaprogramoval.)
screen
jsem nepoužíval, vždy jsem si udělal další příkazové okno. Ale pokud mám jen textový teminál a není to konsole s možnostmi přepínání tak se rozhodně velmi hodí.
Jde o to, že když třeba kiksne X server (příp. YaKuake nebo KDE), tak to screen nijak neovlivní a lze v klidu nahodit znova.Vida. Já to používám kvůli nestabilním linkám.
at now + 1 hour poweroff Ctrl-D2) cron ... pravidelne spousteni
man cron man crontabMik
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.