2013-06-30 5 views
0

Привет Я действительно новый в Linux: DКак crontab может печатать сообщения на консоли?

Я сделал программу crontab, которая должна печатать текущее время в консоли каждые 3 минуты.

Что я сделал, это ниже.

  1. Я сделал кронтаб. В терминале, команда «crontab -e» и добавить фразу «*/3 * * * * /home/user/a.out»

  2. a.out является результатом файл «gcc WowCron.c».

Код указан ниже.

int main (int argc, char* argv[]){ 
    time_t now; 
    time(&now); 
    printf("this is what we call cron does: %s\n", ctime(&now)); 
    return 0; 
} 

И он отлично работает при запуске индивидуально.

  1. Затем я запустил команду «service cron restart» в терминале. Теперь, когда я командую «crontab -l», я могу видеть сообщения, которые я написал в crontab.

  2. Проблема как-то я думаю, что она работает, но никогда не печатает сообщение о времени.

В. Как я могу сделать это время печати каждые 3 минуты?

+0

Что случилось с моим письмом? Мой C-код полностью разбился !!! в любом случае этот код ничего особенного, но печатать текущее время. –

+0

Не нужно перезапускать 'cron'. Он читает все crontabs каждый раз, когда он запускается, так что любой пользователь может обновить их в любое время и сразу увидеть результаты. – tripleee

+0

@tripleee Итак, какова цель обслуживания команды cron restart? Это просто бесполезное действие? Во всяком случае, спасибо за постоянный ответ. –

ответ

1

Стандартный вывод задания cron не заканчивается на консоли. Попробуйте использовать объект syslog.

В качестве альтернативы, если вам не нужно интегрировать это в большую программу C, используйте команду logger.

*/3 * * * * logger Still here ... 

(Бревно система уже включает в себя временную метку.)

Любой стандартный вывод и стандартная ошибка из хрон заканчивается отправкой по электронной почте владельцу работы. Может быть, вам стоит изучить ваш почтовый ящик, или, может быть, ваша электронная почта работает неправильно?

1

Cron запускает новый процесс для запуска в фоновом режиме. Вы настраиваете его через терминал (который является процессом), но он не имеет ничего общего с этим терминалом. У каждого процесса есть свои STDOUT, STDIN, STDERR, так как задачи cron находятся в новом процессе, который он не будет печатать на вашем терминальном процессе. STDOUT

Как сказано в трех вариантах, если вы хотите распечатать syslog место для перехода, или вы можете добавить его в файл по вашему выбору.

Если вы хотите запустить программу в интервале времени в терминале затем Shell Script, вероятно, лучший вариант:

while : 
do 
    date 
    sleep 180 
done 

Или вы можете заменить функцию «дата» с»./a .out "и запустить его из того же каталога

Смежные вопросы