2

Я хотел , чтобы запланировать работу с командой at и увидеть эту ошибку:

    [root@labeir1 exm]# date
    Sun Dec  9 01:54:45 IST 2012
    [root@labeir1 exm]# at 01:47 "df -kh"
    syntax error. Last token seen: d
    Garbled time

Даже то же самое без кавычек не работает.

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

    [root@labeir1 exm]# echo df -kh | at 01:47
    job 4 at 2012-12-10 01:47

Это показывает, что работа запланирована, но в данный момент я не вижу результатов. Не правда ли, что вывод будет виден на консоли?

4 ответа4

3

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

echo df –kh | at –m 01:47

явно запросить электронную почту или

echo "df –kh > df_output.txt" | at 01:47

записать в файл.

1

Попробуйте что-то вроде:

mesg y # this is just to make sure you may write to your user
at now + 1 min
at>df -kh | write $USER
at>^D

Если это не сработает, либо вы не установили util-linux с включенным флагом pty-helper либо вам нужно указать экран, на котором вы хотите выводить данные (это, вероятно, $DISPLAY)

Обратите внимание, что если вы делаете что-то вроде:

at now + 1 min
at>xterm
at>^D 

Это, вероятно, сработает, если у вас установлен xterm (протестируйте его с любым терминалом, который вы используете). Итак, я предполагаю, что реальная проблема заключается в том, что команда выполняется в фоновом режиме, и вам нужно извлечь строку, которую вы хотите запросить, и сделать с ней все, что вам нужно (возможно, отправьте ее любому пользователю с помощью команд write или wall ).

0

Небольшое замечание, но так как я всегда боролся с выводом "искаженного времени" в at , я подумала, что поделюсь этим. Мое решение состоит в том, чтобы заключить в функцию и использовать более щадящую date чтобы исправить искаженные сообщения о времени.

function at {
  unset IFS
  MOMENT=$*
  AT=$(which at)

  # First try at to see if I finally figured out to produce non-garbled time
  if ${AT} ${MOMENT} 2>/dev/null
  then
    # worked allright, we can exit
    exit
  else
    # We produced garbled time (duh), so let's fix this with date
    MOMENT=$(date --date "${MOMENT}" +'%Y%m%d%H%M')
  fi

  # and try again
  ${AT} -t ${MOMENT}
}

Это лучше всего работает на системах с установленной датой GNU (большинство систем linux).

0

Попробуйте удалить : так:

echo 'df -kh' | at 0147

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .