Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Самопальный сервис для systemd: не запускается при загрузке  (Прочитано 3046 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн postscripter

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
По рекомендациям прогрессивной половины убунтоводов заменил скрипт на "сервис", типа правильнее.
Согласен, правильнее, только не работает. Чего-то не хватает?  :idiot2:

Цитировать

cat /etc/systemd/system/my-mount-BADDISK.service
[Unit]
Description=My disk mounter
Requires=media-sweethome-BAD\x2dDISK.mount
After=media-sweethome-BAD\x2dDISK.mount

[Service]
ExecStart=/home/sweethome/scripts/my-mount-BAD-DISK.sh

[Install]
WantedBy=media-sweethome-BAD\x2dDISK.mount


cat /home/sweethome/scripts/my-mount-BAD-DISK.sh
#!/bin/bash
mount --bind "/media/sweethome/BAD-DISK/" "/home/dom/BAD-DISK/" > /tmp/mymnt.log 2>>&1

Вручную стартует без ошибок. В автомате после перезагрузки не стартует вообще, и в tmp ничего не появляется.

Под катом подробности:
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 02 Сентября 2016, 14:56:37 от postscripter »

Оффлайн Meow Ex

  • Любитель
  • *
  • Сообщений: 63
    • Просмотр профиля
Заменить в [Unit]
Requires=udisks2.service
After=udisks2.service

Добавить в [Service]
Type=oneshot
RemainAfterExit=yes

Заменить в [Install]
WantedBy=remote-fs.target
« Последнее редактирование: 02 Сентября 2016, 15:44:31 от neponi »

Оффлайн postscripter

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
-- А для чего remote-fs.target, и почему именно remote?
-- Есть некоторые сомнения, как оно поведёт себя, если диск будет подключен уже после загрузки?

Да, забыл добавить, Ubuntu в комплектации Desktop, включен автовход. Диск подключен по usb, поэтому требуется многоразовое решение, ведь udisks2.service стартует один раз, при загрузке (так ведь?), а media-sweethome-названиедиска.mount - каждый раз, когда unity подцепляет том.
« Последнее редактирование: 02 Сентября 2016, 17:17:13 от postscripter »

Оффлайн Meow Ex

  • Любитель
  • *
  • Сообщений: 63
    • Просмотр профиля
Насчет remote-fs - не знал про usb. Заменяй на locl-fs.
Юнит udisks2.service имеет тип dbus, который работает в режиме ожидания по триггерам, в свою очередь юнит media-sweethome-названиедиска.mount - результат монтирования, а не необходимость, о чем даже указано в приложенном логе:
сен 02 17:24:57 sweethome-server udisksd[3739]: Cleaning up mount point /media/sweethome/BAD-DISK (device 8:1 is not mounted)

Оффлайн postscripter

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Не получилось. Отрабатывает на 6 секунд раньше, чем монтируется диск. Я его преобразовал к такому виду:

[Unit]
Description=My disk mounter
After= или Requires=udisks2.service media-sweethome-BAD\x2dDISK.mount

[Mount]
What=/media/sweethome/BAD-DISK
Where=/home/dom/BAD-DISK
Type=none
Options=bind

[Install]
WantedBy=local-fs.target

Вот с этой строчкой я не понимаю: .mount - это такой же юнит, как и все, пусть и создаётся на лету, но в выводе systemctl | grep он присутствует. Почему я не могу указать его в зависимостях After? Точнее, я ведь указываю, но ему по боку. Сначала выполняется мой home-dom-bad-disk.mount, и только потом оригинальный media-sweethome-bad-disk.mount. При этом вот тут народ так активно выражает свои восторги, что складывается впечатление, будто у них всё заработало с первого раза.

Лог. Обратите внимание, внешний диск - sda, системный - sdb. Что там смонтировалось в dom/ - загадка...
journalctl | grep "udisk\|BAD\|sda"
сен 05 10:50:18 sweethome-server kernel: sd 2:0:0:0: [sda] 3907029168 512-byte logical blocks: (2.00 TB/1.82 TiB)
сен 05 10:50:18 sweethome-server kernel: sd 2:0:0:0: [sda] 4096-byte physical blocks
сен 05 10:50:18 sweethome-server kernel: sd 2:0:0:0: [sda] Write Protect is off
сен 05 10:50:18 sweethome-server kernel: sd 2:0:0:0: [sda] Mode Sense: 53 00 00 08
сен 05 10:50:18 sweethome-server kernel: sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
сен 05 10:50:18 sweethome-server kernel:  sda: sda1
сен 05 10:50:18 sweethome-server kernel: sd 2:0:0:0: [sda] Attached SCSI disk
сен 05 10:50:19 sweethome-server udisksd[2587]: udisks daemon version 2.1.7 starting
сен 05 10:50:20 sweethome-server udisksd[2587]: Acquired the name org.freedesktop.UDisks2 on the system message bus
сен 05 10:50:20 sweethome-server udisksd[2587]: Cleaning up mount point /media/sweethome/BAD-DISK (device 8:1 is not mounted)
сен 05 10:50:24 sweethome-server udisksd[2587]: Mounted /dev/sda1 at /media/sweethome/BAD-DISK on behalf of uid 1000
сен 05 10:50:24 sweethome-server ntfs-3g[3867]: Mounted /dev/sda1 (Read-Write, label "BAD-DISK", NTFS 3.1)
сен 05 10:50:24 sweethome-server ntfs-3g[3867]: Cmdline options: rw,nodev,nosuid,uid=1000,gid=1000,uhelper=udisks2
сен 05 10:50:24 sweethome-server ntfs-3g[3867]: Mount options: rw,nodev,nosuid,uhelper=udisks2,allow_other,nonempty,relatime,default_permissions,fsname=/dev/sda1,blkdev,blksize=4096
сен 05 10:51:17 sweethome-server sudo[4528]: sweethome : TTY=pts/18 ; PWD=/home/sweethome ; USER=root ; COMMAND=/bin/ls /home/dom/BAD-DISK/
sweethome@sweethome-server:~$


sweethome@sweethome-server:~$ mount | grep sd
/dev/sdb1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
/dev/sdb1 on /home/dom/BAD-DISK type ext4 (rw,relatime,errors=remount-ro,data=ordered)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
/dev/sda1 on /media/sweethome/BAD-DISK type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2)
sweethome@sweethome-server:~$


sweethome@sweethome-server:~$ systemctl status media-sweethome-BAD\\x2dDISK.mount
● media-sweethome-BAD\x2dDISK.mount - /media/sweethome/BAD-DISK
   Loaded: loaded
   Active: active (mounted) since Пн 2016-09-05 10:50:24 +06; 1h 1min ago
    Where: /media/sweethome/BAD-DISK
     What: /dev/sda1
sweethome@sweethome-server:~$


sweethome@sweethome-server:~$ systemctl status home-dom-BAD\\x2dDISK.mount
● home-dom-BAD\x2dDISK.mount - My disk mounter
   Loaded: loaded (/etc/systemd/system/home-dom-BAD\x2dDISK.mount; enabled; vendor preset: enabled)
   Active: active (mounted) since Пн 2016-09-05 10:50:18 +06; 9min ago
    Where: /home/dom/BAD-DISK
     What: /dev/sdb1
  Process: 968 ExecMount=/bin/mount /media/sweethome/BAD-DISK /home/dom/BAD-DISK -t none -o bind (code=exited, status=0/SUCCESS)

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.


Пользователь добавил сообщение 05 Сентября 2016, 12:02:16:
Ну вот, доигрался - systemd сегфолтнулся) Видать, не ожидал кириллицы в "multi-usеr.targеt" (собственно, как и я)    ???
« Последнее редактирование: 05 Сентября 2016, 12:03:13 от postscripter »

Оффлайн Meow Ex

  • Любитель
  • *
  • Сообщений: 63
    • Просмотр профиля
Итак, на моей системе взлетело следующее решение. Создаешь
sudo gedit /etc/systemd/system/home-user-usb.mountи записываешь туда следующее
[Unit]
Description=Mountmydisk

[Mount]
What=/dev/disk/by-uuid/0668-C79B #Здесь пишешь uuid своего устройства
Where=/home/user/usb #Здесь пишешь куда необходимо монтировать
Options=uid=1000,gid=1000,realtine

[Install]
WantedBy=multi-user.target
сохраняешь и добавляешь в автозагрузку
systemctl enable home-user-usb.mountВАЖНО: название юнита .mount должно соответствовать точке монтирования. Подкаталоги записываются через дефис.

Оффлайн postscripter

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Это не мешает юнити монтировать этот же диск потом в media? Она делает это в монопольном режиме, особенно с ntfs, т.е. один и тот же диск не может быть смонтирован дважды. Поэтому я использую bind.



Ваше решение пока не проверял, т.к. даже после удаления юнита с кириллицей и ссылок на него система больше не грузится... Придётся сносить. Так невовремя она сломалась, теперь только после отпуска смогу заняться... Последним я проверял вот этот юнит, и он почти заработал, но всё равно конфликтовал с Юнити, если устройство втыкается уже ПОСЛЕ загрузки.


Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Зачем его потом монтировать в /media ?  :idiot2:
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн postscripter

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Есть три причины.
1) Чтобы он отобразился в левой панели наутилуса (или что там сейчас в роли ФМ).
2) Чтобы другие программы (возможно, о которых я и не подозреваю), которые ожидают видеть флешки именно в media, увидели диск там. Например, в kodi у меня настроено сканирование этой папки.
3) Чтобы юнити не сыпала ошибками, что не может смонтировать диск (в медиа).

Можно отключить монтирование в медиа совсем, тогда не будет ошибок, но и не будет флешек в ФМ... выбор небольшой.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
1. Favorites.
2. "Другие программы" либо написаны идиотами, либо не предназначены для использования людьми. Ref: FHS
3. Она и пытаться не будет… Если диск уже смонтирован, FUSE его пропускает.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн postscripter

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Будет, будет, ещё как: https://forum.ubuntu.ru/index.php?topic=280785.msg2210371#msg2210371

Никогда не пользовался favorites. Это получается, если у меня три диска, они там будут постоянно торчать, даже когда отключены. Плохо. Нет, я хочу добить эту тему всё-таки. Чувствую, что решение где-то рядом, но если даже ничего не получится, и англоязычные товарищи не помогут, я просто сделаю sleep 10. Никакого оверкила.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
При чём тут тот топик?…
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн postscripter

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля


Цитировать
Если диск уже смонтирован, FUSE его пропускает.
Если диск уже смонтирован (usbmount), может fuse его и пропускает, но юнити рисует окошко с ошибкой. Я в том топике писал об этом.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
У вас там вообще дурдом был. Я так и не понял, что вы там монтировали. USB как устройство? Неудивительно, что там файл появлялся.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Meow Ex

  • Любитель
  • *
  • Сообщений: 63
    • Просмотр профиля
Я может быть изначально не понял условие задачи, мой пардон, только вот теоретически - у вас все сложно. Практически - результат, получаемый по конфигурации того юнита, который у меня заработал


Побегал по ссылкам, и вот об этом
Цитировать
my unit starts 4 sec. BEFORE the media-sweethome.mount. Curious!
я писал
Цитировать
юнит media-sweethome-названиедиска.mount - результат монтирования, а не необходимость
т.е. в зависимостях юнита стоит конечное условие и его невозможно было обработать, потому что при загрузке системы его не существует.

Прошу прощения, что объясняю "на пальцах", просто я нуб, который любит читать мануалы.

 

Страница сгенерирована за 0.038 секунд. Запросов: 25.