crontab
SQL Query in Crontab
Soll ein Cronjob eine SQL Query ausführen, läuft man schnell in ein Problem. Das Prozenzeichen % hat eine Sonderbedeutung in der Crontab. Es erzeugt einen Zeilenumbruch. Das folgende Beispiel funktioniert niemals, weil der Suchbegriff falsch interpretiert wird und ausserdem alles nach dem Suchbegriff abgeschnitten wird:
Hier ein Beispiel:
mysql -e "SELECT * FROM users WHERE name LIKE a%;" database
Ich konnte diesen nicht wirklich schönen Workaround dafür finden.
echo "SELECT * FROM users WHERE name LIKE a\%;" | sed -e 's|\\||g' | mysql database
Das Prozenzeichen wird vor Cron geschützt. sed löscht das quote Zeichen wieder, bevor es an die Datenbank weitergeschickt wird.
Für ganz einfache Dinge reicht das. Ich empfehle aber trotzdem gleich ein Script zu erstellen. Dadurch wird dieser komplexe Teil unnötig und insgesamt besser lesbar.
Priorität der Update Prozesse unter SuSE Linux 10.3 herabsetzen
Dies ist eine Art Fortsetzung zum Post "Priorität der Update Prozesse unter SuSE Linux 10.2 herabsetzen".
Da unter openSuSE 10.3 ja mittlerweile der Zypper auch sehr herumzicken kann (z.B. kein normales Surfen mehr möglich, weil genau dieser Prozess austickt) hab ich mir dafür ebenso einen Cronjob geschaffen, der einfach die Priorität dieser Prozesse auf ein Minimum reduziert. Die sollte dem restlichem System nicht weh tun, da hier normalerweise nur die Überprüfung auf Onlineupdates läuft:
/etc/crontab
-* * * * * root ps aux | grep [z]ypper | awk '{print $2}' | xargs -i renice 19 {}
Priorität der Update Prozesse unter SuSE Linux 10.2 herabsetzen
Da unter openSuSE der ZMD Update oft jede Menge Resourcen frisst, hab ich mir jetzt einen kleinen, feinen Cronjob gebastelt der die Priorität herabsetzt und somit auch das System unmittelbar nach dem Start schneller benutzbar macht.
Der simple Eintrag in der /etc/crontab lautet:
-* * * * * root ps aux | egrep 'update-status|parse-metadata' | grep -v grep | awk '{print $2}' | xargs renice 19
Die Funktion sollte woch für jeden Linux-"Laien" ziemlich ersichtlich sein 😉