Вы не можете вставить переменную внутрь одинарных кавычек. Вы можете:
использовать двойные кавычки вокруг всего sed-скрипта, а внутри все двойные кавычки заключить в обратную косую черту.
закончить строку с одинарными кавычками символом '
, заключить переменную в двойные кавычки, а затем снова начать строку с одинарными кавычками:
LINEB="word"
sed '/g id=\"..\"/a style=\"fill:'"$LINEB"';\"' file.txt > foo.txt
вы пытались передать свой идентификатор из /proc/pid/sessionid в loginctl show-session ID
Но в моем случае он показывает одинаковые числа.
someuser@somemachine-test ~ $ cat /proc/self/sessionid
9293
someuser@somemachine-test ~ $ loginctl list-sessions
SESSION UID USER SEAT
9293 10002 someuser
1 sessions listed.
someuser@somemachine-test ~ $ loginctl show-session 9293
Id=9293
User=10002
Name=someuser
Timestamp=Tue 2018-09-18 13:24:08 CEST
TimestampMonotonic=3614939245544
VTNr=0
Remote=yes
RemoteHost=172.21.98.41
Service=sshd
Scope=session-9293.scope
Leader=8290
Audit=9293
Type=tty
Class=user
Active=yes
State=active
IdleHint=no
IdleSinceHint=0
IdleSinceHintMonotonic=0
LockedHint=no
И я также могу найти его по имени cgourp:
someuser@somemachine-test ~ $ cat /proc/self/cgroup
11:pids:/
10:memory:/user.slice
9:freezer:/
8:hugetlb:/
7:devices:/
6:cpuacct,cpu:/user.slice
5:blkio:/
4:perf_event:/
3:cpuset:/
2:net_prio,net_cls:/
1:name=systemd:/user.slice/user-10002.slice/session-9293.scope
Для c++ существует Интерфейс DBus в systemd -logind , а также библиотека C sd _login . Но, к сожалению, у меня нет в этом опыта.