Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: alfonz19 19 Července 2012, 13:52:22
-
Nevím jestli jsem to v předmětu napsal dostatečně srozumitelně, ale dělal jsme co jsem mohl...
Mám skript, který chci, aby se spouštěl pár sekund, ale nezajímá mne jeho (nijaký) textový výstup, a nechci mít otevřený terminál ve kterém běží. Otevřu terminál, NĚCO NAPÍŠU, skript se spustí, zavřu terminál a skript si vesele běží dál a dělá svou práci. Jak vypadá to NĚCO?
Mám za to, že je třeba spustit nový bash, ve kterém tento skript poběží, ale nemohu si vzpomenout ani vyguglit jak to udělat. O možnosti nohup vím, ale existuje i jiná alternativa, kterou bych rád použil.
Předem dík za radu.
-
nohup (http://www.abclinuxu.cz/clanky/unixove-nastroje-16-getopts-time-nohup#nohup)
-
To je zajímavé. Jaký je funkční rozdíl mezi použítím
nohup program
a
program &?
Například v /etc/rc.local používám
edge -d neco -a nejakaipadresa -c neco -k klic -s nejakamaska -l 88.86.108.50:82 &
Byl by rozdíl v něčem, kdybych tam dal například:
nohup edge -d neco -a nejakaipadresa -c neco -k klic -s nejakamaska -l 88.86.108.50:82 &> /dev/null < /dev/null &?
-
sak vyzkousej vytvorit skript kde bude
#!/bin/bash
tty | logger;
sleep 1000;
exit 0;
a spust ho z terminalu s & a terminal zavri a potom pomoci nohup a samozrejme se kouki pomoci ``tail /var/log/messages'' kde bezi ;)
myslim, ze to zodpovi vsechny otazky
-
nezodpoví, v obou případech
$ tail /var/log/messages
tail: „/var/log/messages“ nelze otevřít pro čtení: Adresář nebo soubor neexistuje
-
& spustí na pozadí jako potomka, při ukončení terminálu se pokusí zabít děti. Nohup mu říká, aby tenhle signál ignoroval. Možná je toho víc, ale sem si vědom jen tohohle.
-
& spustí na pozadí jako potomka, při ukončení terminálu se pokusí zabít děti. Nohup mu říká, aby tenhle signál ignoroval. Možná je toho víc, ale sem si vědom jen tohohle.
Díky za vysvětlení.
-
nezodpoví, v obou případech
$ tail /var/log/messages
tail: „/var/log/messages“ nelze otevřít pro čtení: Adresář nebo soubor neexistuje
hmm .. radsi uz nic nezkousej prosim
-
ntz by si měl uvědomit, že Ubuntu není Suse (messages se nám před nějakým časem ztratily) a beer se může kouknout do /var/log/syslog ;)
-
ntz by si měl uvědomit, že Ubuntu není Suse (messages se nám před nějakým časem ztratily) a beer se může kouknout do /var/log/syslog ;)
oh god ... /var/log/messages je snad vsude, nejen v suse ..
to ze to v ubuntu neni je jen dalsi znamka ze &*^%$#@
-
díky všem za informace a odpovědi.
Zeptám se ještě na jednu věc. Jak už jsem psal, tak o nohup možnosti vím, ale nebaví mne nutnost přesměrovávat data do souboru v tmpu či do /dev/null
jaký je rozdíl mezi:
nohup sleep 10min > /dev/null &
a
bash -c 'sleep 10 min' &
kromě toho, že v druhém případě se (měl by se) spustí příkaz v novém bashi (jakkoli jsem jeho pid nenašel)? Předem díky
-
...
jaký je rozdíl mezi:
nohup sleep 10min > /dev/null &
a
bash -c 'sleep 10 min' &
sak vyzkousej vytvorit skript kde bude
#!/bin/bash
tty | logger;
sleep 1000;
exit 0;
a spust ho z terminalu s & a terminal zavri a potom pomoci nohup a samozrejme se kouki pomoci ``tail /var/log/messages'' kde bezi ;)
myslim, ze to zodpovi vsechny otazky
^^ budu se opakovat ..
-
pro lenochy
/var/log/syslog
Jul 23 10:47:51 Ubuntu logger: /dev/pts/1
Jul 23 10:47:51 Ubuntu logger: není TTY
druhy pokus je s nohup...
-
screen???
-
fajn, chápu. Můžu ještě pod-otázku?
Když jsem vzal tvůj skript
#!/bin/bash
tty | logger
sleep 10s;
exit 0;
a spustil, tak ok.
Pokud jej ale upravím, že výstup tty nebude vypsán do logu
#!/bin/bash
tty
sleep 10s;
exit 0;
tak exit 0 mi neukončí skript, ale narozdíl od předchozího příkladu rovnou terminál ve kterém jsem jej spustil, Bude to nějaká banalita, tak sorry za hloupé otázky, ale nějak to nechápu.
-
fajn, chápu. Můžu ještě pod-otázku?
Když jsem vzal tvůj skript
#!/bin/bash
tty | logger
sleep 10s;
exit 0;
a spustil, tak ok.
Pokud jej ale upravím, že výstup tty nebude vypsán do logu
#!/bin/bash
tty
sleep 10s;
exit 0;
tak exit 0 mi neukončí skript, ale narozdíl od předchozího příkladu rovnou terminál ve kterém jsem jej spustil, Bude to nějaká banalita, tak sorry za hloupé otázky, ale nějak to nechápu.
možná vás to překvapí, ale ten výpis do logu byl záměr (protože to jinak nepoznáte, v čem to vězí...)