pid File erstellen

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

jahlives

Benutzer
Registriert
19. Aug. 2008
Beiträge
18.275
Reaktionspunkte
4
Punkte
0
Eine Problen/Frage an alle Linuxer,
ich habe ein Shell Script zum einsammeln meiner Emails von externen Accounts. Das Script wird alle 10 Minuten von cron unter einem nicht-root-Benutzer aufgerufen. Normalerweise reichen die 10 Minuten locker um die Accounts zu leeren. Von Zeit zu Zeit schiebe ich jedoch in meinem gmail Account den gesamten Spam in den Posteingang (Futter für meinen Spamassassin). Dann läuft das Script natürlich länger als 10 Minuten bis alles durch die Filter durch ist.
Bis anhin habe ich es in solchen Fällen dann so gemacht, dass ich zuerst den cron beendet habe und dann das Script manuell starten. Heute dachte ich, das geht doch auch ohne den cron abzuschiessen. Einfach ein pid File anlegen und am Ende des Scripts wieder löschen. Wenn das File existiert dann einfach exit.
Das Problem ist nun, dass ich als nicht-root natürlich keine Rechte habe unter /var/run eine Datei anzulegen/zu löschen. Wie kann man es am besten erreichen ohne das Script selber unter root laufen zu lassen?

Danke für alle Tipps
Gruss

tobi
 
Oh Mann, kaum gepostet und dann ist mir ein Lichtlein aufgegangen :rolleyes:
File als root anlegen (Schreibrechte für user) und nur die PID reinschreiben als nicht-root. Am Ende PID löschen
Code:
pid=''
pid=`cat /var/run/getmail.pid`
if [ ! -n "$pid" ]; then
 echo $$ > /var/run/getmail.pid
 [ ... ]
 echo "" > /var/run/getmail.pid
 exit
else
 exit
fi
 
Manchmal macht auch die PID-File in /tmp Sinn ;)

Man könnte statt der cron-Geschichte auch ein Skript schreiben mit Endlos-Schleife und einem sleep 10*60 oder so ... starten aus der /usr/syno/etc/rc.d als rc-Skript ... dann kannst dir das mit dem PID-File schenken ...

Itari
 
Manchmal macht auch die PID-File in /tmp Sinn ;)

Man könnte statt der cron-Geschichte auch ein Skript schreiben mit Endlos-Schleife und einem sleep 10*60 oder so ... starten aus der /usr/syno/etc/rc.d als rc-Skript ... dann kannst dir das mit dem PID-File schenken ...

Itari
An /tmp habe ich überhaupt nicht gedacht (PatschAnDieStirn) und auf die Version mit der Endlosschleife wäre ich nie gekommen. Sehr kreativ :)
Bei meiner Lösung störte mich, dass ich user Schreibrechte geben musste, das wäre dann mit /tmp Geschichte. Ich glaub das mit einem PID File ist besser, da ich das Script auch manchmal manuell ausführen möchte. Wenn es auch rc augerufen würde, dann würde es wohl default als root laufen. Da müsste man wohl noch etwas mit su machen. Oder gibt es rc Scripte pro Benutzer?

Dangöö dir itari

tobi
 
Zuletzt bearbeitet:
Skripte und auch alle anderen Programme haben die Möglichkeit, unter einer anderer Identität zu laufen als der aufrufende Prozess ... mit dem setzen des SET_USER_ID_BITS mittels chmod. Wenn also der Eigentümer eines Skriptes 'test.sh' 'hans' ist und mit chmod 4777 test.sh das sui-Bit gesetzt wird, dann läuft das Skript (egal von wem aufgerufen) immer unter der Identität des Benutzers 'hans'.

Ob das nun eine Lösung für dein Problem sein kann, hab ich jetzt nicht durchgespielt (Beispiel: /usr/syno/bin/synoindex)

Itari
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat