Portál AbcLinuxu, 5. listopadu 2025 02:30
O co má jít? while true; do X; sleep 5; done by šlo?
do X trvá po dobu t=0, ne? :)
while true; do X & sleep 5; done
:-)
while true; do X &; sleep 5; done
true? Nebo snad vyhodnocení toho cyklu?
sudo fcrontab -e @ 10s sleep 0; touch "/home/`date`" @ 10s sleep 5; touch "/home/`date`"
#!/usr/bin/python
import time
while True:
time.sleep(0.1)
now = time.time()
time_to_wait = 5 - now % 5
end_time = now + time_to_wait + 0.9
time.sleep(time_to_wait)
filename = time.asctime(time.localtime(end_time))
file('/tmp/' + filename, 'w')
Hrozí totiž race-condition. Stačí, aby se např. proces vzbudil v 4.9999 sekund a asctime (potažmo date) to převede na čtyři.
#!/usr/bin/python
import time, subprocess
while True:
time.sleep(0.1) #pro jistotu
time.sleep(5 - time.time() % 5)
pr = subprocess.Popen(['date'])
pr.wait()
Tohle bude pouštět příkaz "date" každých _celých_ pět sekund.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.