Вероятно, вы никогда не сможете найти этому простому определению. Но в самом общем и упрощенном виде, если вы сравниваете символьное устройство с блочным устройством, вы можете сказать, что символьное устройство дает вам прямой доступ к оборудованию, так как если вы вставляете один байт, этот байт попадает на оборудование (из Конечно, это не так просто, как в наши дни). В то время как блочное устройство считывает и записывает на устройство блоками разного размера. Вы можете указать размер блока, но, поскольку связь осуществляется блоками, требуется время буферизации.
Подумайте о блочном устройстве как о жестком диске, на котором вы читаете и записываете по одному блоку данных за раз, а символьное устройство - это последовательный порт. Вы отправляете один байт данных, а другая сторона получает этот байт, затем следующий, и так далее и так далее.
Опять же, это не очень простая концепция для объяснения. Примеры, которые я привел, являются грубыми обобщениями и могут быть легко опровергнуты для какой-то конкретной реализации каждого примера.
Для автоматического запуска libreoffice при загрузке требуется, чтобы в данный момент существовал графический сеанс.
Окружение рабочего стола загружается в graphical.target
, которое следует за multi-user.target
.
Вам также необходимо указать правильные переменные среды для сеанса. Измените конфигурацию службы на следующую:
[Unit]
Description=test
[Service]
ExecStart=/usr/bin/libreoffice --writer /full/path/to/testing.odt
WorkingDirectory=/home/pi/Documents
StandardOutput=inherit
StandardError=inherit
User=pi
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/pi/.Xauthority"
[Install]
WantedBy=graphical.target
Примечание:Также необходимо указать ПОЛНЫЙ путь к testing.odt.
После этого перезагрузите конфигурации демона и включите его:
sudo systemctl daemon-reload
sudo systemctl enable <my_service>
И это должно сработать.
Если вы планируете запускать LibreOffice, вы можете перенести запуск приложения в XDG и автоматически запускать его после запуска среды рабочего стола
[Desktop Entry]
Name=File
Type=Application
Exec=libreoffice --writer /full/path/to/odt
Terminal=false