Запуск скрипта при выключении компьютера
Задача: Сделать автоматический запуск нашего скрипта перед перезагрузкой и выключением компьютера.
Для примера создадим скрипт выполняющий обновление системы перед выключением.
Для управления загрузкой и работой сервисов в kubuntu начиная с версии 15.04 используется systemd.
Systemd хранит свои юниты в папке /etc/systemd/system/ туда мы и положим свой новый юнит.
Создаем файл сервиса с именем poweroff_dist_upgrade.service
sudo nano /etc/systemd/system/poweroff_dist_upgrade.service
добавляем в него содержимое
[Unit]
Description=Dist Upgrade before restart and power off
After=systemd-user-sessions.service
[Install]
WantedBy=multi-user.target reboot.target poweroff.target
Unit — общая информация.
Description — описание сервиса.
After — задаёт порядок загрузки. В этом случае после старта сессии пользователя.
Service — содержит информацию о службе
ExecStop — Какой скрипт будет выполнен
Type — Типы службы. oneshot для скриптов, которые выполняют одно задание и завершаются
Install — когда юнит должен быть активирован.
multi-user.target или runlevel3.target соответствует runlevel=3 «Многопользовательский режим без графики»
Назначаем права на запуск
sudo chmod +x /etc/systemd/system/poweroff_dist_upgrade.service
Создаем сам скрипт который будет выполняться
sudo nano /usr/local/bin/distupgrade.sh
#!/bin/bash
apt update && apt dist-upgrade -f -y && apt autoremove -y
echo ‘Обновление ‘$(date ‘+%m.%d %H:%M’) >> /var/log/dist-upgrade_before_power_off.log
exit 0
Делаем скрипты выполняемым
sudo chmod +x /usr/local/bin/distupgrade.sh
Перезагружаем systemd для поиска новых или измененных юнитов:
sudo systemctl daemon-reload
Включаем наш новый юнит
sudo systemctl enable poweroff_dist_upgrade.service
Всё, теперь после этого при выключении и перезагрузки компьютера будет автоматически запускаться наш скрипт /usr/local/bin/distupgrade.sh
Для отключения используем
sudo systemctl disable poweroff_dist_upgrade.service
Linux выполнить скрипт при выключении
Запись: xintrea/mytetra_db_alensav/master/base/15530987390zjht6plc9/text.html на raw.githubusercontent.com
Е сли на вопрос: «как добавить программу в автозагрузку?» — начинающие пользователи находят ответ достаточно быстро, то вопрос о запуске скрипта, при выключении/перезагрузки, ставит их в тупик. В статье будет описан стандартный способ для автоматического выполнения команд при включении и выключении linux, а также более простой способ для пользователей, у которых установлен gdm и графический интерфейс, например ubuntu.
Немного теории.
Следует знать, что в Linux существует 7 уровней запуска. Однако, использоваться могут только 6.
Как у всех уважающих себя программ отсчёт начинается с 0-ля.
0 — Остановка или выключение системы.
1 — Однопользовательский режим.
2 — Многопользовательский режим, но без поддержки сети.
3 — Тоже самое, но с сетью.
4 — Добавили для красоты Не используется.
5 — Графический режим с загрузкой X сервера.
6 — Перезагрузка.
Если перейти в папку /etc (В некоторых дистрибутивах /etc/rc.d) то можно увидеть папки с 7-мью уровнями запуска.
Например при выключении компьютера, выполнятся все скрипты из папки rc0.d
Тут следует остановится по подробнее. Дело в том, что самих скриптов (а точнее сценариев) в этой папке нету, а есть только ссылки на файлы, которые лежат в папке /etc/init.d. Эти сценарии выполняют различные задачи, в зависимости от параметра start или stop (например /etc/init.d/reboot start и /etc/init.d/reboot stop это разные команды, а /etc/init.d/reboot вообще не будет работать). Если в ссылке стоит первая буква S, то значит сценарию подаётся параметр start, а если стоит буква K(от слова kill), то параметр stop. Цифра после буквы обозначает порядок выполнения сценария.
Например, на выше вставленном скриншоте вначале выполниться команда /etc/init.d/hddtemp stop, а уже позже /etc/init.d/networking start.
Хватит теории. Переходим к практике.
Для того, чтобы добавить команду в автозагрузку, достаточно поместить её в файл /etc/rc.local.
В этой части статьи в качестве редактора будет использоваться nano, но вы можете пользоваться своим любимым редактором, например gedit.
И помещаем наши команды чуть выше строчки с exit 0.
Для того, что бы команды выполнялись перед выключением или перезагрузкой нам нужно создать сценарий в папке /etc/init.d
s udo nano /etc/init.d/имя_сценария
#! /bin/sh
case «$1» in
start)
echo «подан сигнал start»
;;
stop)
echo «подан сигнал stop»
;; esac
Если будет подаваться только один сигнал, то просто закомментируйте строку поставив в начале команды знак #
Например
Теперь делаем файл исполняемым:
s udo chmod +x /etc/init.d/имя_сценария
Создать ссылки можно вручную, но проще это сделать через команду update-rc.d
Например:
s udo update-rc.d имя_сценария start 20 0 6 . stop 1 0 6 .
Точки важны (обе). Исследуя просторы интернета, у меня сложилось впечатление, что синтаксис этой программы иногда меняется. Актуальные примеры можно посмотреть по команде «man update-rc.d». Примеры будут в низу.
Эта команда создаст по 2 ссылки в каталогах /etc/rc 0 .d (второе число в команде) и /etc/rc 6 .d (третье число в команде). Причём вначале будет выполняться сценарий с параметром stop (т.к. стоит 1), а уже потом с параметром start (т.к. стоит 20).
Если второй параметр не нужен, то можно выполнить команду:
s udo update-rc.d имя_сценария stop 1 0 6 .
Советую ставить приоритет повыше (т.е. число после start или stop должно быть маленьким), желательно меньше 20. В обратном случае у меня иногда зависал компьютер при попытке перезагрузиться.
Для пользователей ubuntu, да и многих других современных дистрибутивов с gdm можно воспользоваться…
Что касается автозагрузки то можно воспользоваться способом описанным здесь .
Или просто открыть «автоматически запускаемые приложения» командой:
Для выполнения скрипта при выключении компьютера, помещаем его в файл /etc/gdm/PostSession/Default
s udo gedit /etc/gdm/PostSession/Default
Прямо над строчкой exit 0.
- SSH_пересылка файлов
- Android_на_Virtualbox
- Flash player
- dd_Commands
- rsync _СИНХРОНИЗАЦИЯ
- Обзор систем бекапа в ubuntu
- rsnapshot
- Postfix
- watch
- CP_remote_local
- Время
- ИНДИКАТОРЫ
- Экпериментальное изучение
- ССЫЛКИ
- Путеводитель_LINUX
- ПОРТЫ (PORT)
- Программы для ubuntu
- NETWORK
- Ярлыки программ
- Распознавание текста
- FSTAB редактирование
- Планирование заданий
- CRON
- Command at
- Ошибки CRON
- 15 лучших КОМАНД CRON
- Автосборка
- авто_команды_перед_откл
- GREP ПОИСК
- COmmands_UBUNTU
- Команды_Ubuntu_Алфавит
- webmin
- Резервное копирование Ununtu
- Откат системы Ubuntu
- Журнал активности_USERUBUNTU
- Neofetch — информация о системе linux
- Установка редактора Emacs
- Редакторы Brackets,
- Сервер nginx на Ubuntu
- Частые команды
- Записать видео с экрана в терминале linux:
- Начало работы с Vagrant
- Сокращаем команды терминала через alias
- XED
- CodeLobster IDE
- Установка необходимых программ
- Завершить процесс в Linux
- disk
- Как скачать файл с сети в консоли?
- Анализ нагрузки на веб-сервер Linux
- Ubuntu SERVER
- MYSQL
- ODA File Converter
- BRL-CAD
- БД
- Cloud Selectel
- Как распаковать tar.bz2 архив в Linux?
- mysupercloud.ru
- Apache в Ubuntu
- Создание и удаление баз в MySQL/MariaDB
- phpMyAdmin
- MySQL/MariaDB: как сменить пароль пользователя
- Как установить веб-сервер Apache на Ubuntu 16.04
- Install package owncloud-files
- Apache HTTP Server
- Настройка файла php.ini
- HTML: Абзац и красная строка
- Как установить Java 8 JDK, JRE в Ubuntu
- Текущее время и дата клиента.
- Данный скрипт выводит текущую дату и время
- Дата на сайте HTML
- Дисковое пространство
- ОЧИСТКА UBUNTU
- Лучшие способа очистки мусора в Ubuntu
- BleachBit
- Лог файлы Linux
- создания загрузочной флэшки
- КАК ПОЛЬЗОВАТЬСЯ TELNET
- Настройка фаервола в Ubuntu с помощью утилиты UFW
- Orange pi ps 2
- Распаковка ZIP Linux
- Могут встретиться и файлы XZ. Разархивируем командой
- dd
- Настройка сети в Linux, диагностика и мониторинг
- Руководство-Настройка сети вручную
- Настройка проводной сети
- Как создать загрузочную флешку Ubuntu Mate для Orange Pi PC из Windows
- Как работает SAMBA? часть 2
- scrript_SAV
- Синхронизация времени в Ubuntu
- Выполнение скрипта при запуске или выключении linux
- ctrl+l, что бы появился адрес
- Автоматическое монтирование яндекс диска в linux
- Выполнить скрипт при выходе из системы
- Настройка rdp сервера в Linux
- Удаленный рабочий стол ubuntu 16.04
- Сервер VNC
- Как распаковать rar в Linux
- 6 простых способов ускорить Ubuntu 16.04 в разы
- Увеличение дискового пространства
- Как узнать свободное место на диске?
- настройка записи UBUNTU
- Создать загрузочную флешку (USB диск)
- как установить img образ ubuntu на sd card под ubuntu
- Запись img образа на SD card
- Как записывать, форматировать и управлять SD картой на Linux
- Сделать образ linux img
- Установка полноценной Ubuntu на USB-накопитель
- как копировать файл в несколько папок в ubntu
Выполнение скрипта при запуске или выключении linux
Если на вопрос: «как добавить программу в автозагрузку?» — начинающие пользователи находят ответ достаточно быстро, то вопрос о запуске скрипта, при выключении/перезагрузки, ставит их в тупик. В статье будет описан стандартный способ для автоматического выполнения команд при включении и выключении linux, а также более простой способ для пользователей, у которых установлен gdm и графический интерфейс, например ubuntu.
Консольный вариант.
Немного теории.
Следует знать, что в Linux существует 7 уровней запуска. Однако, использоваться могут только 6.
Как у всех уважающих себя программ отсчёт начинается с 0-ля.
0 — Остановка или выключение системы.
1 — Однопользовательский режим.
2 — Многопользовательский режим, но без поддержки сети.
3 — Тоже самое, но с сетью.
4 — Добавили для красоты Не используется.
5 — Графический режим с загрузкой X сервера.
6 — Перезагрузка.
Если перейти в папку /etc (В некоторых дистрибутивах /etc/rc.d) то можно увидеть папки с 7-мью уровнями запуска.
Например при выключении компьютера, выполнятся все скрипты из папки rc0.d
Тут следует остановится по подробнее. Дело в том, что самих скриптов (а точнее сценариев) в этой папке нету, а есть только ссылки на файлы, которые лежат в папке /etc/init.d. Эти сценарии выполняют различные задачи, в зависимости от параметра start или stop (например /etc/init.d/reboot start и /etc/init.d/reboot stop это разные команды, а /etc/init.d/reboot вообще не будет работать). Если в ссылке стоит первая буква S, то значит сценарию подаётся параметр start, а если стоит буква K(от слова kill), то параметр stop. Цифра после буквы обозначает порядок выполнения сценария.
Например, на выше вставленном скриншоте вначале выполниться команда /etc/init.d/hddtemp stop, а уже позже /etc/init.d/networking start.
Хватит теории. Переходим к практике.
Для того, чтобы добавить команду в автозагрузку, достаточно поместить её в файл /etc/rc.local.
В этой части статьи в качестве редактора будет использоваться nano, но вы можете пользоваться своим любимым редактором, например gedit.
И помещаем наши команды чуть выше строчки с exit 0.
Для того, что бы команды выполнялись перед выключением или перезагрузкой нам нужно создать сценарий в папке /etc/init.d
Если будет подаваться только один сигнал, то просто закомментируйте строку поставив в начале команды знак #
Например
Теперь делаем файл исполняемым:
Создать ссылки можно вручную, но проще это сделать через команду update-rc.d
Например:
Точки важны (обе). Исследуя просторы интернета, у меня сложилось впечатление, что синтаксис этой программы иногда меняется. Актуальные примеры можно посмотреть по команде «man update-rc.d». Примеры будут в низу.
Эта команда создаст по 2 ссылки в каталогах /etc/rc0.d (второе число в команде) и /etc/rc6.d (третье число в команде). Причём вначале будет выполняться сценарий с параметром stop (т.к. стоит 1), а уже потом с параметром start (т.к. стоит 20).
Если второй параметр не нужен, то можно выполнить команду:
Советую ставить приоритет повыше (т.е. число после start или stop должно быть маленьким), желательно меньше 20. В обратном случае у меня иногда зависал компьютер при попытке перезагрузиться.
Для пользователей ubuntu, да и многих других современных дистрибутивов с gdm можно воспользоваться…
Графический вариант.
Что касается автозагрузки то можно воспользоваться способом описанным здесь.
Или просто открыть «автоматически запускаемые приложения» командой:
Для выполнения скрипта при выключении компьютера, помещаем его в файл /etc/gdm/PostSession/Default
Прямо над строчкой exit 0.