Portál AbcLinuxu, 13. května 2025 03:00

Dotaz: běh programu jen po určitou dobu

Skeletonix avatar 21.3.2007 22:54 Skeletonix | skóre: 18 | Praha
běh programu jen po určitou dobu
Přečteno: 159×
Odpovědět | Admin
Dobrý den,

pomocí Cronu spustím v příkazové řádce mplayer (nahrávání). Za 2h bych ho chtěl vypnout .. jen nevím jak zabít daný program po čase. Řeším to tak,že v čas kdy chci ukončit mplayer mám v Cronu:
killall mplayer
což není úplně dobré. Koukám na film a ten mi kiksne též :-(

Neexistuje nějaké lepší řešení ?

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

Odpovědi

21.3.2007 23:10 Pavel1 | skóre: 33
Rozbalit Rozbalit vše Re: běh programu jen po určitou dobu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud jde mplayer pustit pouze na určitou dobu pomocí nějakých parametrů, to nevím. Pokud ne, tak nemusíš zabíjet "všechny" mplayery, ale pouze ten jeden konkrétní proces s tím správným mplayerem.
Skeletonix avatar 21.3.2007 23:13 Skeletonix | skóre: 18 | Praha
Rozbalit Rozbalit vše Re: běh programu jen po určitou dobu
to znamená,že bych musel nějak zjistit PID toho konkrétního procesu a ten nějak předat cronu ?

Jak na to ? S Bashem nejsem zatím moc zběhlí :-(

Dík
21.3.2007 23:16 Pavel1 | skóre: 33
Rozbalit Rozbalit vše Re: běh programu jen po určitou dobu
Jinak můžeš místo cronu používat příkaz at (slouží k vykonání jednorázové akce, což je asi Tvůj případ; cron slouží spíše k opakované akci).
Skeletonix avatar 21.3.2007 23:17 Skeletonix | skóre: 18 | Praha
Rozbalit Rozbalit vše Re: běh programu jen po určitou dobu
potřebuju to opakovat ... jednou týdně. je to záznam jednoho programu.
21.3.2007 23:11 kocour_easy
Rozbalit Rozbalit vše Re: běh programu jen po určitou dobu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Neni to uplne kosher ale aspon neco
-------------------------------------------------------------------------
#!/bin/sh
mplayer .......nejaky_parametry...... &
pid=$!
count=0
KILL_MIN=$((2 * 60))
while [ -d /proc/$pid ] && [ $count -lt $KILL_MIN ];do
sleep 60
count=$(($count + 1))
done
if [ -d /proc/$pid ];then
kill -1 $pid
else
echo "Pid '$pid' vymrel po case $count minut...."
fi
21.3.2007 23:45 Pavel1 | skóre: 33
Rozbalit Rozbalit vše Re: běh programu jen po určitou dobu
Toto má jisté úskalí. Je malá (možná hodně malá, ale je) pravděpodobnost, že ten PID získá jiný proces. Pokud by ten původní mplayer byl sestřelen něčím, nebo někým jiným, mohl by tento PID získat jiný proces, který by jsme si tímto skriptem mohli nechtěně potom sestřelit. Aby se to nestalo, stačilo by sem přidat ještě kontrola na název procesu (jestli se jedná opravdu o proces s nahrávajícím mplayerem).
21.3.2007 23:39 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: běh programu jen po určitou dobu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co kdybys pustil mplayer s parametrem
-endpos 02:00:00
?
21.3.2007 23:43 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: běh programu jen po určitou dobu
Odpovědět | | Sbalit | Link | Blokovat | Admin
mplayer ... & sleep 7200 ; kill $!
22.3.2007 00:24 Pavel1 | skóre: 33
Rozbalit Rozbalit vše Re: běh programu jen po určitou dobu
Tak toto mi nejde vůbec (mplayer nechce hrát). A je tady další problém, mplayer při spuštění vytváří 2 procesy (a tímto se zabije jen jeden a druhý zůstává viset).
22.3.2007 12:16 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: běh programu jen po určitou dobu
Aha, máš pravdu, ten "endpos" nějak nefunguje. Ani jsem to netestoval, protože jsem si myslel, že jsem to tak dřív používal - jenže tehdy to byl asi mencoder.
Tak mě napadlo ještě jiné řešení - zabít celou skupinu (tedy i sám sebe) pomocí volání killpg().
#!/usr/bin/env python
import subprocess, os, time, signal
cmd = subprocess.Popen(['mplayer', 'film.avi'])
pgrp = os.getpgrp()
time.sleep(10)
os.killpg(pgrp, signal.SIGTERM)
Skeletonix avatar 22.3.2007 19:09 Skeletonix | skóre: 18 | Praha
Rozbalit Rozbalit vše Re: běh programu jen po určitou dobu
Odpovědět | | Sbalit | Link | Blokovat | Admin
moc děkuji, něco snad pochopím ;) a užiji

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.