pid File erstellen

Status
Für weitere Antworten geschlossen.

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
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
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
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
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
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
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
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:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
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