LINUX.ORG.RU

Как автоматизировать замену строки в конфиге?

 


0

1

Доброго дня

Не использую менеджер сеансов в Arch. И не хочу.И это мне нравится.Но возникает «проблема» часто, даже не проблема, вопрос лени. ПК загружается в консоль, там происходит авторизация и затем грузятся иксы. Делается это путём правки /etc/systemd/system/getty.target.wants/getty@tty1.service, а именно, заменой строки ExecStart=-/sbin/agetty -o '-p — \\u' --noclear %I $TERM на строку ExecStart=-/sbin/agetty -a username %I $TERM, вместо username естественно пишем свой логин. Все бы ничего, но после обновлений, какой конкретно пакет за этот файл отвечает, я не знаю, приходится проделывать эти действия снова. Хотелось бы как-то немного автоматизировать этот процесс.

У меня есть только одна мысль, забэкапить файл целиком и на bash набросать скриптик, чтобы он этот файл заменял, запускать скрипт ручками после обновлений. Но переживаю, что в этом файле после какой-нибудь обновы могут поменяться и другие параметры или добавиться новые. Либо бэкапить файл постоянно, чтобы все не рухнуло случайно, либо искать другой выход

Конкретный вопрос состоит в следующем:

1) Как заменить не файл целиком, а в текущем файле /etc/systemd/system/getty.target.wants/getty@tty1.service только данную строку? Может быть можно использовать sed?

2) Может быть подскажите что-то поинтереснее? )

  1. Не следует ничего писать в директории *.wants. Так как в них должны располагаться симлинки на юниты. И делать это лучше при помощи команд systemctl <enable|disable> ...
  2. Для полной замены юнита его нужно скопировать из /usr/lib/systemd/system в /etc/systemd/system и уже там редактировать. А делать это лучше командой systemctl edit --full ...
  3. Но лучше сделать частичное внесение изменений, которые располагаются в файлах имя-юнита.d/*.conf и включают необходимые секций и новые параметры юнита. А делать это лучше командой systemctl edit ...

Стоит помнить, что некоторые параметры например такие как ExecStart= могут быть указаны несколько раз. Так для отмены оригинальных, а не добавления дополнительных нужно добавить такой параметр с пустым значением.

surefire ★★★
()
Последнее исправление: surefire (всего исправлений: 1)

У меня когда resolv.conf переписывался ненужным мне, я просто запретил его любое изменение (даже от рута), командой chattr +i /etc/resolv.conf, но выше тебе посоветовали как правильно редактировать в твоём случае.

fehhner ★★★★★
()
Последнее исправление: fehhner (всего исправлений: 1)

Делается это путём правки /etc/systemd/system/getty.target.wants/getty@tty1.service

Почему так? Я у себя в Debian создавал файл /etc/systemd/system/getty@tty1.service.d/override.conf со следующим содержимым:

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin user_name --noclear %I $TERM
Для автозапуска startx добавляем строчку в ~/.profile:
[ "$(tty)" = "/dev/tty1" ] && exec startx
Ну и чтобы система грузилась в консоль делаем:
# systemctl set-default multi-user.target

ChubaDuba
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.