Obj-C: система ("echo -e ...") и cron без почты - PullRequest
0 голосов
/ 17 сентября 2011

В небольшой утилите резервного копирования я пытаюсь использовать system () для записи в пользовательскую таблицу cron в target-c.

Теперь я делаю это:

NSString *croncmd = [NSString stringWithFormat:@"echo -e 'MAILTO=\"\" \n*/1 * * * * \"%@/Library/Application Support/LBKP/cron/croncall\" %@ > /dev/null 2>&1' | crontab" , NSHomeDirectory(), backup_id ];

system([croncmd UTF8String]);

Как видите, сначала я просто попытался использовать > /dev/null 2>&1, чтобы избавиться от почты в случае ошибки ... но в OSX кажется, что она вообще не работает, и я все еще получаю электронные письма.

Затем, читая некоторую информацию в Интернете, я просто сталкиваюсь с использованием MAILTO="" в начале таблицы cron для отбрасывания всех выходов.

Проблема в том, что мне нужно отобразить "новую строку"к файлу crontab обычно можно сделать, используя опцию -e и \n char в терминале, но если я делаю это из своей программы, я получаю это в консоли:

17/09/11 16:32:52,590 [0x0-0x3a03a].com.home.LBKP: "-":0: bad minute

В чем проблема?: S Как мне избавиться от этой ошибки или только от вывода?

Спасибо!

1 Ответ

0 голосов
/ 18 сентября 2011

Я только что обнаружил, что проблема была вызвана тем, что я добавил кавычки и другие вещи для создания NSString ... В любом случае я обнаружил, что самый безопасный способ сделать это:

NSString *disbl_mail = @"echo 'MAILTO=\"\"' | crontab"; // Disable all cron mail...
system([disbl_mail UTF8String]);

NSString *croncmd = [NSString stringWithFormat:@"(crontab -l; echo '*/1 * * * * \"%@/Library/Application Support/LBKP/cron/croncall\" %@ > /dev/null 2>&1') | crontab -" , NSHomeDirectory(), backup_id ];
system([croncmd UTF8String]);

Синтаксис второй команды (crontab -l; echo перечисляет доступную информацию в таблице cron, а затем возвращает ее и новую команду обратно в cron. Таким образом, предыдущая запись MAILTO="" не будет удалена.

Во всяком случае, и особенно потому, что я знаю, что это не лучший способ добавить материал в crontab, я отправляю новый вопрос здесь: Obj-C: Каков лучший способ добавить задания в crontab? .

Надеюсь, это может кому-то пригодиться!

...