Vraag


Acties:
  • 0 Henk 'm!

  • Mundatin
  • Registratie: December 2015
  • Laatst online: 19:46
Hallo!

De laatste tijd ben ik bezig met het inrichten van Ubuntu 16.04 VPS via Scaleway. Allemaal top en bijna geen problemen tot dus ver.

Alleen heb ik een probleem met het schrijven van een scriptje. Ik gebruik RClone voor het synchroniseren van verschillende clouddiensten. Dit gebeurd middels 2 verschillende scripts die beide op verschillende tijdstippen wordt uitgevoerd als cronjob.

Beide scripts worden prima uitgevoerd door de cronjob, alleen wil het nog wel eens voorkomen dat de scripts elkaar kruisen en dat alles in de soep loopt. Om dat tegen te gaan staat in het script een if statement die controleert of het script al loopt, maar deze werkt niet....

Het script van rclone-cron.sh is:
#!/bin/bash
if pidof -o %PPID -x “rclone-cron2.sh”; then
exit 1

elif pidof -o %PPID -x “rclone-cron.sh”; then
exit 1

else rclone sync drive1: drive2:
exit 1

fi
Het script van rclone-cron2.sh is:
#!/bin/bash
if pidof -o %PPID -x “rclone-cron.sh”; then
exit 1

elif pidof -o %PPID -x “rclone-cron2.sh”; then
exit 1

else rclone sync drive2: s3:
exit 1

fi
De eerste 2 statements werken dus niet. Er zit tussen beide scripts 12 uur in de crontab, maar bij grote bestanden wil het voorkomen dat het langer dan 12 uur duurt.

Alvast bedankt!

[ Voor 4% gewijzigd door Mundatin op 04-06-2018 13:32 . Reden: Extra info ]

Voorliefde voor alles wat tech-gerelateerd is

Alle reacties


Acties:
  • +1 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Nu online

Hero of Time

Moderator LNX

There is only one Legend

Maak met je scripts gewoon een running bestand aan, of lock bestand of wat dan ook. Controleer dan of dat ding bestaat. Nadat je script klaar is, ruim je je eigen rommel op. Dus bovenaan zet je 'touch $0.running' oid, en onderaan heb je dan 'rm $0.running'.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • Mundatin
  • Registratie: December 2015
  • Laatst online: 19:46
Hero of Time schreef op maandag 4 juni 2018 @ 13:39:
Maak met je scripts gewoon een running bestand aan, of lock bestand of wat dan ook. Controleer dan of dat ding bestaat. Nadat je script klaar is, ruim je je eigen rommel op. Dus bovenaan zet je 'touch $0.running' oid, en onderaan heb je dan 'rm $0.running'.
Ik heb dit elders ook gelezen, dat zal ik even proberen! Bedankt!

Voorliefde voor alles wat tech-gerelateerd is


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Nu online

Hero of Time

Moderator LNX

There is only one Legend

Je kan dan ook gelijk het andere script laten wachten totdat de eerste klaar is. Dan voorkom je ook dat de eerste twee keer draait voordat de tweede heeft kunnen draaien. Omdat je niet wilt dat een enkel script twee keer draait, ga je daar ook op testen. Want wat je nu hebt is testen of het zelf draait en dat gaat natuurlijk altijd matchen, wat je eigenlijk niet wilt, omdat je wilt weten of een vorige instance nog draait.

Commandline FTW | Tweakt met mate