Нужно запустить.sh от имени root при загрузке или войти

Все еще новичок в Linux и работает на Ubuntu 12.10

У меня есть беспроводная флешка (ae2500), у которой есть известные проблемы, которые были частично решены с помощью ndiswrapper. Однако, чтобы использовать его, я должен запускать одни и те же сценарии при каждой перезагрузке, эффективно удаляя и переустанавливая драйвер. Я сделал файл.sh для запуска каждый раз, чтобы упростить его, но я должен каждый раз заходить в sudo.

Я ищу три решения, и хотя не все они необходимы для решения этой конкретной проблемы, я все же хотел бы узнать их все в учебных целях.

  1. запускать скрипты или file.sh при загрузке (как и другие программы)
  2. запускать сценарии или файл file.sh автоматически с правами суперпользователя
  3. сделать установку постоянной, чтобы не проходить процесс каждый раз.

Будем весьма благодарны за любую дополнительную информацию, которая может помочь мне относительно этого, которую я не собирался спрашивать (включая оптимизацию моих команд), или общие знания. Ниже приводится содержание файла. Я просто сделал это так, как поступил бы.

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 (или любой другой скрипт) для запуска при загрузке, вы хотите;

  1. Поместите ваш сценарий в легкодоступном месте (например, на рабочем столе).
  2. Убедитесь, что если вы щелкнете правой кнопкой мыши по сценарию и перейдете к свойствам, на вкладке "Разрешения" появится надпись "Выполнить"; 'Кто-нибудь'.
  3. Откройте leafpad или любой другой текстовый редактор и введите:

    [Desktop Entry]
    Name=yourScriptName
    Exec=/usr/bin/yourScript.sh
    Type=Application
    Terminal=false
    
  4. Нажмите Ctrl + S и в качестве имени заполните "scriptName.desktop" и сохраните его на рабочем столе.
  5. Откройте терминал с помощью Ctrl + Alt + T.
  6. Тип:

    cd ~/Desktop
    

    ~ Означает дом, теперь он должен сказать что-то вроде:

    userName@computerName:~/Desktop$
    
  7. Затем:

    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, и он прекрасно работает для меня,
Надеюсь, это было полезное и понятное объяснение:).

Вессель

Другие вопросы по тегам