Как я могу отложить запуск display -manager.service до тех пор, пока сценарий моего модуля systemd не завершится?

awk '{

##use key-value array in awk
if($1 in STORE){
    if($3 ==0){
        STORE[$1]+=1
    } ##if ends for 3rd column check

} ##if ends for A/B check
else{
    if($3 ==0){
        ##check if third column is zero
        STORE[$1]=1
    }else{
        ##if not zero, make value as zero
        STORE[$1]=0
    }

} ##else if A/B not in Store

}
END{
##print everything using for loop

for(key in STORE){
    print key, STORE[key]
}
}  ' file.txt 
0
08.10.2021, 01:38
1 ответ

Кажется, что правильный порядок после plymouth-quit.service, но до display-manager.service, который является последним юнитом, запущенным перед plymouth-quit-wait.service. т. е. если включено, диспетчер отображения запускается до того, как экран-заставка исчезнет.

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

[Unit]
Requires=network-online.target
After=network-online.target plymouth-quit.service
Before=display-manager.service

[Service]
Type=oneshot
StandardInput=tty
StandardOutput=tty
StandardError=tty
TTYPath=/dev/tty2
TTYReset=yes
TTYVHangup=yes
ExecStart=/path/to/script.sh

[Install]
WantedBy=multi-user.target
#!/bin/bash

# Change the virtual terminal to tty2
# so user can interact with the script and see its output
chvt 2

# do stuff
echo "Hello, world!"

# Change back to tty1
# so user is shown console login,
# or sent to wherever the display manager decides
chvt 1

Это работает, но не очень чисто без добавления дополнительной логики в сценарий или написания оболочки. Если я запускаю его где угодно, кроме tty1, например (, как рабочий стол, работающий на tty7), или если tty2уже занят.

Это должно быть нормально, так как мой скрипт должен запускаться только при загрузке, но если есть чистое системное решение, которое позволило бы мне просто держать все включенным tty1все время, когда default.targetравно multi-users.targetили graphical.target, я хотел бы услышать об этом.

0
10.10.2021, 19:27

Теги

Похожие вопросы