Эквивалент Autoexec.bat для Ubuntu, который запускается с правами root?

В Ubuntu должно быть несколько «autoexec.bat» эквивалентов, так как я вижу файлы вроде rc.local, которые, похоже, делают очень мало, потому что в комментариях к файлу написано, что по умолчанию это не работает, и я попытался вставить эту команду там, и это не сработало.

Что мне нужно знать, так это то, куда я помещаю эту строку.

echo 0 | /usr/bin/tee -a /sys/class/leds/smc::kbd_backlight/brightness

Я также видел rc.local в /etc/init.d, но где я бы разместил cmd, чтобы он работал, загадка, так как там две функции, поэтому я помещаю его в конец одного из этих функций или в последней строке?

Команде требуется разрешение root для запуска, и в идеале она должна выполняться при запуске компьютера. Когда команда затемняет клавиатуру моего MacBook Air.

Кроме того, я также хотел бы знать, какой файл мне нужно отредактировать, если только конкретный пользователь будет выполнять эту команду. Так как это команда root, и я не хочу предоставлять права администратора или sudo этому пользователю, я бы хотел, чтобы эта команда выполнялась от имени пользователя root, когда пользователь входит в систему и пользователь не может остановить выполнение этой команды.


Дополнительные открытия
$HOME/.profile - это сценарий входа в систему, но он не запускается от имени пользователя root, он работает, если вы выполняете команду sudo, но это не нужно мне.

/etc/profile странный, он не выполняется при загрузке, но когда я захожу в оболочку и выполняю sudo -i ", он запускается, как только sudo переходит в интерактивный режим


Аккуратный короткий cut
С версией 14.04, возможно, работавшей в более ранних версиях, вы просто добавляете строку в crontab, используя sudo crontab -e и добавляете строку «@reboot whatcommandwithfullpath», и она работает. Но в этой новой версии я создал сценарий выскочки, который ближе к тому, как это должно быть сделано.

5
задан 16 August 2014 в 13:44

5 ответов

Можно создать ведьму демона, правильный способ сделать это. Однако это немного более твердо, чем rc.local.

посмотрите здесь: https://superuser.com/questions/530071/installing-daemon-on-a-fresh-ubuntu-system

подробная справка (можно взять пример/etc/init.d/hostname):

скопируйте скелет:

sudo cp /etc/init.d/skeleton /etc/init.d/keyboard_backlight

отредактируйте скелет:

sudo nano /etc/init.d/keyboard_backlight

ищите это

do_start()
{
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
                $DAEMON_ARGS \
                || return 2
        # Add code here, if necessary, that waits for the process to be ready
        # to handle requests from services started subsequently which depend
        # on this one.  As a last resort, sleep for some time.

}

и измените его как это:

do_start()
{
        echo 0 | /usr/bin/tee -a /sys/class/leds/smc::kbd_backlight/brightness
}

Прокомментируйте или удалите строки в do_stop и do_reload

do_stop()
{
}
do_reload()
{
}

Сохраните файл.

Дайте разрешение выполнения файлу:

sudo chmod 755 /etc/init.d/keyboard_backlight

Протестируйте свой сервис:

sudo /etc/init.d/keyboard_backlight start

Если все хорошо, загрузите свой сервис для запуска

sudo update-rc.d keyboard_backlight defaults 99

С уважением.

2
ответ дан 16 August 2014 в 13:44

Может быть, для оболочек входа в систему они выполняются в следующем порядке:

1./etc/profile
2./etc/profile.d/ files
3.$HOME/.bash_profile
4.$HOME/.bash_login

Однако я не уверен, что / etc / profile будет выполнен до того, как какой-либо пользователь войдет в систему, но на всякий случай стоит попробовать Я прав.

0
ответ дан 16 August 2014 в 13:44

Это все еще работает?

Этот скрипт будет запущен до появления графического интерфейса ...

  1. Составьте скрипт с нужными командами. vi file.sh

  2. Скопируйте скрипт в /etc/init.d cp file.sh /etc/init.d/file.sh

  3. [ 119] Изменить разрешение, чтобы разрешить выполнение chmod + x /etc/init.d/file.sh

  4. В /etc/init.d Ссылка! sudo update-rc.d file.sh start 99 2. (не забывайте "." в конце команды)

Если вам нужно отключить этот скрипт в ближайшем будущем: sudo update-rc.d -f file.sh удалить

Это кажется довольно простым, и вы можете хранить разные скрипты для разных вещей

0
ответ дан 16 August 2014 в 13:44

Скорее всего, вы ищете /etc/rc.local

, если вы добавляете какую-либо команду до exit 0, которая должна выполняться от имени пользователя root.

Не забудьте изменить permisson на исполняемый файл для /etc/rc.local и /etc/init.d/rc.local, если он не будет работать, оставьте как есть, если они уже исполняемые.

0
ответ дан 16 August 2014 в 13:44

Допустим, у вас есть рабочий скрипт (с правильными правами доступа к файлу) с именем myscript.sh ;

cd в папку что у вас есть сценарий и выполните:

sudo cp myscript.sh     /etc/profile.d/

Это скопирует сценарий в место, содержащее сценарии, которые выполняются при загрузке, так что при следующей загрузке он должен работать.

0
ответ дан 20 April 2020 в 05:13

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

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