Попробуйте этого:
sed -r 's/([a-zA-Z0-9]+) ([a-zA-Z0-9]+) ([a-zA-Z0-9]+)/\3 \2 \1/'
Ваша проблема состоит в том, что Вы пытаетесь использовать расширенный regex без -r
опция или управляющий символ escape в команде sed.
Также regex не полностью корректен.
Вы указываете неправильный диапазон: существует нет A-z
диапазон, существует A-Z
.
Также Вы забыли пробелы, и Вы не указывали, что слова являются мультисимволом.
Причина такого поведения заключается в том, что идентификатор машины в /etc/machine-id
изменяется при каждой перезагрузке. Это запускает новую директорию протоколирования в /var/log/journal
. Старые лог-файлы можно просмотреть с помощью следующей команды:
journalctl --merge
Я все еще ищу причину изменения машинной части. Поддержка Linode знает о проблеме. Я обновлю этот ответ, когда узнаю больше.
UPDATE -- Основная причина проблемы в том, что Линод обнулял содержимое /etc/machine-id
из образов файловой системы. В результате получилась следующая цепочка событий:
/etc/machine-id
из корневой файловой системы (файл существует, но имеет нулевое содержимое)tmpfs
на /etc/machine-id
(Да, Очевидно, что вы можете смонтировать файловую систему в файл ) /etc/machine-id
Вы можете проверить, есть ли в вашей системе переменная, а не стационарный станок, посмотрев на выход mount
:
$ mount | grep machine-id
tmpfs on /etc/machine-id type tmpfs (ro,mode=755)
Проблему легко решить: просто запишите постоянную машину на real /etc/machine-id
. Однако это легче сказать, чем сделать, потому что вы не можете отсоединить tmpfs
от /etc/machine-id
в работающей системе. Вот шаги, которые я сделал, чтобы исправить это на Linode:
cp /etc/machine-id /etc/machine-id.copy
, затем выключите питание системымонтирование /dev/xvda /mnt
mv /etc/machine-id.copy /etc/machine-id.copy
Reboot
Таковы последствия пропущенной машинной части при загрузке. Надеюсь, это поможет случайному прохожему в будущем.
Другой вариант — настроить systemd через параметр ядра из uboot:
setenv bootargs 'systemd.machine_id=fce88f888f3e4a3d811ab2cd1c9b7cbe'