Страница 1 из 1

[Решено]Автозапуск скрипта при старте системы через systemd

Добавлено: 30 июл 2023, 15:23
ДонВенчензо
Один добырй человек как то мне написал скрипт, который монтирует и расшифровывает LUKS на флешке.

Код: Выделить всё

#!/bin/env bash
DEVICE="$(blkid | grep 2fb27178-7712-4ef0-bd75-1507f9694d75 | cut -d : -f1)"
BLOCK="$(echo "$DEVICE" | cut -d / -f3)"
REALUSER="$(who | grep ":0" | head -n1 | awk '{print($1)}')"

FILE=/media/$REALUSER/LUKS_USB
  if [ ! -d "$FILE" ]; then #Проверяем существует ли каталог /media/REALUSER/LUKS_USB
    mkdir -p "/media/$REALUSER/LUKS_USB"
  fi

MOUNT="$(command -v systemd-mount)"
if [ -n "$DEVICE" ]; then
	cryptsetup -v luksOpen "$DEVICE" "$BLOCK"_crypt --key-file=/root/Luks_USB.key \
		2>&1 > "/tmp/cryptmount.log"
		"$MOUNT" /dev/mapper/"$BLOCK"_crypt "/media/$REALUSER/LUKS_USB" 2>&1 >> "/tmp/cryptmount.log"
else
	exit 0
fi
При старте системы его запускал сервис systemd

Код: Выделить всё

[Unit] 
Description=luxmount
After=multi-user.target

[Service]
Type=oneshot
User=root
ExecStart=/opt/scripts/luxmount.sh

[Install]
WantedBy=multi-user.target
На днях переустановил систему. Поставил Р12.4 Plasma и никак не могу заставить скрипт срабатывать при старте системы.
Запускаю сервис и скрипт срабатывает, но сервис остается неактивным:

Код: Выделить всё

○ luxmount.service - luxmount
     Loaded: loaded (/etc/systemd/system/luxmount.service; enabled; vendor preset: disabled)
     Active: inactive (dead) since Sun 2023-07-30 15:17:57 MSK; 5min ago
    Process: 26164 ExecStart=/opt/scripts/luxmount.sh (code=exited, status=0/SUCCESS)
   Main PID: 26164 (code=exited, status=0/SUCCESS)
        CPU: 44ms

июл 30 15:17:57 ROSALINUX-PC1 systemd[1]: Starting luxmount...
июл 30 15:17:57 ROSALINUX-PC1 luxmount.sh[26173]: Устройство sdg3_crypt уже существует.
июл 30 15:17:57 ROSALINUX-PC1 luxmount.sh[26174]: Started unit media-venlip-LUKS_USB.mount for mount point: /media/venlip/LUKS_USB
июл 30 15:17:57 ROSALINUX-PC1 systemd[1]: luxmount.service: Deactivated successfully.
июл 30 15:17:57 ROSALINUX-PC1 systemd[1]: Finished luxmount
Помогите разобраться, почему сервис не активируется

Автозапуск скрипта при старте системы через systemd

Добавлено: 31 июл 2023, 07:39
irton
Активируется, и потом системд его деактивирует.

Щас системд может через .mount файл монтировать, наверное надо это использовать

Автозапуск скрипта при старте системы через systemd

Добавлено: 02 авг 2023, 10:29
ДонВенчензо
Худо - бедно разобрался. Systemd запускает скрипт при старте системы. Но скрипт, в свою очередь, в $REALUSER и $DEVICE возвращает пустоту. Поэтому он и не монтирует флешку с LUKS.
В итоге поменял в сервисе на:
[Unit]
Description=luxmount
After=graphicl.target
...
...
Флешка стала монтироваться.
Видимо что-то поменялось при загрузке системы, потому как буквально неделю назад старый сервис работал как часы

Автозапуск скрипта при старте системы через systemd

Добавлено: 03 авг 2023, 07:45
keleg
так системд двигает запуск сервисов (в пределах рамок) по своему усмотрению.
Потому его и ругают, загрузка-то ускоряется чуть, а вот плавающие от изменения порядка загрузки ошибки ловить замучаешься.
Но постепенно они отлавливаются и становится все хорошо и быстро