Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: fotka 23. 04. 2014, 10:56:27
-
zkoušel jsem:
ping xy.cz && sleep 120 | pkill -f xy.cz >> output.txt
snažím se zjisti jak výsledek nějakého příkazu exportovat do souboru přičemž to exportuje jen výsledek, který vyjede za poslední 2 minuty. chci to použít v bash skriptu.. děkuji
-
$ ping 1.1.1.1 & sleep 2 && kill %1
-
pro ping bych udelal
ping -i -c 120 xxx to samo prestance port 120 secs
pokud pro neco jineho
./udelejmito &
zajimavejpid=$!
sleep xxx
kill $zajimavejpid
zamozrejme nejaky testy okolo ze to stale bezi, ze se to pustilo atd atd
-
$ ping 1.1.1.1 & sleep 2 && kill %1
Určitě to funguje?
# ping 1.1.1.1 & sleep 2 && echo %1
[7] 23787
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
%1
-
Existuje prikaz/utilita "timeout"
http://man7.org/linux/man-pages/man1/timeout.1.html
-
$ ping 1.1.1.1 & sleep 2 && kill %1
Určitě to funguje?
# ping 1.1.1.1 & sleep 2 && echo %1
[7] 23787
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
%1
u mne OK
root@s1:~# ping 1.1.1.1 & sleep 2 && kill %1
[1] 18369
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
root@s1:~#
-
./udelejmito &
zajimavejpid=$!
sleep xxx
kill $zajimavejpid
Zkusil jsem to dát do skriptu v několika variantách, ale zdá se že to ten skript/proces nezabije..
output=$(/root/tra*/script.pl $domain && pid=$! && sleep 4; kill $pid)
echo $output > $domain.outfile.txt
-
b00n:
oni ten timeout asi opravdu neznají...
-
[quote ]
oni ten timeout asi opravdu neznají...
[/quote]
timeout není naisntalovaný na mém redhat a ani v yum není, chtěl bych to zvládnout s příkazy, které jsou součástí většiny běžných linux distribucí
-
timeout je v coreutils, coz neni nic nestandardniho, ale az od verze 7, takze v RHEL/CentOSu 6 uz je, ale v 5 ne.
-
timeout znám minimálně 8 let, takže určitě půjde někde vyhrabat i pro CentOS.
-
timeout není naisntalovaný na mém redhat a ani v yum není, chtěl bych to zvládnout s příkazy, které jsou součástí většiny běžných linux distribucí
A co Perl? V Perl-u jde vsechno
my $TIMEOUT_IN_SECONDS = 5;
eval {
local $SIG{ALRM} = sub { die "alarm\n" };
alarm($TIMEOUT_IN_SECONDS);
# do stuff that might timeout.
my $output = `ping 1.1.1.1`;
alarm(0);
print $output;
};
if ($@) {
# handle timeout condition.
}
Eval "vytvori novou instanci virtualni masiny". A v ni se vykona anonymni blok. Ten bud vykona prikaz a ukonci se, anebo zachyti signal ALARM a umre.
-
reseni od tonda_ mi funguje:
xxx@server:~/test0$ ping google.com > sleepKiller.output.txt & pid=$! ; echo "got $pid" ; sleep 2; kill $pid
[1] 31368
got 31368
xxx@server:~/test0$ cat sleepKiller.output.txt
PING google.com (173.194.35.3) 56(84) bytes of data.
64 bytes from mil01s16-in-f3.1e100.net (173.194.35.3): icmp_req=1 ttl=52 time=29.2 ms
64 bytes from mil01s16-in-f3.1e100.net (173.194.35.3): icmp_req=2 ttl=52 time=30.3 ms
[1]+ Terminated ping google.com > sleepKiller.output.txt