Выполнение сценария перед экраном входа в систему

Вы можете использовать это с переменной флага, например.добавить флаг в командную строку:

use_x=1
param_x=foobar
somecmd ${use_x:+-x} ${use_x:+$param_x}

Конечно, часть с param_xне такая уж хорошая идея, так как она подвержена разбиению на слова -и подстановке. Однако это не должно быть проблемой для самого статического флага, но в целом использование массива здесь было бы более надежным.

Чтобы проверить, установлена ​​ли переменная, [ -n "$var" ]работает аналогичным образом, поэтому ${var:+value}не так много пользы. С другой стороны,${var+value}(без двоеточия )полезно указать разницу между пустой и неустановленной переменной :

.
unset a
b=
[ "${a+x}" = "x" ] && echo a is set
[ "${b+x}" = "x" ] && echo b is set
1
09.07.2019, 20:36
2 ответа
Kindly add the script in /etc/profile.d

Если вы хотите, чтобы он был специфичным для пользователя, пожалуйста, добавьте его ниже, чтобы он выполнялся при входе пользователя в систему

/home/username/.profile
1
27.01.2020, 23:30

Ubuntu 19.04 использует systemd, поэтому предпочтительным способом для таких сценариев будет использование службы sysd -.

Для этого вам понадобятся два файла :1 )тот script.sh, который вы уже написали (Я предполагаю, что он проверен и работает )и 2 )модульный файл, определяющий службу systemd.

Примером последнего может быть:

[Unit]
Description=Service to check for external monitors during boot.

[Service]
Type=Simple
ExecStart=/bin/bash /path/to/your/monitor/script.sh

[Install]
WantedBy=multi-user.target

Descriptionи ExecStartдолжны говорить сами за себя -пояснения, Type=Simpleозначает, что сценарий должен запускаться только один раз (, а не каждые X секунд или около того )и WantedBy=multi-user.targetзаставляют его запускаться после того, как вы «нормальная» загрузка (без выключения, без режима восстановления и необязательной графики ). Конечно, вы можете сделать скрипт исполняемым и не добавлять /bin/bashв строку ExecStart-.

Сценарий переходит к /etc/systemd/system, например. по имени monitor-check.serviceобратите внимание, что суффикс.service-обязателен! Установите владельца на rootи разрешения на 644.

Вы можете протестировать сервис,

systemctl start monitor-check

или

service monitor-check start

и проверьте состояние, заменив startна statusв приведенных выше командах.

Чтобы включить использование сервиса загрузки:

systemctl enable monitor-check.service

Если вы теперь посмотрите на service monitor-check status, вы должны прочитать enabledв строке Loaded:-.

Разумеется, сам скрипт должен принадлежать пользователю root и иметь644-разрешения из соображений безопасности. Лучше всего хранить его в новых каталогах, таких как, например. /etc/my_scriptsили /etc/systemd/my_scripts.

После перезагрузки вы можете использовать статус службы, чтобы проверить ее код выхода.

1
27.01.2020, 23:30

Теги

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