Linux выполнить скрипт при выключении

Запуск скрипта при выключении компьютера

Задача: Сделать автоматический запуск нашего скрипта перед перезагрузкой и выключением компьютера.

Для примера создадим скрипт выполняющий обновление системы перед выключением.

Для управления загрузкой и работой сервисов в 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.

Читайте также:  Linux bash имена файлов

В этой части статьи в качестве редактора будет использоваться 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
Читайте также:  Справочный центр astra linux

Источник

Выполнение скрипта при запуске или выключении 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.

Читайте также:  Команда if status линукс

В этой части статьи в качестве редактора будет использоваться 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.

Похожие статьи:

Источник

Оцените статью
Adblock
detector