Portál AbcLinuxu, 10. května 2025 04:48

Dotaz: Gnu nohup vs Solaris nohup (nohup -p)

10.11.2009 11:37 Nicco | skóre: 9
Gnu nohup vs Solaris nohup (nohup -p)
Přečteno: 275×
Odpovědět | Admin
V Solarise (a asi aj inych Unixoch) existuje prikaz:

nohup -p PID

ktory dokaze poslat nohup uz spustenemu procesu (ak sme ho zabudli spustit s nohupom)

Moja otazka je, ako toto docielit v Linuxe?

Google hovori, ze existuje:

disown -h JOB#
The shell exits by default upon receipt of a SIGHUP. Before exiting, an interactive shell resends the SIGHUP to all jobs, running or stopped. Stopped jobs are sent SIGCONT to ensure that they receive the SIGHUP. To prevent the shell from sending the signal to a particular job, it should be removed from the jobs table with the disown builtin (see SHELL BUILTIN COMMANDS below) or marked to not receive SIGHUP using disown -h.
Musim tu ale pouzit cislo JOBu z tabulky:

jobs

No a to je problem. Ked sa prihlasim ako iny uzivatel, alebo ked sa prihlasim pod dalsim pripojenim, tak jobs mi uz nevypise nic. Ako zobrazim v dalsom sedeni ulohy na pozadi spustene v inom sedeni?

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

10.11.2009 16:43 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Gnu nohup vs Solaris nohup (nohup -p)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jen poznámka: např. bash stejně SIGHUP nepošle, takže nohup či disown není potřeba. Leda že byste měl nastavenou shopt -s huponexit, což nejspíš nemáte. Hangup může být v kombinaci s openssh způsoben nepřesměrováním std{in,err,out}, ale ani to nevede přímo k ukončení procesu, leda k nějaké chybě.
11.11.2009 23:47 Nicco | skóre: 9
Rozbalit Rozbalit vše Re: Gnu nohup vs Solaris nohup (nohup -p)
Toto nemam nastavene shopt -s huponexit

Ale nechapem toto:
např. bash stejně SIGHUP nepošle
Spustim skript a havaruje mi ssh cez ktore som bol pripojeny na server a spustil skript. Zabudol som ho ale spustit s nohup, takze aj napriek tomu, ten skript pobezi dalej?
Řešení 1× (Nicco (tazatel))
12.11.2009 00:48 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Gnu nohup vs Solaris nohup (nohup -p)
Chápete to dobře, skript poběží ďalej.
skript.sh
#!/bin/bash
exec <&-
exec >&-
exec 2>&-

trap "echo SIGHUP >>/tmp/skript.log" HUP
trap "echo SIGTERM >>/tmp/skript.log" TERM

while true; do date >>/tmp/skript.log; sleep 1; done
session:
ssh server.example.net
./skript.sh &
-bash$ logout
Connection to server.example.net closed.
ssh server.example.net
tail -f /tmp/skript.log
...
Stejně tak pokud si své ssh na lokálu sestřelím, dopadne to stejně, akorát hlášky ssh jsou dle toho jestli pošlu SIGTERM či SIGKILL buď Killed by signal 15 rnebo Killed. V každém případě skript na serveru běží dál. Jeho rodičem se stane proces 1 (init). Stejně tak pokud na serveru jakkoliv sestřelím sshd process té mé session. Někde jsem četl že je možnost že v případě zabití ssh toto pošle ten svůj signál bashi a ten ho následně přepošle těm úlohám, ale zatím jsem se s tím nesetkal takže to nemohu potvrdit. Skripty běhaj.
20.11.2009 14:53 Nicco | skóre: 9
Rozbalit Rozbalit vše Re: Gnu nohup vs Solaris nohup (nohup -p)
Myslel som si, ze uz viem vsetko o bashi :-( Co znamena to &- (napr <&- )?

Je teda pravda, ze bash proces po spadnuti spojenia bezi dalej. To bode ale asi tym, ze takyto bash skript sa spusta v dalsom novom basi (interpretri), ktory po spadnuti rodicovskeho bashu dostane PPID=1, ako pisete.

Ale zistil som, ze perl skript spusteny z bashu, po spadnuti spojenia tiez konci. Takze tu by sa zislo jednoznacne nohup -p PID. (konkretny pripad db2bak.pl zo Sun JES (LDAP backup) spadol ked spadlo spojenie)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.