У меня есть сценарий оболочки, который можно запускать только из живого сеанса (LiveCD или Live USB), потому что он сокращает корневую файловую систему фактической установки, что может быть сделано только тогда, когда файловая система не установлена.
Если сценарий запускается из текущего сеанса, он должен продолжить выполнение.
Я не могу найти способ дифференцировать живой сеанс и «обычный» сеанс пользователя, так как живая сессия имеет внешний вид и очень близко к установленным системным сеансам , Единственное, что я могу сказать до сих пор, это то, что в живых сеансах всегда есть ubuntu как имя хоста, но я не могу полагаться на это, поскольку пользователь может выбрать это при установке Ubuntu.
Есть ли способ идентификации это в командной строке сценария / командной строки?
(я колебался между публикацией в Ask Ubuntu или Stack Overflow, я могу удалить пост и повторно отправить на Stack Overflow, если это более подходит)
Есть много отличительных особенностей между живым сеансом и обычным сеансом. На первом снимке мне приходит в голову, что в реальном сеансе нет реального пользователя. Это можно использовать.
Итак, не было бы gid больше, чем 999 в /etc/passwd, соответствует любому реальному пользователю, кроме nobody пользователя.
$ awk -F: '($3>=1000){print $1}' /etc/passwd
nobody
Следующий скрипт должен работать ,
#!/bin/bash
var=$(awk -F: '($3>=1000){print $1}' /etc/passwd | wc -l)
if [[ $var -gt 1 ]]; then
echo "normal session"
else
echo "live session"
fi