Где находится переменная среды `$ TERM`, установленная в Debian Jessie для входа в консоль?

С тех пор sed находится в Ваших тегах, вот a sed ответ:

sed '/[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/s/\.[0-9]\+$/.0/'
4
13.04.2017, 15:36
2 ответа

Если у вас есть контроль над зависимостями (т. е. они являются вашим программным обеспечением), сделайте так, чтобы они установили файл для данного файла устройства. То есть, допустим, у вас есть foo.service , который должен зависеть от bar.service | | baz.service .

Затем пакет bar может установить файл /usr/lib/systemd/system/foo.service.d/50-bar-baz.conf со следующим содержимым:

[Unit]
Requires=bar.service

Аналогично для пакета baz .


Если у вас нет контроля над зависимостями, просто создайте сценарий «dispatcher», который проверяет наличие файлов единиц измерения, а затем запускает exec systemctl для выбранного файла единиц измерения. Тогда напишите отдельную единицу и требуйте/после нее из основной единицы:

[Unit]
# inexistent unit names are ignored here
After=bar.service baz.service

[Service]
Type=oneshot
ExecStart=/path/to/dispatcher
-121--195530-

Много хороших ответов, но позвольте мне добавить еще одну вещь... Помните, что Unix является многопроцессорной и многопользовательской системой, поэтому потенциально многие пользователи будут пытаться выполнять файловые операции (например, запись) в (почти) одно и то же время. Со старыми медленными жесткими дисками - возможно, установленными по сети - это не только займет время (для чего программы в основном заблокированы, а пользователям приходится ждать), но и вызовет большое количество перемещений головки чтения/записи диска туда и обратно.

Поэтому файлы, ожидающие записи, некоторое время хранились в памяти и отсортировались после того, как они должны оказаться на диске... и когда буфер был заполнен - или демон дисковой синхронизации ждал необходимого количества секунд (я думаю, что обычно это было около 30 секунд) - весь буфер был выписан на диск «в порядке», причем головке записи приходилось делать только одно непрерывное размашистое движение, записывая файлы на диск, как он пошел... вместо того, чтобы прыгать по всему месту.

Из-за современных быстрых дисков - не говоря уже о твердотельных устройствах - выигрыш намного меньше... особенно на домашней linux-системе, где одновременно работает только один пользователь, и только с несколькими программами.

В любом случае, комбинация ожидающего чтения путем чтения в (в кэш/буфер) больше, чем было запрошено, - и сортировки данных, ожидающих записи, чтобы они могли быть записаны в «одном движении» - была на самом деле очень хорошей идеей в то время, особенно в системах с большим количеством чтения и записи многими пользователями.

-121--5671-

Я полагаю, что TERM наборы в linux для процесса инициализации (pid 1) ядром Linux здесь и там . Вы можете увидеть его в /proc/1/environ (извините, что следующий вывод из Ubuntu 15,04):

$ sudo strings /proc/1/environ 
HOME=/
init=/sbin/init
recovery=
TERM=linux
BOOT_IMAGE=/boot/vmlinuz-3.19.0-25-generic.efi.signed
PATH=/sbin:/usr/sbin:/bin:/usr/bin
PWD=/
rootmnt=/root

В системах на основе Debian/Ubuntu systemd он распространяется на дочерние процессы getty по определениям в /lib/systemd/system/getty @ .service .

[Service]
# the VT is cleared by TTYVTDisallocate
ExecStart=-/sbin/agetty --noclear %I $TERM

Таким образом, можно переопределить TERM в командной строке ядра. Попробуйте изменить /etc/default/grub и запустите update-grub и перезагрузите компьютер.

GRUB_CMDLINE_LINUX="TERM=vt100"
5
27.01.2020, 20:55

Переменная $ TERM обычно устанавливается в / etc / profile или .bashrc зависит от дистрибутива ur с использованием.

Прочтите http://www.tldp.org/HOWTO/Keyboard-and-Console-HOWTO-11.html

-1
27.01.2020, 20:55

Теги

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