Назад | Перейти на главную страницу

at Вывод команды неодинаков для разных версий и операционных систем. Любой другой способ сделать это?

Я написал небольшой PHP-скрипт, чтобы обернуть at команда в Ubuntu. Теперь мне нужно запустить тот же код на сервере Redhat. Конечно, результат при добавлении и перечислении вакансий будет другим.

Ubuntu (at -V = 3.1.11): job 4 at Fri Nov 12 13:41:00 2010

Красная Шапка (at -V = 3.1.8): job 14 at 2010-11-12 13:42

Есть ли способ изменить вывод at команду сделать его более однородным? я прочитал man at и я ничего там не вижу, но, возможно, я пропустил какой-то хитрый путь.

Я использую регулярное выражение для «чтения» вывода, чтобы я мог обновить его для поддержки формата Redhat, но что произойдет, если то же самое будет запущено в другом дистрибутиве.

Вы можете нормализовать даты, используя что-то вроде:

date -d "$date" --rfc-3339=seconds

Я собирался предложить следующее, но at похоже, игнорирует переменные среды локали:

LC_TIME=C at -v ...   # has no effect

Я вижу, что строки различаются форматом даты / времени. Вы можете разделить вывод на две подстроки (задание 4 в) и часть даты / времени. Затем вы можете проанализировать дату с помощью функции strtotime.

В конце вы можете объединить первую часть с проанализированной датой / временем. Итак, вы получаете единообразный выход. Кроме того, вы можете преобразовать часть даты / времени в желаемый формат.

Я обнаружил, что с помощью at с -v flag дает одинаковый формат вывода даты как в Ubuntu, так и в Redhat. Но вывод выглядит следующим образом:

Ubuntu

Fri Nov 12 13:41:00 2010

warning: commands will be executed using /bin/sh
job 4 at Fri Nov 12 13:41:00 2010

Красная Шапка

Fri Nov 12 13:42:00 2010

job 14 at 2010-11-12 13:42

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

Это нормально при добавлении вакансий, но при перечислении вакансий в очереди -v не будет работать и формат даты все равно будет другим. Думаю, пришло время для другого программного обеспечения для очередей.