Нужно запустить.sh от имени root при загрузке или войти
Все еще новичок в Linux и работает на Ubuntu 12.10
У меня есть беспроводная флешка (ae2500), у которой есть известные проблемы, которые были частично решены с помощью ndiswrapper. Однако, чтобы использовать его, я должен запускать одни и те же сценарии при каждой перезагрузке, эффективно удаляя и переустанавливая драйвер. Я сделал файл.sh для запуска каждый раз, чтобы упростить его, но я должен каждый раз заходить в sudo.
Я ищу три решения, и хотя не все они необходимы для решения этой конкретной проблемы, я все же хотел бы узнать их все в учебных целях.
- запускать скрипты или file.sh при загрузке (как и другие программы)
- запускать сценарии или файл file.sh автоматически с правами суперпользователя
- сделать установку постоянной, чтобы не проходить процесс каждый раз.
Будем весьма благодарны за любую дополнительную информацию, которая может помочь мне относительно этого, которую я не собирался спрашивать (включая оптимизацию моих команд), или общие знания. Ниже приводится содержание файла. Я просто сделал это так, как поступил бы.
cd ~/ndiswrapper-1.58rc1
sudo modprobe -rf ndiswrapper
sudo rm /etc/modprobe.d/ndiswrapper.conf
sudo rm -r /etc/ndiswrapper/*
sudo depmod -a
sudo make uninstall
sudo make
sudo make install
sudo ndiswrapper -i bcmwlhigh5.inf
ndiswrapper -l
sudo modprobe ndiswrapper
5 ответов
Чтобы получить файл для запуска при запуске, вы, по сути, хотите поместить.desktop в /etc/xdg/autostart/
Вот как настроить.desktop для вашего файла из командной строки:
sudo mv file.sh /usr/bin
Это перемещает путь к файлу оболочки в /usr/bin,
Затем перейдите к
/usr/share/applications
Вам нужно создать файл.desktop, чтобы вы набрали
sudo -H gedit file.desktop &
& Означает, что вы все еще можете использовать терминал, но оставить файл открытым. Удобно, если у тебя память о золотой рыбке, как у меня.
В гедите напишите:
[Desktop Entry]
Name=myfileName
Exec=/usr/bin/file.sh
Type=Application
Terminal=false
Вы можете закрыть его сейчас, если хотите. Вы можете добавить его к значку, добавив строку icon=path/to/icon тоже, если это вам нравится.
Теперь, чтобы запустить этот файл при запуске, вам нужно сохранить его копию в
/etc/xdg/autostart/
Это должно работать, если скрипт (myfile.sh) уже работает, то есть.
Вы можете попробовать поместить файл file.sh в /etc/init.d/ и использовать update-rc.d
update-rc.d file.sh defaults
У меня есть альтернативное предложение к другим ответам: используйте crontab
от имени root запустите crontab и добавьте задание
@reboot / path / to / your / script
http://en.wikipedia.org/wiki/Cron
Вот как бы я решил эту проблему. Я не готов сказать, что это лучше или хуже, чем другие ответы, и приветствую комментарии.
Чтобы запустить его при входе в систему (я нахожусь на 12.04, так что это может немного отличаться), просто нажмите на меню в правом верхнем углу (с параметрами выключения) и нажмите Startup Applications...
Затем нажмите на Add, дайте ему имя и описание и перейдите к местоположению скрипта bash. Выйдите из системы, затем снова включите и все должно заработать.
Если вы делаете это таким образом, я бы предложил изменить sudo в gksudo в вашем сценарии, чтобы он запрашивал привилегии sudo в хорошем графическом интерфейсе, а не просто сидел в терминале и просил об этом.
[Это сочетание ответа сороки и моего собственного опыта.]
Чтобы получить скрипт.sh (или любой другой скрипт) для запуска при загрузке, вы хотите;
- Поместите ваш сценарий в легкодоступном месте (например, на рабочем столе).
- Убедитесь, что если вы щелкнете правой кнопкой мыши по сценарию и перейдете к свойствам, на вкладке "Разрешения" появится надпись "Выполнить"; 'Кто-нибудь'.
Откройте leafpad или любой другой текстовый редактор и введите:
[Desktop Entry] Name=yourScriptName Exec=/usr/bin/yourScript.sh Type=Application Terminal=false- Нажмите Ctrl + S и в качестве имени заполните "scriptName.desktop" и сохраните его на рабочем столе.
- Откройте терминал с помощью Ctrl + Alt + T.
Тип:
cd ~/Desktop~ Означает дом, теперь он должен сказать что-то вроде:
userName@computerName:~/Desktop$Затем:
sudo mv yourScript.sh /usr/bin
(обычно рекомендуется положить его в /usr/local/bin чтобы его можно было выполнить напрямую командой yourScript.sh вместо "/path/to/script").
sudo cp scriptName.desktop /usr/share/applications
sudo mv scritptName.desktop /etc/xdg/autostart
Это оно!
Я на Lubuntu 17.04, и он прекрасно работает для меня,
Надеюсь, это было полезное и понятное объяснение:).
Вессель