В 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 переходит в интерактивный режим
sudo crontab -e
и добавляете строку «@reboot whatcommandwithfullpath», и она работает. Но в этой новой версии я создал сценарий выскочки, который ближе к тому, как это должно быть сделано. Можно создать ведьму демона, правильный способ сделать это. Однако это немного более твердо, чем 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
С уважением.
Может быть, для оболочек входа в систему они выполняются в следующем порядке:
1./etc/profile
2./etc/profile.d/ files
3.$HOME/.bash_profile
4.$HOME/.bash_login
Однако я не уверен, что / etc / profile будет выполнен до того, как какой-либо пользователь войдет в систему, но на всякий случай стоит попробовать Я прав.
Это все еще работает?
Этот скрипт будет запущен до появления графического интерфейса ...
Составьте скрипт с нужными командами. vi file.sh
Скопируйте скрипт в /etc/init.d cp file.sh /etc/init.d/file.sh
- [ 119] Изменить разрешение, чтобы разрешить выполнение chmod + x /etc/init.d/file.sh
В /etc/init.d Ссылка! sudo update-rc.d file.sh start 99 2. (не забывайте "." в конце команды)
Если вам нужно отключить этот скрипт в ближайшем будущем: sudo update-rc.d -f file.sh удалить
blockquote>Это кажется довольно простым, и вы можете хранить разные скрипты для разных вещей
Скорее всего, вы ищете /etc/rc.local
, если вы добавляете какую-либо команду до exit 0
, которая должна выполняться от имени пользователя root.
Не забудьте изменить permisson на исполняемый файл для /etc/rc.local
и /etc/init.d/rc.local
, если он не будет работать, оставьте как есть, если они уже исполняемые.
Допустим, у вас есть рабочий скрипт (с правильными правами доступа к файлу) с именем myscript.sh
;
cd
в папку что у вас есть сценарий и выполните:
sudo cp myscript.sh /etc/profile.d/
Это скопирует сценарий в место, содержащее сценарии, которые выполняются при загрузке, так что при следующей загрузке он должен работать.