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

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

Убунту (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, но что тогда произойдет, если то же самое будет запущено в другом дистрибутиве.

3 ответа

Решение

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

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

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

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

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

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

Я обнаружил, что с помощью at с -v Флаг дает одинаковый формат вывода даты как в 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 не будет работать и формат даты там все равно будет другим. Думаю, это может быть время для другого программного обеспечения очереди.

Другие вопросы по тегам