ahoj, resim tu nahravani streamu z ip kamery, nejak jsem se zadrhl,
mam predstavu ze budu nahravat kazdou hodinu zvlast do souboru s presahem +- 5 minut
tzn 12:55 - 14:05 13:55 - 15:05 atd ...
nahravat bude mplayer pred -dumpstream
udelam si script, pustim cronem, ale resim ted jak ho ukoncit ...
bud abych nejak dokazal spustit ten mplayer jenom na urcitou dobu a nebo nejak 'pojmenovat' proces abych mo homl killnout aniz bych killnul ten co u bezi
napadlo me reseni mit 24 scriptu, al eto mi prijde dost neohrabane
diky TH
Jestli to ma byt bash scriptem, pouzil bych mktemp, ten ti zajisti jednoznacnost jmena souboru. Az ho vytroris, tak si ho proste nekoam odkopirujes a do nazvu mu pridelis aktualnu datum...
#!/bin/sh
echo;
OUT="$(mktemp)";
ls > $OUT;
cat $OUT;
echo;
echo $OUT;
Predpokladam, ze na prikazove radce bude parametr -dumpfile. ps aux | grep mplayer mi zobrazi vsechny instance, podle nazvu souboru v dumpfile, ktery tam nekde bude, si vygrepuji to spravnou, z ni uzmu cislo procesu a zavrazdim (-15). Nasledne zkontroluji a kdyz se nepovedlo, zavrazdim znovu (-9).
Proces bych zjistoval takhle:
#!/bin/sh
smplayer &
PID=$(echo $!);
echo $PID;
Pokud by stacilo, aby se ten proces sam killnul po urcitem case:
man timeout
diky moc, zatim zkusim rychle ten timeout, a zbytek musim nastudovat :)
PS: Tusim, ze standardne timeout posila SIGTERM, SIGKILL jde s urcitym zadanym odstupem vynutit pres -k, pokud se to mezitim neukoncilo.
Tady by melo stacit jednoduse:
timeout 70m mujskript.sh
:)
tak jsem narazil na zajimavy problem
kdyz spustim s radky toto
timeout 4 mplayer http://10.0.0.107/videostream.asf -user admin -dumpstream -dumpfile /home/RAID5/KAMERA/18.avi
tak mi krasne nahraje sec videa
ovsem script a timto obsahem (dle me identickym)
#!/bin/bash
timeout 4 mplayer http://10.0.0.107/videostream.asf -user admin -dumpstream -dumpfile /home/RAID5/KAMERA/18.avi
nahravani nespusti, rve to
mplayer: could not connect to socket
mplayer: No such file or directory
jakoby neposilal mplayeru ty parametry :(
Urcite to jde nejak zazavorkovat ten prikaz, ale v tomhle sem bash nikdy poradne neovladal :P.
Nicmene oddelit to mplayer ... do samostatneho skriptu by melo pomoct.
to jsem zkousel, pomoci echo > si vytvorim script, a ten zavolam a stejna chyba :(
Necetl sem to cely, ale nekdo resil podobny problem, snad pomuze:
http://forums.opensuse.org/english/other-forums/development/programming-scripting/484357-need-help-use-timeout-utility-shell-script.html
tomaskom: dik za odkaz, louskam to uz po treti a nejsem scopen pochytit jak to presne zavorkuje aby to slapalo
on to tam nejak uplne nakonci vysvetluje, ale me to proste nedochazi
ted jsem ve stadiu kdy prikaz spusteny v radce takto :
timeout 10s mplayer a.avi
slape a prehrava
a script s timto obsahem:
#!/bin/bash
timeout 10s mplayer a.avi
proste nejede napise
mplayer: could not connect to socket
mplayer: No such file or directory
je zajimavy ze chybova hlaska odpovida tomu, ze soubor a.avi neecistuje a ne ze spustim mplayer bez parametru
teda fakt jsem z toho jelen :(
Asi sem na to kapl, problem bude v tom, ze mplayer je zamyslen jako interaktivni program. Pokud pouziju ve skriptu
timeout --foreground 10 mplayer ./film.avi
, s tim parametrem --foreground to bezi! 8)
Jeste bys mohl juknout na parametr -noconsolecontrols.