Я пытался использовать в запланировать задание, работающее в определенное время. У меня есть компьютер Mac. Например, я пытался протестировать это на следующее в в Терминале:
at now + 1 minute
echo 'Test at'
<EOD>
больше чем после 1 минуты я не досмотрел эхо до конца. После того, как я ввожу в следующей команде:
at -l
Я не видел заданий, но я получил сообщение, говоря, что у меня есть почта. Я перешел к своей почте почтовой командой. Я действительно видел одно сообщение, и я ввел 1. Я видел, что мой вывод задания находится в почте.
Мой первый вопрос состоит в том, что я не уверен если это поведение по умолчанию для при команде или нет. Есть ли любое дорожное изменение этот behavour и как измениться, это направляет результат туда, где, если это возможно.
Мое понимание - то, что, если мое запланированное задание имеет какое-либо сообщение и выходной сигнал, будет, передают обратно моей почте. Мой следующий связанный вопрос состоит в том, что я не уверен, где делает запланированный прогон задания? В фоне? Я не мог найти его при помощи команды bg или fg.
Это - действительно поведение по умолчанию в, как указано в человеке в:
Пользователю отправят по почте стандартную погрешность и стандартный вывод от его команд, если таковые имеются. Почта будет отправлена с помощью команды sendmail (8). Если в будет выполняться от su (1) оболочка, то владелец оболочки входа в систему получит почту.
Для другого поведения можно вызвать в подобном это:
$ at now + 1 minute
$ echo "test at" > /dev/ttys000
$ <EOD>
Который перенаправит STDOUT к терминалу ttys000. Необходимо заменить/dev/ttys000 соответствующим файлом устройств терминала, который можно определить путем выполнения следующей команды:
$ tty
Запланированные задания выполняются в их собственной оболочке (см. человека в для получения дополнительной информации), такой, что bg не перечислит их. Для наблюдения списка запланированных заданий Вы могли бы хотеть попробовать atq или в-l
Да, отправка по почте пользователя, который вызвал при команде, является поведением по умолчанию.
От в странице справочника:
Начиная с команд, выполненных в отдельном вызове оболочки, работающем в отдельной группе процесса без управления терминалом, потеряны открытые дескрипторы файлов, прерывания и приоритет, наследованный от среды вызова.
В результате вышеупомянутого нет никакого простого способа передать вывод команд. Можно, конечно, перенаправить вывод в файл или использовать альтернативный механизм для передачи вывода как часть команд.
Если Вы не видите запланированного задания, это - потому что существует демон фактического времени отправления, работающий на системе, которая получает и выполняется в заданиях. На Mac они могут быть обработаны launchd демоном, который является единым заменяющим демоном Apple:
launchd демон является по существу заменой для init, дистанционного управления, init.d и rc.d сценариев, SystemStarter (Mac OS X), inetd и xinetd, фактическое время отправления, crond и watchdogd. Apple заявила, что намеревается устранить все вышеупомянутые сервисы в пользу launchd