Portál AbcLinuxu, 10. května 2025 02:21
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.