nohup вызывает проблемы с почтой

301
Luka Kerr

У меня странная проблема с nohupпочтовым процессом в OSX. Я писал программу с использованием Xcode, которая заархивировала папку и отправила ее на адрес электронной почты с помощью следующей команды:

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

Это работало прекрасно, пока я не использовал nohup, чтобы скрыть процесс:

nohup ./PROGRAM_NAME & 

С тех пор, как я использовал nohup, у меня возникла проблема, когда я получаю десятки электронных писем, когда предполагается отправлять только одно электронное письмо. Это показано на рисунке ниже

img1

Я на 99% уверен, что проблема не в моем коде, потому что когда я запускаю ту же команду через терминал, я все равно получаю почти 100 писем. Этого не произошло, пока я не использовал nohup.

Я имею:

  • Используется killallи kill -9и killубить все процессы, я мог думать о ( nohup, mail, и smtpт.д.)
  • Был на мониторе активности и ничего не кажется необычным
  • Просмотренные процессы, запущенные с использованием ps -ef | grep "Process"
  • Удалил nohup.outфайл

Ничто не похоже на работу

Письма отправляются в течение примерно 20 минут, а затем останавливаются до тех пор, пока я снова не выполню команду для отправки почты. Как будто они стоят в очереди, хотя я сомневаюсь, что это проблема.

Если кто-то может предоставить предложения, которые были бы полезны

3

1 ответ на вопрос

2
Luka Kerr

О человек, я думаю, я понял это.

Комментарий, который я сделал о существовании очереди, был действительно правильным.

Я думаю, что когда я использовал nohupкоманду, программа оставалась запущенной в фоновом режиме в течение нескольких минут, прежде чем я ее убил. Я также думаю, что моя программа где-то имела бесконечный цикл. Это привело к большому количеству писем, которые должны были попасть в почтовую очередь, прежде чем я выйду из программы.

Я использовал команду, sudo mailqчтобы посмотреть, есть ли в очереди письма, и, конечно, было 719 запросов (писем).

Затем я просто использовал sudo postsuper -d ALLдля удаления всю почту из очереди, а затем побежал, sudo postqueue -pчтобы убедиться, что очередь пуста, какой она была.

Хорошо, что вы смогли ответить на это! Но, пожалуйста, ознакомьтесь с [моим ответом на другой вопрос здесь] (https://superuser.com/a/848123/167207) относительно того, как создать псевдофайловую блокировку в скрипте Bash, которая обеспечит запуск вашего процесса только один раз, а не завершите цикл, если он каким-то образом вызывается снова, пока предыдущий запуск все еще работает. JakeGould 7 лет назад 0