/ 2 minutters læsning
Cron Sidekick til et infinite loop script ∞ Hvis det skal gå hurtigere.
Okay, så du er en Sonic, der ikke kan vente et helt minut på, at cron
kører dit script? 😅🤣 Du har brug for, at det udføres hvert sekund! Desværre blev cron ikke bygget til at understøtte opgaver på sekund-niveau, men jeg har en løsning til jer hurtigløbere derude.
Først skal du lave et script, der kører en uendelig løkke med en sleep
-kommando i ét sekund. Her er et simpelt eksempel i bash:
#!/bin/bash
while true; do
echo "Dette kører hvert sekund" >> /sti/til/logfil.log
sleep 1
done
Gør dit script eksekverbart:
chmod +x dit-script.sh
Du kan køre dette script i baggrunden sådan her:
./dit-script.sh &
Eller du kan bruge nohup til at holde scriptet kørende, selv efter du logger ud:
nohup ./dit-script.sh &
Selvom cron ikke kan køre et script hvert sekund, kan det sikre, at dit “hvert-sekund”-script kører, som det skal. Du kan lave et andet script, der tjekker, om det første script kører, og starter det, hvis det ikke gør.
Her er et eksempel:
#!/bin/bash
if pgrep -f "dit-script.sh" > /dev/null
then
echo "Scriptet kører" >> /sti/til/status.log
else
nohup /sti/til/dit-script.sh &
echo "Scriptet kørte ikke. Starter det nu." >> /sti/til/status.log
fi
Nu kan du planlægge dette tjek-script med cron til at køre hvert minut:
* * * * * /sti/til/dit-tjek-script.sh
Tadaa! Selvom cron måske ikke kan køre opgaver hvert sekund, kan det helt sikkert fungere som en trofast sidekick for at sikre, at dit speedster-script kører, som det skal. 🤓