На выходе команды не является одинаковым для всех версий и операционных систем. Любой другой способ сделать это?
Я написал небольшой скрипт 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
не будет работать и формат даты там все равно будет другим. Думаю, это может быть время для другого программного обеспечения очереди.