Перейти к содержанию

Как закинуть bash файл в автозагрузку ?


Рекомендуемые сообщения

Привет! У меня есть bash-скрипт fix_caps_lock.sh , которой убирает задержку при выключении клавиши CapsLock:

#!bin/sh

xkbcomp /etc/myxkbmap $DISPLAY

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

После перезагрузки при старте Linux Mint у меня выходит ошибка Are you sure you want to proceed?

 

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

xkbcomp /etc/myxkbmap $DISPLAY

Что бы исправит проблему. Я даже файлу  fix_caps_lock.sh дал права на выполнение через:

sudo chmod +x fix_caps_lock.sh

Как можно это исправить ?

Ошибка при старте системы:

msg6483785055-64506.jpg

Изменено пользователем CRAFTER - Games
Ссылка на комментарий
27 минут назад, CRAFTER - Games сказал:

Привет! У меня есть bash-скрипт fix_caps_lock.sh , которой убирает задержку при выключении клавиши CapsLock:

#!bin/sh

xkbcomp /etc/myxkbmap $DISPLAY

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

После перезагрузки при старте Linux Mint у меня выходит ошибка Are you sure you want to proceed?

 

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

xkbcomp /etc/myxkbmap $DISPLAY

Что бы исправит проблему. Я даже файлу  fix_caps_lock.sh дал права на выполнение через:

sudo chmod +x fix_caps_lock.sh

Как можно это исправить ?

Ошибка при старте системы:

msg6483785055-64506.jpg

В терминале выполни

sudo systemctl edit --force --full script.service

Откроется редактор, в него пропиши

[Unit] Description=My Script Service After=multi-user.target [Service] Type=idle ExecStart=ТУТ ПУТЬ ДО СКРИПТА [Install] WantedBy=multi-user.target

В строке "ExecStart" укажи путь до скрипта

Сохрани

 

Далее

sudo systemctl enable script

Если получишь ошибку то выполни

sudo systemctl daemon-reload

Перезагрузись и проверяй

Ссылка на комментарий

@redsn0w Я ввел:

[Unit] Description=My Script Service After=multi-user.target [Service] Type=idle ExecStart=/etc/fix_caps_lock.sh [Install] WantedBy=multi-user.target

fix_caps_lock.sh - исполняемый файл.

Далее

sudo systemctl daemon-reload

Но после перезагрузки системы скрипт не был запущен об этом говорит, ошибка клавиши CapsLock. При этом если я просто опять же в консоль запущу команду 
 

xkbcomp /etc/myxkbmap $DISPLAY

То ошибка пропадает. Есть другие способы засунуть в автозапуск скрипт ?

Ссылка на комментарий

@redsn0w Мне пишет ошибку:

sudo systemctl enable mysrcipt
Failed to enable unit: Unit file mysrcipt.service does not exist.

Это значит у меня путь не правильный ? 

1.thumb.png.e256fd80f9e2276c4506a2fc91d9bb32.png

Хотя путь у меня правильный, может скрипт нужно сюда засунуть /etc/systemd/system/ ?

Ссылка на комментарий
9 минут назад, CRAFTER - Games сказал:

@redsn0w Мне пишет ошибку:

sudo systemctl enable mysrcipt
Failed to enable unit: Unit file mysrcipt.service does not exist.

Это значит у меня путь не правильный ? 

1.thumb.png.e256fd80f9e2276c4506a2fc91d9bb32.png

Хотя путь у меня правильный, может скрипт нужно сюда засунуть /etc/systemd/system/ ?

Ты все это повторил?

3 часа назад, redsn0w сказал:

В терминале выполни

sudo systemctl edit --force --full script.service

Откроется редактор, в него пропиши

[Unit] Description=My Script Service After=multi-user.target [Service] Type=idle ExecStart=ТУТ ПУТЬ ДО СКРИПТА [Install] WantedBy=multi-user.target

В строке "ExecStart" укажи путь до скрипта

Сохрани

 

Далее

sudo systemctl enable script

Если получишь ошибку то выполни

sudo systemctl daemon-reload

Перезагрузись и проверяй

?

Ссылка на комментарий

@redsn0w Ну я выполнил сперва:

sudo systemctl edit --force --full script.service

И там уже есть строка 

 

[Unit] Description=My Script Service After=multi-user.target [Service] Type=idle ExecStart=/etc/fix_caps_lock.sh [Install] WantedBy=multi-user.target

Далее я ввел:

 

sudo systemctl daemon-reload

и

sudo systemctl enable mysrcipt

Но в последней команде опять:

$ sudo systemctl enable mysrcipt
Failed to enable unit: Unit file mysrcipt.service does not exist.

 

Ссылка на комментарий

@redsn0w Привет! Смотрите почему эта команда 

xkbcomp /etc/myxkbmap $DISPLAY

Если ее ввести в командной строке работает, но при этом там есть конечно предупреждения:

Warning:          No symbols defined for <AB11> (keycode 97)
Warning:          No symbols defined for <JPCM> (keycode 103)
Warning:          No symbols defined for <I120> (keycode 120)
Warning:          No symbols defined for <AE13> (keycode 132)
Warning:          No symbols defined for <I149> (keycode 149)
Warning:          No symbols defined for <I154> (keycode 154)
Warning:          No symbols defined for <I168> (keycode 168)
Warning:          No symbols defined for <I178> (keycode 178)
Warning:          No symbols defined for <I183> (keycode 183)
Warning:          No symbols defined for <I184> (keycode 184)
Warning:          No symbols defined for <FK19> (keycode 197)
Warning:          No symbols defined for <FK24> (keycode 202)
Warning:          No symbols defined for <I217> (keycode 217)
Warning:          No symbols defined for <I219> (keycode 219)
Warning:          No symbols defined for <I222> (keycode 222)
Warning:          No symbols defined for <I230> (keycode 230)
Warning:          No symbols defined for <I248> (keycode 248)

Но это не важно ведь команда работает, но когда я делаю bash-скрипт:

#!bin/bash
xkbcomp /etc/myxkbmap $DISPLAY

И запускаю его то он не работает.

Ссылка на комментарий

Запустить bash скрипт как systemd сервис

В Linux вы можете запустить bash скрипт как сервис через systemd (вместо использования планировщика cron). Таким образом вы можете обеспечить постоянный запуск скрипта, запускать скрипт при загрузке Linux, контролировать его состояние и использовать другие преимущества systemd.

Создайте файл со скриптом:

$ mcedit /usr/local/bin/myscript.sh

#!/bin/bash
while true
do
//ваш код
sleep 10
done

Разрешите запуск скрипта:

$ chmod +x /usr/local/bin/myscript.sh

Создайте юнит файл:

$ sudo mcedit /etc/systemd/system/myscript.service

[Unit]
Description=Test Bash Script in Systemd
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/myscript.sh
[Install]
WantedBy=multi-user.target
Если скрипт взаимодействует с сетью, его нужно запускать после инициализации сети. Это обеспечивается опцией After=network.target.

В секции [Service] можно дополнительно добавить различные опции:

  • Type — определяет тип сервиса. По умолчанию используется simple. Тип oneshot значит, что сервис должен выполнить разовую задачу и завершиться;
  • ExecStop – задать команду, которая нужно выполнить при остановке сервиса;
  • RemainAfterExit=true указывает, что systemd будет считать сервис активным, несмотря на то, что процесс завершился.

Обновите конфигурацию systemd:

$ systemctl daemon-reload

Добавьте сервис в автозагрузку и запустите его:

$ systemctl enable myscript.service
$ systemctl start myscript.service

Проверьте что сервис запущен:

$ systemctl status myscript.service

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...