Ошибка при попытке запустить agetty в системе linux на базе runit

Вероятно, это не лучший способ сделать это, но я обнаружил, что если я использую:

pgrep -fn /home/user/directory/AppName.exe

, это дает мне правильный.

Я пробовал использовать параметр -x (точное совпадение), но по какой-то причине это не сработало.

3
18.01.2017, 03:31
1 ответ

Используйте setsid следующим образом.

#!/bin/sh
exec setsid /sbin/agetty 38400 tty1 linux --noclear

Обертка setsid будет запускать agetty в качестве лидера сеанса ( см. Этот ответ ), позволяя ей связываться с tty1 .

Вы можете увидеть другое поведение в следующем примере ps .

# ps xao pid,ppid,sid,tty,cmd
[...]
150 1   150 ?    runsvdir
154 150 155 ?    runsv agetty-3
157 154 157 tty3 -bash
152 150 152 ?    runsv agetty-4
156 152 152 ?    -bash
[...]

Служба agetty-3 использовала setsid , тогда как agetty-4 не использовала. Следовательно, оболочка на tty3 является лидером сеанса и привязана к своему tty. Оболочка на tty4 находится в том же сеансе своего супервизора и не связана (? в столбце tty).

5
27.01.2020, 21:18

Теги

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