Здравствуйте.
Сразу хочу сказать, что только начинаю осваивать Linux, поэтому прошу не быть строгими.
Проблема: создал юнит где в строке ExecStart указан абсолютный путь до скрипта. Сам скрипт исполняется. Путь до него сто раз проверил.
Юнит через systemctl enable включил в автозагрузку. При старте системы ничего не происходит. Смотрю лог, а там написано "нет такого файла". Но он есть.
Чё ему надо?

2

p.kovshevojj пишет:

Чё ему надо?

Здравствуйте. Если скрипт и юнит не представляют государственной тайны, то есть смысл опубликовать их + лог и путь к юниту.

MSI H81M-ECO, Intel Core i3-4130T, Intel HD Graphics 4400 | MgaRemix-9 Budgie 10.8.1 x86_64 + Windows 10

3

Права все установил?

Fedora 35 KDE.
Linux is great and super! Long live rock'n'roll! Opera and libretto.
По-русски калинка-малинка моя! Люблю оливье и винегрет.
Yours sincerely, wasting away! Salute people!

4

Скрипт такой (задача присоединить файл к loop устройству и потом его смонтировать). Расположение файла /home/pit имя runVFS.sh

#! /bin/sh
var1=`sudo losetup -f` # (переменной присваиваю номер свободного loop)
sudo losetup $var1 ~/VirtualFS # (присоединяю к устройству)
sudo mount -t ext3 $var1 ~/Newpoint # (монтирую)

Если запускаю скрипт из командной строки, то все отлично работает.
Далее создаю юнит runVFS.service в папке /etc/systemd/system

[Unit]
Description=Run

[Service]
Type=idle
ExecStart=/home/pit/runVFS.sh
User=pit

[Install]
WantedBy=multi-user.target

потом пишу

 Консоль:
sudo systemctl enable runVFS.service

5 (12.05.2021 10:07:55 отредактировано ValentinK)

А что пишет журнал?
Команда

 Консоль:
systemctl status runVFS

И после
 Консоль:
systemctl enable runVFS

запустить сервис
 Консоль:
systemctl start runVFS

Fedora 35 KDE.
Linux is great and super! Long live rock'n'roll! Opera and libretto.
По-русски калинка-малинка моя! Люблю оливье и винегрет.
Yours sincerely, wasting away! Salute people!

6 (12.05.2021 21:31:45 отредактировано alex_q_2000)

/home/pit/runVFS.sh:

#!/bin/bash

var1=$(losetup -f)
losetup $var1 /home/pit/VirtualFS
mount -t auto $var1 /home/pit/Newpoint

/etc/systemd/system/runVFS.service:

[Unit]
Description=Run

[Service]
Type=oneshot
ExecStart=/home/pit/runVFS.sh

[Install]
WantedBy=multi-user.target

*** Добавлено: 12.05.2021 18:34:53 ***

Если нужно монтировать после загрузки + писАть и читать прямо от юзера:
---
...устройство уже смонтировано:
sudo chmod -R 777 /home/pit/Newpoint

Узнаём UUID:
sudo blkid /dev/loop0 (или другой)
бла...бла...UUID="ad1f2c65-d81f-452c-8050-684f68186bfe"...бла

Пишем в /etc/fstab строку:
UUID=ad1f2c65-d81f-452c-8050-684f68186bfe /home/pit/Newpoint ext3 noauto,user,rw 0 0

Изменяем /home/pit/runVFS.sh:

#!/bin/bash

var1=$(losetup -f)
losetup $var1 /home/pit/VirtualFS

и перезагружаемся...

*** Добавлено: 12.05.2021 21:15:55 ***

...или вообще без скрипта /home/pit/runVFS.sh, но со строкой в /etc/fstab (см. выше...)

Изменяем /etc/systemd/system/runVFS.service:

[Unit]
Description=Run

[Service]
Type=oneshot
ExecStart=/usr/bin/bash -c 'losetup $(losetup -f) /home/pit/VirtualFS'

[Install]
WantedBy=multi-user.target

и перезагружаемся...

Не знаю, как ещё можно поизгаляться. Может быть мужики ещё что-нибудь дополнительно нарисуют...

MSI H81M-ECO, Intel Core i3-4130T, Intel HD Graphics 4400 | MgaRemix-9 Budgie 10.8.1 x86_64 + Windows 10

7

p.kovshevojj, у меня один вопрос. А зачем Вы системную службу в профиль пользователя размещаете? Не лучше /usr/bin или куда-то ещё?

P.S. Подправил Ваше сообщение, используйте BB-коды для оформления.

ᛈᚺ'ᚾᚷᛚᚢᛁ ᛗᚷᛚᚹ'ᚾᚨᚠᚺ ᚲᛏᚺᚢᛚᚺᚢ ᚱ'lᚷᛖᚺ ᚹᚷᚨᚺ'ᚾᚨᚷᛚ ᚠᚺᛏᚨᚷᚾ

Asus Prime B460M-K, i5-10500, Intel 630 UHD + NVIDIA GeForce RTX3060, DDR4 32 GB, SSD 1TB + HDD 2TB | Linux Mint 22.3 Cinnamon + Windows 11

8

Огромное спасибо за помощь.
Исправил скрипт и юнит как написал alex_q_2000 и все заработало.
Вот сижу и думаю, а чего принципиально изменилось?
В скрипте вместо sh написали bash
Переменной присвоили значение не устаревшим, а современным способом
Он при старом варианте выполнялся, значит дело не в нем.

В юните Type=idle заменен на oneshot
В чем был секрет - не понял.  bu

Но еще раз огромное преогромное спасибо за оперативную помощь.

p.s. обучаюсь на курсах. Преподаватель доктор наук так грузит, что башка кругом. Но ничего, прорвемся.

9 (16.05.2021 18:52:52 отредактировано Wolfenberg)

p.kovshevojj, sh и bash разные команды сценариев.
Sh - запускает сценарий .shell для запуска бинарных подпрограмм (аналогично файлам .bat в Windows) и запускаться внутри скрипта не может.
Bash - запускает сценарий оболочки bash, которая позволяет управлять службами, скриптами и пр.

Linux Mint 19.3 Mate Edition
Windows 7

10 (17.05.2021 21:45:10 отредактировано alex_q_2000)

p.kovshevojj пишет:

В чем был секрет - не понял

Всё упирается в sudo:
---
1. Ваш юнит запускает скрипт от юзера (User=pit). В скрипте есть sudo, а пароль в момент выполнения скрипта вводить некому. Поэтому блочными устройствами и монтированием должен заниматься тот, кому пароль не нужен, т.е. root (по умолчанию). Ему, соответственно, нужны абсолютные пути, а не тильда.

2. Шебанг-строка обычно не содержит пробелов (#! /bin/sh), обратные кавычки - отстой (``), а #!/bin/bash обеспечивает переносимость скриптов между попсовыми линуксами + имеет расширенную поддержку синтаксиса (echo -e .., [[ .. ]] и т.п.). В общем: #!/bin/bash - rulezz, #!/bin/sh - suxx.

3. Здесь Вы найдёте описание типов сервисов systemd...

MSI H81M-ECO, Intel Core i3-4130T, Intel HD Graphics 4400 | MgaRemix-9 Budgie 10.8.1 x86_64 + Windows 10

11

Wolfenberg пишет:

Sh - запускает сценарий .shell для запуска бинарных подпрограмм (аналогично файлам .bat в Windows) и запускаться внутри скрипта не может.
Bash - запускает сценарий оболочки bash, которая позволяет управлять службами, скриптами и пр.

На самом деле bash тоже shell, только более навороченный.

Fedora 35 KDE.
Linux is great and super! Long live rock'n'roll! Opera and libretto.
По-русски калинка-малинка моя! Люблю оливье и винегрет.
Yours sincerely, wasting away! Salute people!

12

ValentinK пишет:

На самом деле bash тоже shell, только более навороченный.

Вот и нет. Shell - лишь один из сценариев оболочки Bash. Служит для запуски скриптов и бинарных файлов.
Так же ему подчиняются все установленные библиотеки.
Bash же - является многоуровневой средой со своими службами, языком внутренних команд. Так же может выполнять роль интерпретатора (при установке соответствующих пакетов) для ЯП Python, Perl, C++, GNU Assembler.

Linux Mint 19.3 Mate Edition
Windows 7

13 (18.05.2021 18:09:11 отредактировано ValentinK)

Wolfenberg пишет:

Shell - лишь один из сценариев оболочки Bash.

Командная оболочка и есть по компьютерному shell.
Bourne again shell

Fedora 35 KDE.
Linux is great and super! Long live rock'n'roll! Opera and libretto.
По-русски калинка-малинка моя! Люблю оливье и винегрет.
Yours sincerely, wasting away! Salute people!

14 (18.05.2021 19:55:36 отредактировано Oleg65)

Господа, зачем спорить?
Shell :
- "...Это интерпретатор команд LINUX,  который, хотя и не является частью операционной системы, интенсивно использует многие функции операционной системы и, таким образом, служит хорошим примером того, как можно использовать системные вызовы. Это также основной интерфейс между пользователем за терминалом и операционной системой..." Сайт educba.com
- "...Shell предоставляет пользователю интерфейс к системе Unix. Получает от вас данные и на их основе выполняет программы. Когда программа завершает выполнение, shell отображает вывод этой программы.
Shell - это среда, в которой мы можем запускать команды, программы и сценарии оболочки. Есть разные варианты оболочки, так же как существуют разные варианты операционных систем. У каждой разновидности оболочки есть свой собственный набор распознаваемых команд и функций..." Сайт tutorialspoint.com
Не? bw