Как запустить скрипт во время загрузки с правами root

Вы можете определить, используете ли вы Unity 3D или 2D, открыв системный монитор. Если вы видите процесс с именем compiz на вкладке процессов, вы используете Unity 3D. Если он работает metacity, вы работаете с Unity 2D.

Идеи для работы Unity 3D:

Сначала установите пакет nux-tools и запустите /usr/lib/nux/unity_support_test -p в терминальном окне. Он покажет, поддерживается ли ваше оборудование Unity 3D. Если у вас есть графическая карта Nvidia или AMD / ATI, вам, возможно, придется сначала установить проприетарные драйверы, чтобы получить (хорошую) поддержку 3D. Если он говорит Unity 3D supported: yes, вы можете продолжить другие шаги. Если нет, вы не можете использовать Unity 3D. Установите Unity, если он не установлен, запустив sudo apt-get install unity gnome-session. Теперь выйдите из системы, там должен быть логотип Ubuntu рядом с вашим именем пользователя в диспетчере входа. Нажмите на него и выберите «Ubuntu» и войдите снова. Unity 3D должен начинаться. Если он все еще запускает Unity 2D, а не 3D, откройте терминал и введите unity --replace. Unity 3D должен начинаться, если нет, вывод терминала может быть интересным. Если все вышеописанное не работает, создайте нового пользователя и войдите в систему. Не забудьте выбрать «Ubuntu», как в 3. Возможно, некоторые из ваших предпочтений старого пользователя нарушены, новый пользователь начнет со свежих настроек.
1
задан 17 February 2014 в 15:10

5 ответов

Включите команду в /etc/rc.local.

Примечание: вы должны поставить команду перед последней строкой в ​​/etc/rc.local, которая содержит: «exit 0».

25
ответ дан 24 May 2018 в 22:43
  • 1
    Примечание: вы должны поставить команду до последней строки в /etc/rc.local, которая содержит: exit 0 – rubo77 15 October 2014 в 01:02
  • 2
    /etc/rc.local в ubuntu 15.10 имеет в комментарии, что " Этот сценарий выполняется в конце каждого многоуровневого уровня запуска. " Таким образом, сценарий можно запускать несколько раз во время загрузки, не так ли? – jarno 27 December 2015 в 17:33
  • 3
    @jamo, да, на каждом уровне запуска. Я не знаю, как это связано с запуском " при загрузке ', который обычно означает «запускать один раз при загрузке». – erm3nda 23 May 2017 в 01:07

Используйте параметр crontab, чтобы запустить ваш скрипт после перезагрузки,

, вы можете сделать это, добавив @reboot код в cron

@reboot yourScriptPath 

. [ ! d3]

10
ответ дан 24 May 2018 в 22:43
  • 1
    Вы имели в виду использование команды crontab -e, которая не нуждается в привилегиях суперпользователя? Интересно, может ли он запускать скрипты, которые нужно запускать как root. – jarno 27 December 2015 в 16:26
  • 2
    Я проверил это. Он не запускает скрипт как root. – jarno 11 January 2016 в 17:43
  • 3
    Вы должны добавить строку во время выполнения команды sudo crontab -e, чтобы она запускала скрипт как root во время запуска. – jarno 14 April 2016 в 17:12
  • 4
    не забудьте удалить /var/run/crond.reboot, если нет, не выполнит задачу – Albert Català 20 May 2016 в 13:46

Включите свой файл сценария в /etc/init.d/ с разрешением Executable, а затем установите другой уровень выполнения

$ update-rc.d script-name default

. Он загрузит ваш скрипт при загрузке.

5
ответ дан 24 May 2018 в 22:43
  • 1
    Не работает для меня в Kali Linux v2.0. Вы имели в виду update-rc.d script-name enable? – Sopalajo de Arrierez 5 October 2015 в 06:38
  • 2
    update-rc.d & lt; script-name & gt; сценарий оболочки по умолчанию, который у вас есть на /etc/init.d/<script-name> – M S Parmar 5 October 2015 в 09:32

Создайте текстовый файл, подобный этому в /etc/cron.d/:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

@reboot   root    yourScriptPath

(Вы должны заменить yourScriptPath на путь к скрипту, который вы хотите запустить.)

3
ответ дан 24 May 2018 в 22:43

Это работало для меня на Ubuntu 17.04:

создать файл сценария тура, например disable_cdrom, в удобном для вас месте. В моем случае home/yterle/disable_cdrom. В моем случае:
#!/bin/sh
eject /dev/sr0 -i 1
создать файл сценария тура, например disable_cdrom, в удобном для вас месте. В моем случае home/yterle/disable_cdrom. В моем случае: перейдите к /etc/systemd/system и создайте там файл service. Например, sudo gedit /etc/systemd/system/disable_cdrom.service

My disable_cdrom.service выглядит так:

[Unit]
Description=Disable cdrom

[Service]
Type=oneshot
ExecStart=/bin/sh /home/yterle/disable_cdrom

[Install]
WantedBy=multi-user.target

Где ExecStart указывает, чтобы запустить ваш скрипт с помощью /bin/sh

Затем запустите systemctl enable vgaoff.service, чтобы включить службу systemd

3
ответ дан 24 May 2018 в 22:43

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

Похожие вопросы: