Вопрос о в

Я пытался использовать в запланировать задание, работающее в определенное время. У меня есть компьютер Mac. Например, я пытался протестировать это на следующее в в Терминале:

at now + 1 minute
echo 'Test at'
<EOD>

больше чем после 1 минуты я не досмотрел эхо до конца. После того, как я ввожу в следующей команде:

at -l

Я не видел заданий, но я получил сообщение, говоря, что у меня есть почта. Я перешел к своей почте почтовой командой. Я действительно видел одно сообщение, и я ввел 1. Я видел, что мой вывод задания находится в почте.

Мой первый вопрос состоит в том, что я не уверен если это поведение по умолчанию для при команде или нет. Есть ли любое дорожное изменение этот behavour и как измениться, это направляет результат туда, где, если это возможно.

Мое понимание - то, что, если мое запланированное задание имеет какое-либо сообщение и выходной сигнал, будет, передают обратно моей почте. Мой следующий связанный вопрос состоит в том, что я не уверен, где делает запланированный прогон задания? В фоне? Я не мог найти его при помощи команды bg или fg.

2
задан 20.09.2009, 02:29

2 ответа

Это - действительно поведение по умолчанию в, как указано в человеке в:

Пользователю отправят по почте стандартную погрешность и стандартный вывод от его команд, если таковые имеются. Почта будет отправлена с помощью команды sendmail (8). Если в будет выполняться от su (1) оболочка, то владелец оболочки входа в систему получит почту.

Для другого поведения можно вызвать в подобном это:

$ at now + 1 minute 
$ echo "test at" > /dev/ttys000
$ <EOD>

Который перенаправит STDOUT к терминалу ttys000. Необходимо заменить/dev/ttys000 соответствующим файлом устройств терминала, который можно определить путем выполнения следующей команды:

$ tty

Запланированные задания выполняются в их собственной оболочке (см. человека в для получения дополнительной информации), такой, что bg не перечислит их. Для наблюдения списка запланированных заданий Вы могли бы хотеть попробовать atq или в-l

3
ответ дан 08.12.2019, 05:16

Да, отправка по почте пользователя, который вызвал при команде, является поведением по умолчанию.

От в странице справочника:

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

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

Если Вы не видите запланированного задания, это - потому что существует демон фактического времени отправления, работающий на системе, которая получает и выполняется в заданиях. На Mac они могут быть обработаны launchd демоном, который является единым заменяющим демоном Apple:

launchd демон является по существу заменой для init, дистанционного управления, init.d и rc.d сценариев, SystemStarter (Mac OS X), inetd и xinetd, фактическое время отправления, crond и watchdogd. Apple заявила, что намеревается устранить все вышеупомянутые сервисы в пользу launchd

4
ответ дан 08.12.2019, 05:16

Теги

Похожие вопросы