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


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Запуск скрипта от root  (Прочитано 6602 раз)

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

Оффлайн Сперанский

  • Автор темы
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4055
  • Dictum ac factum
    • Просмотр профиля
Запуск скрипта от root
« : 19 Декабря 2012, 22:52:39 »
Есть команда
echo 1 > /sys/bus/pci/rescanПредставляет собой фикс для ноутбуков HP, у которых не видится флешка во встроенном кардридере если ноут загружался без неё. Нужно добавить выполнение этой команды в атозагрузку от root. Создал скрипт, в /etc/rc.local прописал команду его запуска, скрипт выполняется- проверял тестовым файлом, но нужного эффекта не производит, пробовал делать с задержкой в 30 секунд- не помогает. Создавал службу в /etc/init.d/ с последующим добавлением её в автозагрузку через update-rc.d, тоже не помогает.
После всех неудачных загрузок достаточно в терминале выполнить sudo pci-rescan.sh (скрипт положил в /usr/bin) как флешка начинает видиться. Помогите автоматизировать этот процесс!
Сам текст скрипта:
#!/bin/bash
echo 1 > /sys/bus/pci/rescan 2>/dev/null
exit 0
Возможно получиться через sudoers выдать права на выполнение этого скрипта без запроса пароля и добавить его в автозагрузку Unity для каждого пользователя? Как это сделать?

Оффлайн dikiyZ

  • Активист
  • *
  • Сообщений: 342
  • Убунтоид, как правило, человек. Но такой занудный!
    • Просмотр профиля
Re: Запуск скрипта от root
« Ответ #1 : 19 Декабря 2012, 23:19:29 »
у меня проблема решилась перепрошивкой на новый BIOS. F48
если система просто работает без дополнительного шаманства, то теряется ощущение собственной элитности. Вот почему нам нужен линукс.
 Предупреждён администрацией форума за неоднократное чувство юмора

Оффлайн absent

  • Активист
  • *
  • Сообщений: 368
  • Ubuntu 16.04
    • Просмотр профиля
Re: Запуск скрипта от root
« Ответ #2 : 19 Декабря 2012, 23:53:28 »
если хочется костылей :), тогда в sudoers добавить, например
ALL ALL=NOPASSWD: /usr/local/sbin/scriptв script поместить скрипт
в /etc/xdg/autostart создать какой-нибудь desktop-файл, например:
[Desktop Entry]
Name=rescan
Exec=sudo /usr/local/sbin/script
Terminal=false
Type=Application
NoDisplay=true

Оффлайн Сперанский

  • Автор темы
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4055
  • Dictum ac factum
    • Просмотр профиля
Re: Запуск скрипта от root
« Ответ #3 : 20 Декабря 2012, 00:38:44 »
у меня проблема решилась перепрошивкой на новый BIOS. F48
У меня F13 и новее для моего ноута нет.

Оффлайн Сперанский

  • Автор темы
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4055
  • Dictum ac factum
    • Просмотр профиля
Re: Запуск скрипта от root
« Ответ #4 : 20 Декабря 2012, 00:50:22 »
absent, костылей не хочется, но без них никак. В sudoers строку добавил, теперь выполняется без запроса пароля, в /etc/xdg/autostart добавил .desktop, но нужного эффекта по прежнему нет! После загрузки флешка при вставке в кардридер не монтируется, после команды sudo pci-rescan.sh в терминале флешка начинает монтироваться! Как ещё можно заставить работать?

Оффлайн Self-Perfection

  • Активист
  • *
  • Сообщений: 331
  • Arch linux, KDE
    • Просмотр профиля
Re: Запуск скрипта от root
« Ответ #5 : 20 Декабря 2012, 01:23:42 »
Как ещё можно заставить работать?

Тыкаться наобум - не наш метод! Диагностика и анализ! Добавляем в скрипт логирование:

#!/bin/bash -x
exec >>/tmp/script.log 2>&1
date
echo 1 > /sys/bus/pci/rescan
exit 0
Для начала можно убедиться, что лог таки пишется. Затем уже перелогиниваемся и смотрим лог. Запускался ли скрипт вообще? Если запускался - какие ошибки возникли?

cat /sys/bus/pci/rescan возвращает текущее значение параметра? Если да, то можно попробовать запилить его мониторинг, чтобы понять, кто и когда его меняет. Потому что странно почему, казалось бы, наиболее прямой из озвученных методов с выставлением значения из /etc/rc.local не сработал. Возможно, в какой-то момент при загрузке уже после выполнения /etc/rc.local значение сбрасывается. Или в rc.local была допущена ошибка - опять-таки может помочь логирование.
Читайте документацию, наставницу вашу!
Памятка по описанию проблем:
Для решения [такой-то задачи] делаю [такие-то действия], но вместо [ожидаемый результат] получаю [описание отличий].

Оффлайн absent

  • Активист
  • *
  • Сообщений: 368
  • Ubuntu 16.04
    • Просмотр профиля
Re: Запуск скрипта от root
« Ответ #6 : 20 Декабря 2012, 08:26:19 »
после команды sudo pci-rescan.sh в терминале флешка начинает монтироваться! Как ещё можно заставить работать?
флешка уже была воткнута, а потом уже набрана команда? если после рескана флешку вытащить и опять воткнуть, то она нормально определяется или надо опять делать рескан?

Оффлайн Сперанский

  • Автор темы
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4055
  • Dictum ac factum
    • Просмотр профиля
Re: Запуск скрипта от root
« Ответ #7 : 20 Декабря 2012, 09:26:13 »
флешка уже была воткнута, а потом уже набрана команда? если после рескана флешку вытащить и опять воткнуть, то она нормально определяется или надо опять делать рескан?
Рескан нужно делать один раз с или без флешки- без разницы, после рескана она начинает определяться неограниченное количество раз.
Логи, к сожалению, только вечером. Кажется мне, что это из-за того, что файл rescan какойто не обычный, потому что элементарное не позволяется:
::~::>> sudo cat /sys/bus/pci/rescan
[sudo] password for speranza:
cat: /sys/bus/pci/rescan: Отказано в доступе

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Запуск скрипта от root
« Ответ #8 : 20 Декабря 2012, 09:44:54 »
Цитировать
Представляет собой фикс для ноутбуков HP, у которых не видится флешка во встроенном кардридере если ноут загружался без неё. Нужно добавить выполнение этой команды в атозагрузку от root. Создал скрипт, в /etc/rc.local прописал команду его запуска, скрипт выполняется- проверял тестовым файлом, но нужного эффекта не производит, пробовал делать с задержкой в 30 секунд- не помогает. Создавал службу в /etc/init.d/ с последующим добавлением её в автозагрузку через update-rc.d, тоже не помогает.
начало командв echo 1 ..... потом подключить флешка??
Не?
« Последнее редактирование: 20 Декабря 2012, 10:03:08 от victor00000 »
Wars ~.o

Оффлайн absent

  • Активист
  • *
  • Сообщений: 368
  • Ubuntu 16.04
    • Просмотр профиля
Re: Запуск скрипта от root
« Ответ #9 : 20 Декабря 2012, 16:17:25 »
Рескан нужно делать один раз с или без флешки- без разницы, после рескана она начинает определяться неограниченное количество раз.
Логи, к сожалению, только вечером. Кажется мне, что это из-за того, что файл rescan какойто не обычный, потому что элементарное не позволяется:
::~::>> sudo cat /sys/bus/pci/rescan
[sudo] password for speranza:
cat: /sys/bus/pci/rescan: Отказано в доступе

судя по всему он и не предназначен для чтения:What: /sys/bus/pci/rescan
Date: January 2009
Contact: Linux PCI developers <linux-pci@vger.kernel.org>
Description:
Writing a non-zero value to this attribute will
force a rescan of all PCI buses in the system, and
re-discover previously removed devices.
Depends on CONFIG_HOTPLUG.
ссылка
как Вам подсказали, убедитесь, что скрипт при автозапуске действительно срабатывает, сделайте логирование куда-нибудь, либо на худой конец создайте файл-метку в корне .

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Запуск скрипта от root
« Ответ #10 : 20 Декабря 2012, 16:24:09 »
Ещё вариант:
LESS='-p reboot' man 5 crontab

Оффлайн Сперанский

  • Автор темы
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4055
  • Dictum ac factum
    • Просмотр профиля
Re: Запуск скрипта от root
« Ответ #11 : 20 Декабря 2012, 20:21:09 »
Тыкаться наобум - не наш метод! Диагностика и анализ! Добавляем в скрипт логирование:
Вот лог:
::~::->> cat /tmp/rescan.log
Thu Dec 20 20:01:16 MSK 2012
+ date
Чт. дек. 20 20:01:23 MSK 2012
+ echo 1
+ exit 0
всё выполняется, как организовать мониторинг файла- не знаю



Оффлайн absent

  • Активист
  • *
  • Сообщений: 368
  • Ubuntu 16.04
    • Просмотр профиля
Re: Запуск скрипта от root
« Ответ #12 : 20 Декабря 2012, 20:49:50 »
пардон, я невнимательно прочитал первый пост. там говорится про кардридер. т.е. под флешкой имеется в виду что-то на подобие microsd?
тут что-то похожее рассматривают и колдуют с параметрами в grub, и вроде как человек доволен результатом. хотя энглиш я плохо понимаю  :P
кстати идея: сделать lsmod до скана и после и сравнить, может какие модули подгрузились.
« Последнее редактирование: 20 Декабря 2012, 20:53:15 от absent »

Оффлайн Сперанский

  • Автор темы
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4055
  • Dictum ac factum
    • Просмотр профиля
Re: Запуск скрипта от root
« Ответ #13 : 20 Декабря 2012, 20:58:24 »
Да, проблема с кардридером на pci и флешкой SD, способ, по ссылке у меня не работает, я его уже видел и пробовал.

Оффлайн absent

  • Активист
  • *
  • Сообщений: 368
  • Ubuntu 16.04
    • Просмотр профиля
Re: Запуск скрипта от root
« Ответ #14 : 20 Декабря 2012, 21:04:14 »
в биосе есть что-то наподобие card reader use a 'power saving' mode? попробовать выключить.

 

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