Opgelost: Uitvoeren van een script middels een cronjob werkt niet op Ubuntu 12.04 LTS met Plesk

Blog

Opgelost: Uitvoeren van een script middels een cronjob werkt niet op Ubuntu 12.04 LTS met Plesk

Vandaag weer een paar uur van mijn leven kwijt aan het vinden van een oplossing die, achteraf, heel erg simpel blijkt te zijn. Het lukte mij maar niet om middels een cronjob een script te laten draaien dat ik had geschreven. Het script was erg simpel en bestond uit een paar simpele commando’s die je normaal in de terminal zou uitvoeren. Om problemen te voorkomen had ik al absolute paths gebruikt om issues voor te blijven. Ook had ik de “Hash-Bang” of “She-Bang”¬†netjes ingevoerd in het script. Maar het mocht maar niet baten.

Als oplossing worden de volgende stappen genoemd:
– Maak gebruik van absolute paden
– Maak gebruik van de Hash-bang of She-bang (#!/bin/bash als eerste regel in je script zetten)
– Zorg ervoor dat het script op “executable” staat (chmod +x script.sh)
– Zorg ervoor dat de resultaten / log van het script wordt weggeschreven naar een log-bestandje (> pad/naar/log/log.txt 2>&1)
– Zorg ervoor dat het script niet eindigt met een lege regel (baadt het niet… schaden zal het ook niet)

Als je al deze stappen al hebt geprobeerd en het nog steeds niet lukt en je hebt een Dedicated Server met Plesk hoger dan versie 10.1 op een Linux machine (Ubuntu bijvoorbeeld) dan zou het kunnen zijn dat je last hebt van het feit dat Plesk het standaard niet meer toe laat om scripts uit te voeren in de shell. Op zich erg logisch, zeker op een server waarbij meerdere gebruikers toegang hebben tot Plesk en zelf cronjobs toe te voegen, maar als je de enige user bent of andere users maken geen gebruik van Plesk, dan is de meest eenvoudige oplossing om deze rechten terug te zetten. Dit doe je door in de shell het volgende commando uit te voeren:

/usr/local/psa/bin/server_pref -u -crontab-secure-shell "/bin/sh"

Probeer het nu nog eens, en ohja, zet je cronjob 5 minuten na je huidige tijd, dan hoef je niet zo lang te wachten om te kijken of het goed gaat. De cronjob ziet er ongeveer zo uit:

/bin/bash /pad/naar/script/voorbeeld.bsh > /pad/naar/log/log.txt 2>&1

PS. Uiteindelijk heb ik de Hash-Bang / She-Bang weggehaald uit voorbeeld.bsh omdat deze geen functie leek te hebben.


  • april 22, 2014
  • Geschreven door mark

Mark is Internet specialist en E-commerce ondernemer sinds 2001. Met een marketing achtergrond op verschillende posities binnen de telecom (e-business manager, product marketing & innovatie, marketing manager) is hij in 2013 het creatieve full service internetbureau Ingteractive.com gestart. Daarnaast is hij eigenaar en verantwoordelijk voor de exploitatie van diverse webwinkels (o.a. Sneeuwkettingen4u en Ondergoed4u), marketplaces en vergelijkingswebsites (o.a. Sneakers4u en Horloges4u).

Meer rendement uit uw website of webshop?