nohup verursacht Probleme mit der Mail

422
Luka Kerr

Ich habe ein seltsames Problem mit nohupund den Mail-Prozess unter OSX. Ich habe mit Xcode ein Programm geschrieben, das einen Ordner gepackt und mit dem folgenden Befehl an eine E-Mail-Adresse gesendet hat:

zip -r -X "zipfile.zip" /Path/To/Folder ; uuencode zipfile.zip newzipfilename.zip | mail -s "Subject Of Email" emailaddress@gmail.com` 

Das funktionierte einwandfrei, bis ich den Prozess mit nohup verdeckte:

nohup ./PROGRAM_NAME & 

Seit ich nohup verwendet habe, habe ich ein Problem, bei dem ich Dutzende von E-Mails bekomme, wenn nur eine E-Mail gesendet werden soll. Dies ist in der Abbildung unten dargestellt

img1

Ich bin zu 99% sicher, dass das Problem nicht in meinem Code liegt, denn wenn ich denselben Befehl über das Terminal ausführte, erhalte ich immer noch fast 100 E-Mails. Das passierte nicht, bis ich nohup benutzt habe.

Ich habe:

  • Gebrauchte killallund kill -9und killalle Prozesse zu töten, was ich denken konnte von ( nohup, mail, smtpetc)
  • War auf Aktivitätsmonitor und nichts scheint ungewöhnlich
  • Gesehene Prozesse, die mit ausgeführt werden ps -ef | grep "Process"
  • Die nohup.outDatei wurde gelöscht

Nichts scheint zu funktionieren

Die E-Mails werden für einen Zeitraum von etwa 20 Minuten gesendet und halten dann an, bis ich den Befehl zum Senden der E-Mail erneut ausführen kann. Es ist, als ob sie sich in einer Warteschlange befinden würden, obwohl ich bezweifle, dass dies das Problem ist.

Wenn jemand Vorschläge machen kann, wäre das hilfreich

3

1 Antwort auf die Frage

2
Luka Kerr

Oh Mann, ich glaube, ich habe es herausgefunden.

Der Kommentar, den ich über eine Warteschlange gemacht habe, war eigentlich richtig.

Ich glaube, als ich den nohupBefehl verwendet habe, lief das Programm einige Minuten im Hintergrund, bevor ich es tötete. Ich glaube auch, dass mein Programm irgendwo eine Endlosschleife hatte. Dadurch wurde eine große Anzahl von E-Mails generiert, die vor dem Beenden des Programms in der Mail-Warteschlange landeten.

Ich habe den Befehl verwendet, um sudo mailqzu sehen, ob sich Mail in der Warteschlange befand, und natürlich gab es 719 Anfragen (E-Mails).

Ich sudo postsuper -d ALLlöschte dann einfach alle E-Mails aus der Warteschlange und lief dann sudo postqueue -p, um sicherzustellen, dass die Warteschlange leer war.

Gut, dass Sie das beantworten konnten! Bitte lesen Sie [meine Antwort auf eine andere Frage hier] (https://superuser.com/a/848123/167207), wie Sie eine Pseudo-Dateisperre in einem Bash-Skript erstellen, die sicherstellt, dass Ihr Prozess nur einmal ausgeführt wird und nicht Endlosschleifen, wenn es irgendwie noch einmal aufgerufen wird, während ein vorheriger Start noch funktioniert. JakeGould vor 7 Jahren 0