Как запустить скрипт при выключении Linux, например Gentoo /etc/local.d, но на Ubuntu [duplicate]

Я хотел бы запустить файл .sh, используя bash для выхода из системы и завершения работы Ubuntu. Я искал в Интернете и нашел только исправления для KDE и GNOME. Сценарий прост, мне просто нужно знать, могу ли я добавить строку кода в файл «logoff / shutdown» или если мне нужно ссылаться на него в другом скрипте.

27
задан 24 July 2013 в 15:17

9 ответов

Как это сделать с systemd

Если вы найдете эту тему после июня 2016 года, Ubuntu и ее производные, включая Mint, будут использовать systemd для управления инициализацией и выключением системы.

С помощью systemd вы создаете один или два файла для вызова своих сценариев с помощью шаблонов ниже и выполняете команду. Простой.

Версия GUI

Сначала создайте сценарии, которые вы хотите запустить при запуске и / или выключении. Я создал .scopening_atstart и .scfullcopy_atend.

Сначала убедитесь, что они оба исполняются, щелкнув правой кнопкой мыши файл, выбрав свойства и убедившись, что под разрешениями вы отметили «Разрешить» выполнение файла как программы.

Два созданных файла заполняют и сохраняют содержимое ramdisk. Они также создают файл в моем домашнем каталоге, чтобы доказать, что служба работает. Они были в форме:

#!/bin/sh cp -pru /home/john/zRamdisk/subdirectory1/* /home/john/.wine/drive_c/subdirectory1/ rm /home/john/stop_time date +%D' '%T > /home/john/stop_time

Затем я открыл свой файловый менеджер как root, открыл /etc/systemd/system и создал файл startup.service и файл save-ramdisk.service. Очевидно, вы можете выбрать свои собственные имена, а общие имена могли включать в себя файл запуска johns_start.service и файл выключения, называемый johns_shutdown.service. Просто не выбирайте существующие имена сервисов.

[Unit] Description=Startup Applications [Service] Type=oneshot RemainAfterExit=false ExecStart=/home/john/.scopening_atstart [Install] WantedBy=multi-user.target

и

[Unit] Description=Save Ramdisk to Wine drive C [Service] Type=oneshot RemainAfterExit=true ExecStart=/bin/true ExecStop=/home/john/.scfullcopy_atend [Install] WantedBy=multi-user.target

Вы можете использовать те же служебные файлы, заменяя полный путь к исполняемому скрипту для моего. [ ! d13]

Затем для каждого из них выполните команду systemctl enable your_files_name (но без службы суффиксов). Итак, мой первый был systemctl enable startup

Перезагрузите компьютер один раз, чтобы запустить службы. Служба запуска будет выполняться всякий раз, когда systemd вводит многопользовательскую цель и службу остановки, когда она выходит из многопользовательской цели. Ниже будут описаны альтернативные служебные файлы с различными условиями активации.

CLI (Command Line) Version

В этом описании предполагается, что вы работаете из своего домашнего каталога, а чем / home / john, используйте sudo по мере необходимости и ваш выбор редактора, где я пишу vim или svim.

Создайте сценарии запуска и завершения работы с первой строкой #!/bin/sh и сделайте их исполняемыми с помощью chmod +x my_new_filename.

Создайте два файла, как указано выше, или в этом примере один файл для работы с задачами запуска и завершения работы. Я буду выполнять скрипты в своем домашнем каталоге, но @don_crissti показал некоторые альтернативы в Stack Exchange.

svim /etc/systemd/system/start_and_stop.service

и скопировал в содержимое файла:

[Unit] Description=Run Scripts at Start and Stop [Service] Type=oneshot RemainAfterExit=true ExecStart=/home/john/.startup_commands #your paths and filenames ExecStop=/home/john/.shutdown_commands [Install] WantedBy=multi-user.target

Затем Включить службу с помощью команду:

systemctl enable start_and_stop

и перезагрузите вашу систему, после чего службы будут активны. Команды systemctl is-enabled start_and_stop и systemctl is-active start_and_stop могут использоваться для мониторинга ваших новых сервисов.

Изменение условий триггера для выключения

Файлы, прежде всего используемые открывать или закрывать многопользовательскую среду для запуска запуска скриптов. В приведенном ниже файле используется начало четырех потенциальных процессов выключения для запуска его скриптов. Добавление или удаление целевых объектов на линии Before line + WantedBy позволит вам делать более точные различия:

Этот файл был предложен в ответ на Unix & amp; Linux by @Matthias, но мне не удалось заставить его работать, пока я не добавил раздел «Установка».

Снова отредактируйте скрипт в /etc/systemd/service/ и включите его, используя systemctl enable your_file_name. Когда я сменил цели, я использовал команду systemclt disable file_name, а затем снова включил ее, которая привязала ее к целевым каталогам. Перезагрузитесь и служба будет работать.

[Unit] Description=Do something required DefaultDependencies=no Before=shutdown.target reboot.target halt.target # This works because it is installed in the target and will be # executed before the target state is entered # Also consider kexec.target [Service] Type=oneshot ExecStart=/home/john/.my_script #your path and filename [Install] WantedBy=halt.target reboot.target shutdown.target
13
ответ дан 17 July 2018 в 21:57

Как это сделать с systemd

Если вы найдете эту тему после июня 2016 года, Ubuntu и ее производные, включая Mint, будут использовать systemd для управления инициализацией и выключением системы.

С помощью systemd вы создаете один или два файла для вызова своих сценариев с помощью шаблонов ниже и выполняете команду. Простой.

Версия GUI

Сначала создайте сценарии, которые вы хотите запустить при запуске и / или выключении. Я создал .scopening_atstart и .scfullcopy_atend.

Сначала убедитесь, что они оба исполняются, щелкнув правой кнопкой мыши файл, выбрав свойства и убедившись, что под разрешениями вы отметили «Разрешить» выполнение файла как программы.

Два созданных файла заполняют и сохраняют содержимое ramdisk. Они также создают файл в моем домашнем каталоге, чтобы доказать, что служба работает. Они были в форме:

#!/bin/sh cp -pru /home/john/zRamdisk/subdirectory1/* /home/john/.wine/drive_c/subdirectory1/ rm /home/john/stop_time date +%D' '%T > /home/john/stop_time

Затем я открыл свой файловый менеджер как root, открыл /etc/systemd/system и создал файл startup.service и файл save-ramdisk.service. Очевидно, вы можете выбрать свои собственные имена, а общие имена могли включать в себя файл запуска johns_start.service и файл выключения, называемый johns_shutdown.service. Просто не выбирайте существующие имена сервисов.

[Unit] Description=Startup Applications [Service] Type=oneshot RemainAfterExit=false ExecStart=/home/john/.scopening_atstart [Install] WantedBy=multi-user.target

и

[Unit] Description=Save Ramdisk to Wine drive C [Service] Type=oneshot RemainAfterExit=true ExecStart=/bin/true ExecStop=/home/john/.scfullcopy_atend [Install] WantedBy=multi-user.target

Вы можете использовать те же служебные файлы, заменяя полный путь к исполняемому скрипту для моего. [ ! d13]

Затем для каждого из них выполните команду systemctl enable your_files_name (но без службы суффиксов). Итак, мой первый был systemctl enable startup

Перезагрузите компьютер один раз, чтобы запустить службы. Служба запуска будет выполняться всякий раз, когда systemd вводит многопользовательскую цель и службу остановки, когда она выходит из многопользовательской цели. Ниже будут описаны альтернативные служебные файлы с различными условиями активации.

CLI (Command Line) Version

В этом описании предполагается, что вы работаете из своего домашнего каталога, а чем / home / john, используйте sudo по мере необходимости и ваш выбор редактора, где я пишу vim или svim.

Создайте сценарии запуска и завершения работы с первой строкой #!/bin/sh и сделайте их исполняемыми с помощью chmod +x my_new_filename.

Создайте два файла, как указано выше, или в этом примере один файл для работы с задачами запуска и завершения работы. Я буду выполнять скрипты в своем домашнем каталоге, но @don_crissti показал некоторые альтернативы в Stack Exchange.

svim /etc/systemd/system/start_and_stop.service

и скопировал в содержимое файла:

[Unit] Description=Run Scripts at Start and Stop [Service] Type=oneshot RemainAfterExit=true ExecStart=/home/john/.startup_commands #your paths and filenames ExecStop=/home/john/.shutdown_commands [Install] WantedBy=multi-user.target

Затем Включить службу с помощью команду:

systemctl enable start_and_stop

и перезагрузите вашу систему, после чего службы будут активны. Команды systemctl is-enabled start_and_stop и systemctl is-active start_and_stop могут использоваться для мониторинга ваших новых сервисов.

Изменение условий триггера для выключения

Файлы, прежде всего используемые открывать или закрывать многопользовательскую среду для запуска запуска скриптов. В приведенном ниже файле используется начало четырех потенциальных процессов выключения для запуска его скриптов. Добавление или удаление целевых объектов на линии Before line + WantedBy позволит вам делать более точные различия:

Этот файл был предложен в ответ на Unix & amp; Linux by @Matthias, но мне не удалось заставить его работать, пока я не добавил раздел «Установка».

Снова отредактируйте скрипт в /etc/systemd/service/ и включите его, используя systemctl enable your_file_name. Когда я сменил цели, я использовал команду systemclt disable file_name, а затем снова включил ее, которая привязала ее к целевым каталогам. Перезагрузитесь и служба будет работать.

[Unit] Description=Do something required DefaultDependencies=no Before=shutdown.target reboot.target halt.target # This works because it is installed in the target and will be # executed before the target state is entered # Also consider kexec.target [Service] Type=oneshot ExecStart=/home/john/.my_script #your path and filename [Install] WantedBy=halt.target reboot.target shutdown.target
13
ответ дан 23 July 2018 в 22:33
  • 1
    Это обычный , чтобы назвать скрипты, начинающиеся с K для «Kill» и S для «Start». – kiri 27 October 2013 в 19:00
  • 2
    Что делать, если скрипту нужны привилегии sudo? Насколько я могу судить, скрипты /etc/rc6.d выполняются как пользователь и не могут использовать gksudo. – Urhixidur 13 August 2014 в 22:10
  • 3
    не работает для меня с 14.04, есть ли какие-либо изменения или неуточненный важный факт? – tomasb 1 October 2014 в 05:35
  • 4
    Совет K99 не подходит для выключения / перезагрузки, если вы хотите сохранить некоторые данные, потому что это происходит ПОСЛЕ ОТКЛЮЧЕНИЯ И K используется для отключения сценария (см. /etc/rcS.d/README), используйте S для запуска и поместите его перед отключением, для загрузки загрузите свой скрипт после монтирования, застрял на этом, потому что эта дезинформация, разрешенная с S как первая буква – tomasb 18 November 2014 в 22:18
  • 5
    Это очень неправильно: i) имена скриптов должны начинаться с K для уровней выполнения 0, 1 и 6 и S для уровней выполнения 2, 3, 4 и 5; ii) вы не нуждаетесь , чтобы вызвать скрипт K99_foo, номер просто определяет порядок запуска скриптов. Вам нужно выбрать тот, который больше, чем другие, если вы хотите, чтобы он бежать последним; iii) Уровень выполнения 0 не предназначен для перезагрузки! ; Это для выключения. 6 для перезагрузки. iv) в каталогах /etc/rcN.d нет сценариев. Вместо этого они должны быть в /etc/init.d и связаны с /etc/rcN.d. – terdon♦ 24 July 2015 в 14:11
  • 6
    Хотя ваш пост правильный, я бы предложил улучшить его, добавив пример того, как такие шаги могут быть выполнены с системами. Пожалуйста, дайте мне знать, как только вы отредактируете сообщение. Спасибо и добро пожаловать в AskUbuntu – Sergiy Kolodyazhnyy 8 July 2016 в 03:01
  • 7
    Привет, Серж, вы имеете в виду примеры, например, в связанной записи или у вас есть что-то еще? Во-вторых, я не уверен, как «сообщить вам». поскольку я не могу найти механизм для контакта с другим пользователем SO. – John 9631 10 July 2016 в 05:43
  • 8
    Да, вы могли бы привести пример такой же, как и в своем другом сообщении. Просто говорю " перейти к этой другой ссылке " не очень хорошо, и ваш ответ выглядит ленивым. Также для обращения к другому пользователю SO используйте @ перед именем пользователя, например @Serg – Sergiy Kolodyazhnyy 10 July 2016 в 05:50
  • 9
    Значительно улучшилось. Очень хорошо, продолжайте хорошую работу! – Sergiy Kolodyazhnyy 10 July 2016 в 07:05
  • 10
    в соответствии с man systemd.unit созданные пользователем файлы могут быть помещены в $XDG_CONFIG_HOME/systemd/user и другие локальные локальные местоположения пользователя – Antonios Hadjigeorgalis 16 December 2016 в 21:43

Как это сделать с systemd

Если вы найдете эту тему после июня 2016 года, Ubuntu и ее производные, включая Mint, будут использовать systemd для управления инициализацией и выключением системы. У меня были проблемы со старым подходом, поэтому я исследовал системный путь.

С помощью systemd вы создаете один или два файла для вызова своих сценариев с использованием шаблонов ниже и выполните команду. Простой.


Версия GUI

Сначала создайте сценарии, которые вы хотите запустить при запуске и / или выключении. Я создал .scopening_atstart и .scfullcopy_atend.

Затем убедитесь, что они оба исполняются, щелкнув файл правой кнопкой мыши, выбрав свойства и убедившись, что под разрешениями вы отметили «Разрешить выполнение файла в качестве программы».

Два созданных мной файла заполняют и сохраняют содержимое ramdisk. Они также создают файл в моем домашнем каталоге, чтобы доказать, что служба работает. Они были в форме:

#!/bin/sh
cp -pru /home/john/zRamdisk/subdirectory1/* /home/john/.wine/drive_c/subdirectory1/
rm /home/john/stop_time
date +%D' '%T > /home/john/stop_time

Затем я открыл свой файловый менеджер как root, открыл /etc/systemd/system и создал файл startup.service и файл save-ramdisk.service. Очевидно, вы можете выбрать свои собственные имена, а общие имена могли включать в себя файл запуска johns_start.service и файл выключения, называемый johns_shutdown.service. Просто не выбирайте существующие имена сервисов.

[Unit]
Description=Startup Applications

[Service]
Type=oneshot
RemainAfterExit=false
ExecStart=/home/john/.scopening_atstart

[Install]
WantedBy=multi-user.target

и

[Unit]
Description=Save Ramdisk to Wine drive C

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/home/john/.scfullcopy_atend

[Install]
WantedBy=multi-user.target

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

Наконец, для каждого из них выполните команду systemctl enable your_files_name (но без службы суффиксов). Итак, мой первый был systemctl enable startup

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


CLI (Command Line) Version

В этом описании предполагается, что вы работаете в своем домашнем каталоге, а не в / home / john, используйте sudo по мере необходимости и ваш выбор редактора, где я пишу vim или svim.

Создайте сценарии запуска и завершения работы оболочки с первой строкой #!/bin/sh и сделайте их исполняемыми с помощью chmod +x my_new_filename.

Создайте два файла, как указано выше, или в этом примере один файл для работы с задачами запуска и завершения работы. Я буду выполнять скрипты в своем домашнем каталоге, но @don_crissti показал некоторые альтернативы в Stack Exchange.

svim /etc/systemd/system/start_and_stop.service

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

[Unit]
Description=Run Scripts at Start and Stop

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/home/john/.startup_commands  #your paths and filenames
ExecStop=/home/john/.shutdown_commands

[Install]
WantedBy=multi-user.target

Затем Включите службу с помощью команду:

systemctl enable start_and_stop

и перезагрузите систему, после чего службы будут активны. Команды systemctl is-enabled start_and_stop и systemctl is-active start_and_stop могут использоваться для контроля ваших новых сервисов.


Изменение условий триггера для выключения

Файлы, прежде всего, используют открытые или закрытые многопользовательской среды для запуска запуска скриптов. В приведенном ниже файле используется начало четырех потенциальных процессов выключения для запуска его скриптов. Добавление или удаление целевых объектов на линии Before line + WantedBy позволит вам делать более тонкие различия:

Этот файл был предложен в ответ на Unix & amp; Linux by @Matthias, но мне не удалось заставить его работать до тех пор, пока я не добавлю раздел установки.

Снова отредактируйте скрипт в /etc/systemd/service/ и включите его, используя systemctl enable your_file_name. Когда я сменил цели, я использовал команду systemclt disable file_name, а затем снова включил ее, которая привязала ее к целевым каталогам. Перезагрузка и обслуживание будут работать.

[Unit]
Description=Do something required
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
# This works because it is installed in the target and will be
#   executed before the target state is entered
# Also consider kexec.target

[Service]
Type=oneshot
ExecStart=/home/john/.my_script  #your path and filename

[Install]
WantedBy=halt.target reboot.target shutdown.target
18
ответ дан 31 July 2018 в 19:37

Как это сделать с systemd

Если вы найдете эту тему после июня 2016 года, Ubuntu и ее производные, включая Mint, будут использовать systemd для управления инициализацией и выключением системы. У меня были проблемы со старым подходом, поэтому я исследовал системный путь.

С помощью systemd вы создаете один или два файла для вызова своих сценариев с использованием шаблонов ниже и выполните команду. Простой.


Версия GUI

Сначала создайте сценарии, которые вы хотите запустить при запуске и / или выключении. Я создал .scopening_atstart и .scfullcopy_atend.

Затем убедитесь, что они оба исполняются, щелкнув файл правой кнопкой мыши, выбрав свойства и убедившись, что под разрешениями вы отметили «Разрешить выполнение файла в качестве программы».

Два созданных мной файла заполняют и сохраняют содержимое ramdisk. Они также создают файл в моем домашнем каталоге, чтобы доказать, что служба работает. Они были в форме:

#!/bin/sh
cp -pru /home/john/zRamdisk/subdirectory1/* /home/john/.wine/drive_c/subdirectory1/
rm /home/john/stop_time
date +%D' '%T > /home/john/stop_time

Затем я открыл свой файловый менеджер как root, открыл /etc/systemd/system и создал файл startup.service и файл save-ramdisk.service. Очевидно, вы можете выбрать свои собственные имена, а общие имена могли включать в себя файл запуска johns_start.service и файл выключения, называемый johns_shutdown.service. Просто не выбирайте существующие имена сервисов.

[Unit]
Description=Startup Applications

[Service]
Type=oneshot
RemainAfterExit=false
ExecStart=/home/john/.scopening_atstart

[Install]
WantedBy=multi-user.target

и

[Unit]
Description=Save Ramdisk to Wine drive C

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/home/john/.scfullcopy_atend

[Install]
WantedBy=multi-user.target

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

Наконец, для каждого из них выполните команду systemctl enable your_files_name (но без службы суффиксов). Итак, мой первый был systemctl enable startup

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


CLI (Command Line) Version

В этом описании предполагается, что вы работаете в своем домашнем каталоге, а не в / home / john, используйте sudo по мере необходимости и ваш выбор редактора, где я пишу vim или svim.

Создайте сценарии запуска и завершения работы оболочки с первой строкой #!/bin/sh и сделайте их исполняемыми с помощью chmod +x my_new_filename.

Создайте два файла, как указано выше, или в этом примере один файл для работы с задачами запуска и завершения работы. Я буду выполнять скрипты в своем домашнем каталоге, но @don_crissti показал некоторые альтернативы в Stack Exchange.

svim /etc/systemd/system/start_and_stop.service

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

[Unit]
Description=Run Scripts at Start and Stop

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/home/john/.startup_commands  #your paths and filenames
ExecStop=/home/john/.shutdown_commands

[Install]
WantedBy=multi-user.target

Затем Включите службу с помощью команду:

systemctl enable start_and_stop

и перезагрузите систему, после чего службы будут активны. Команды systemctl is-enabled start_and_stop и systemctl is-active start_and_stop могут использоваться для контроля ваших новых сервисов.


Изменение условий триггера для выключения

Файлы, прежде всего, используют открытые или закрытые многопользовательской среды для запуска запуска скриптов. В приведенном ниже файле используется начало четырех потенциальных процессов выключения для запуска его скриптов. Добавление или удаление целевых объектов на линии Before line + WantedBy позволит вам делать более тонкие различия:

Этот файл был предложен в ответ на Unix & amp; Linux by @Matthias, но мне не удалось заставить его работать до тех пор, пока я не добавлю раздел установки.

Снова отредактируйте скрипт в /etc/systemd/service/ и включите его, используя systemctl enable your_file_name. Когда я сменил цели, я использовал команду systemclt disable file_name, а затем снова включил ее, которая привязала ее к целевым каталогам. Перезагрузка и обслуживание будут работать.

[Unit]
Description=Do something required
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
# This works because it is installed in the target and will be
#   executed before the target state is entered
# Also consider kexec.target

[Service]
Type=oneshot
ExecStart=/home/john/.my_script  #your path and filename

[Install]
WantedBy=halt.target reboot.target shutdown.target
13
ответ дан 2 August 2018 в 12:40

Как это сделать с systemd

Если вы найдете эту тему после июня 2016 года, Ubuntu и ее производные, включая Mint, будут использовать systemd для управления инициализацией и выключением системы. У меня были проблемы со старым подходом, поэтому я исследовал системный путь.

С помощью systemd вы создаете один или два файла для вызова своих сценариев с использованием шаблонов ниже и выполните команду. Простой.


Версия GUI

Сначала создайте сценарии, которые вы хотите запустить при запуске и / или выключении. Я создал .scopening_atstart и .scfullcopy_atend.

Затем убедитесь, что они оба исполняются, щелкнув файл правой кнопкой мыши, выбрав свойства и убедившись, что под разрешениями вы отметили «Разрешить выполнение файла в качестве программы».

Два созданных мной файла заполняют и сохраняют содержимое ramdisk. Они также создают файл в моем домашнем каталоге, чтобы доказать, что служба работает. Они были в форме:

#!/bin/sh
cp -pru /home/john/zRamdisk/subdirectory1/* /home/john/.wine/drive_c/subdirectory1/
rm /home/john/stop_time
date +%D' '%T > /home/john/stop_time

Затем я открыл свой файловый менеджер как root, открыл /etc/systemd/system и создал файл startup.service и файл save-ramdisk.service. Очевидно, вы можете выбрать свои собственные имена, а общие имена могли включать в себя файл запуска johns_start.service и файл выключения, называемый johns_shutdown.service. Просто не выбирайте существующие имена сервисов.

[Unit]
Description=Startup Applications

[Service]
Type=oneshot
RemainAfterExit=false
ExecStart=/home/john/.scopening_atstart

[Install]
WantedBy=multi-user.target

и

[Unit]
Description=Save Ramdisk to Wine drive C

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/home/john/.scfullcopy_atend

[Install]
WantedBy=multi-user.target

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

Наконец, для каждого из них выполните команду systemctl enable your_files_name (но без службы суффиксов). Итак, мой первый был systemctl enable startup

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


CLI (Command Line) Version

В этом описании предполагается, что вы работаете в своем домашнем каталоге, а не в / home / john, используйте sudo по мере необходимости и ваш выбор редактора, где я пишу vim или svim.

Создайте сценарии запуска и завершения работы оболочки с первой строкой #!/bin/sh и сделайте их исполняемыми с помощью chmod +x my_new_filename.

Создайте два файла, как указано выше, или в этом примере один файл для работы с задачами запуска и завершения работы. Я буду выполнять скрипты в своем домашнем каталоге, но @don_crissti показал некоторые альтернативы в Stack Exchange.

svim /etc/systemd/system/start_and_stop.service

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

[Unit]
Description=Run Scripts at Start and Stop

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/home/john/.startup_commands  #your paths and filenames
ExecStop=/home/john/.shutdown_commands

[Install]
WantedBy=multi-user.target

Затем Включите службу с помощью команду:

systemctl enable start_and_stop

и перезагрузите систему, после чего службы будут активны. Команды systemctl is-enabled start_and_stop и systemctl is-active start_and_stop могут использоваться для контроля ваших новых сервисов.


Изменение условий триггера для выключения

Файлы, прежде всего, используют открытые или закрытые многопользовательской среды для запуска запуска скриптов. В приведенном ниже файле используется начало четырех потенциальных процессов выключения для запуска его скриптов. Добавление или удаление целевых объектов на линии Before line + WantedBy позволит вам делать более тонкие различия:

Этот файл был предложен в ответ на Unix & amp; Linux by @Matthias, но мне не удалось заставить его работать до тех пор, пока я не добавлю раздел установки.

Снова отредактируйте скрипт в /etc/systemd/service/ и включите его, используя systemctl enable your_file_name. Когда я сменил цели, я использовал команду systemclt disable file_name, а затем снова включил ее, которая привязала ее к целевым каталогам. Перезагрузка и обслуживание будут работать.

[Unit]
Description=Do something required
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
# This works because it is installed in the target and will be
#   executed before the target state is entered
# Also consider kexec.target

[Service]
Type=oneshot
ExecStart=/home/john/.my_script  #your path and filename

[Install]
WantedBy=halt.target reboot.target shutdown.target
18
ответ дан 3 August 2018 в 17:03

Как это сделать с systemd

Если вы найдете эту тему после июня 2016 года, Ubuntu и ее производные, включая Mint, будут использовать systemd для управления инициализацией и выключением системы. У меня были проблемы со старым подходом, поэтому я исследовал системный путь.

С помощью systemd вы создаете один или два файла для вызова своих сценариев с использованием шаблонов ниже и выполните команду. Простой.


Версия GUI

Сначала создайте сценарии, которые вы хотите запустить при запуске и / или выключении. Я создал .scopening_atstart и .scfullcopy_atend.

Затем убедитесь, что они оба исполняются, щелкнув файл правой кнопкой мыши, выбрав свойства и убедившись, что под разрешениями вы отметили «Разрешить выполнение файла в качестве программы».

Два созданных мной файла заполняют и сохраняют содержимое ramdisk. Они также создают файл в моем домашнем каталоге, чтобы доказать, что служба работает. Они были в форме:

#!/bin/sh
cp -pru /home/john/zRamdisk/subdirectory1/* /home/john/.wine/drive_c/subdirectory1/
rm /home/john/stop_time
date +%D' '%T > /home/john/stop_time

Затем я открыл свой файловый менеджер как root, открыл /etc/systemd/system и создал файл startup.service и файл save-ramdisk.service. Очевидно, вы можете выбрать свои собственные имена, а общие имена могли включать в себя файл запуска johns_start.service и файл выключения, называемый johns_shutdown.service. Просто не выбирайте существующие имена сервисов.

[Unit]
Description=Startup Applications

[Service]
Type=oneshot
RemainAfterExit=false
ExecStart=/home/john/.scopening_atstart

[Install]
WantedBy=multi-user.target

и

[Unit]
Description=Save Ramdisk to Wine drive C

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/home/john/.scfullcopy_atend

[Install]
WantedBy=multi-user.target

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

Наконец, для каждого из них выполните команду systemctl enable your_files_name (но без службы суффиксов). Итак, мой первый был systemctl enable startup

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


CLI (Command Line) Version

В этом описании предполагается, что вы работаете в своем домашнем каталоге, а не в / home / john, используйте sudo по мере необходимости и ваш выбор редактора, где я пишу vim или svim.

Создайте сценарии запуска и завершения работы оболочки с первой строкой #!/bin/sh и сделайте их исполняемыми с помощью chmod +x my_new_filename.

Создайте два файла, как указано выше, или в этом примере один файл для работы с задачами запуска и завершения работы. Я буду выполнять скрипты в своем домашнем каталоге, но @don_crissti показал некоторые альтернативы в Stack Exchange.

svim /etc/systemd/system/start_and_stop.service

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

[Unit]
Description=Run Scripts at Start and Stop

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/home/john/.startup_commands  #your paths and filenames
ExecStop=/home/john/.shutdown_commands

[Install]
WantedBy=multi-user.target

Затем Включите службу с помощью команду:

systemctl enable start_and_stop

и перезагрузите систему, после чего службы будут активны. Команды systemctl is-enabled start_and_stop и systemctl is-active start_and_stop могут использоваться для контроля ваших новых сервисов.


Изменение условий триггера для выключения

Файлы, прежде всего, используют открытые или закрытые многопользовательской среды для запуска запуска скриптов. В приведенном ниже файле используется начало четырех потенциальных процессов выключения для запуска его скриптов. Добавление или удаление целевых объектов на линии Before line + WantedBy позволит вам делать более тонкие различия:

Этот файл был предложен в ответ на Unix & amp; Linux by @Matthias, но мне не удалось заставить его работать до тех пор, пока я не добавлю раздел установки.

Снова отредактируйте скрипт в /etc/systemd/service/ и включите его, используя systemctl enable your_file_name. Когда я сменил цели, я использовал команду systemclt disable file_name, а затем снова включил ее, которая привязала ее к целевым каталогам. Перезагрузка и обслуживание будут работать.

[Unit]
Description=Do something required
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
# This works because it is installed in the target and will be
#   executed before the target state is entered
# Also consider kexec.target

[Service]
Type=oneshot
ExecStart=/home/john/.my_script  #your path and filename

[Install]
WantedBy=halt.target reboot.target shutdown.target
18
ответ дан 5 August 2018 в 02:20

Как это сделать с systemd

Если вы найдете эту тему после июня 2016 года, Ubuntu и ее производные, включая Mint, будут использовать systemd для управления инициализацией и выключением системы. У меня были проблемы со старым подходом, поэтому я исследовал системный путь.

С помощью systemd вы создаете один или два файла для вызова своих сценариев с использованием шаблонов ниже и выполните команду. Простой.


Версия GUI

Сначала создайте сценарии, которые вы хотите запустить при запуске и / или выключении. Я создал .scopening_atstart и .scfullcopy_atend.

Затем убедитесь, что они оба исполняются, щелкнув файл правой кнопкой мыши, выбрав свойства и убедившись, что под разрешениями вы отметили «Разрешить выполнение файла в качестве программы».

Два созданных мной файла заполняют и сохраняют содержимое ramdisk. Они также создают файл в моем домашнем каталоге, чтобы доказать, что служба работает. Они были в форме:

#!/bin/sh
cp -pru /home/john/zRamdisk/subdirectory1/* /home/john/.wine/drive_c/subdirectory1/
rm /home/john/stop_time
date +%D' '%T > /home/john/stop_time

Затем я открыл свой файловый менеджер как root, открыл /etc/systemd/system и создал файл startup.service и файл save-ramdisk.service. Очевидно, вы можете выбрать свои собственные имена, а общие имена могли включать в себя файл запуска johns_start.service и файл выключения, называемый johns_shutdown.service. Просто не выбирайте существующие имена сервисов.

[Unit]
Description=Startup Applications

[Service]
Type=oneshot
RemainAfterExit=false
ExecStart=/home/john/.scopening_atstart

[Install]
WantedBy=multi-user.target

и

[Unit]
Description=Save Ramdisk to Wine drive C

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/home/john/.scfullcopy_atend

[Install]
WantedBy=multi-user.target

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

Наконец, для каждого из них выполните команду systemctl enable your_files_name (но без службы суффиксов). Итак, мой первый был systemctl enable startup

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


CLI (Command Line) Version

В этом описании предполагается, что вы работаете в своем домашнем каталоге, а не в / home / john, используйте sudo по мере необходимости и ваш выбор редактора, где я пишу vim или svim.

Создайте сценарии запуска и завершения работы оболочки с первой строкой #!/bin/sh и сделайте их исполняемыми с помощью chmod +x my_new_filename.

Создайте два файла, как указано выше, или в этом примере один файл для работы с задачами запуска и завершения работы. Я буду выполнять скрипты в своем домашнем каталоге, но @don_crissti показал некоторые альтернативы в Stack Exchange.

svim /etc/systemd/system/start_and_stop.service

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

[Unit]
Description=Run Scripts at Start and Stop

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/home/john/.startup_commands  #your paths and filenames
ExecStop=/home/john/.shutdown_commands

[Install]
WantedBy=multi-user.target

Затем Включите службу с помощью команду:

systemctl enable start_and_stop

и перезагрузите систему, после чего службы будут активны. Команды systemctl is-enabled start_and_stop и systemctl is-active start_and_stop могут использоваться для контроля ваших новых сервисов.


Изменение условий триггера для выключения

Файлы, прежде всего, используют открытые или закрытые многопользовательской среды для запуска запуска скриптов. В приведенном ниже файле используется начало четырех потенциальных процессов выключения для запуска его скриптов. Добавление или удаление целевых объектов на линии Before line + WantedBy позволит вам делать более тонкие различия:

Этот файл был предложен в ответ на Unix & amp; Linux by @Matthias, но мне не удалось заставить его работать до тех пор, пока я не добавлю раздел установки.

Снова отредактируйте скрипт в /etc/systemd/service/ и включите его, используя systemctl enable your_file_name. Когда я сменил цели, я использовал команду systemclt disable file_name, а затем снова включил ее, которая привязала ее к целевым каталогам. Перезагрузка и обслуживание будут работать.

[Unit]
Description=Do something required
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
# This works because it is installed in the target and will be
#   executed before the target state is entered
# Also consider kexec.target

[Service]
Type=oneshot
ExecStart=/home/john/.my_script  #your path and filename

[Install]
WantedBy=halt.target reboot.target shutdown.target
18
ответ дан 6 August 2018 в 19:01

Как это сделать с systemd

Если вы найдете эту тему после июня 2016 года, Ubuntu и ее производные, включая Mint, будут использовать systemd для управления инициализацией и выключением системы. У меня были проблемы со старым подходом, поэтому я исследовал системный путь.

С помощью systemd вы создаете один или два файла для вызова своих сценариев с использованием шаблонов ниже и выполните команду. Простой.


Версия GUI

Сначала создайте сценарии, которые вы хотите запустить при запуске и / или выключении. Я создал .scopening_atstart и .scfullcopy_atend.

Затем убедитесь, что они оба исполняются, щелкнув файл правой кнопкой мыши, выбрав свойства и убедившись, что под разрешениями вы отметили «Разрешить выполнение файла в качестве программы».

Два созданных мной файла заполняют и сохраняют содержимое ramdisk. Они также создают файл в моем домашнем каталоге, чтобы доказать, что служба работает. Они были в форме:

#!/bin/sh
cp -pru /home/john/zRamdisk/subdirectory1/* /home/john/.wine/drive_c/subdirectory1/
rm /home/john/stop_time
date +%D' '%T > /home/john/stop_time

Затем я открыл свой файловый менеджер как root, открыл /etc/systemd/system и создал файл startup.service и файл save-ramdisk.service. Очевидно, вы можете выбрать свои собственные имена, а общие имена могли включать в себя файл запуска johns_start.service и файл выключения, называемый johns_shutdown.service. Просто не выбирайте существующие имена сервисов.

[Unit]
Description=Startup Applications

[Service]
Type=oneshot
RemainAfterExit=false
ExecStart=/home/john/.scopening_atstart

[Install]
WantedBy=multi-user.target

и

[Unit]
Description=Save Ramdisk to Wine drive C

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/home/john/.scfullcopy_atend

[Install]
WantedBy=multi-user.target

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

Наконец, для каждого из них выполните команду systemctl enable your_files_name (но без службы суффиксов). Итак, мой первый был systemctl enable startup

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


CLI (Command Line) Version

В этом описании предполагается, что вы работаете в своем домашнем каталоге, а не в / home / john, используйте sudo по мере необходимости и ваш выбор редактора, где я пишу vim или svim.

Создайте сценарии запуска и завершения работы оболочки с первой строкой #!/bin/sh и сделайте их исполняемыми с помощью chmod +x my_new_filename.

Создайте два файла, как указано выше, или в этом примере один файл для работы с задачами запуска и завершения работы. Я буду выполнять скрипты в своем домашнем каталоге, но @don_crissti показал некоторые альтернативы в Stack Exchange.

svim /etc/systemd/system/start_and_stop.service

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

[Unit]
Description=Run Scripts at Start and Stop

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/home/john/.startup_commands  #your paths and filenames
ExecStop=/home/john/.shutdown_commands

[Install]
WantedBy=multi-user.target

Затем Включите службу с помощью команду:

systemctl enable start_and_stop

и перезагрузите систему, после чего службы будут активны. Команды systemctl is-enabled start_and_stop и systemctl is-active start_and_stop могут использоваться для контроля ваших новых сервисов.


Изменение условий триггера для выключения

Файлы, прежде всего, используют открытые или закрытые многопользовательской среды для запуска запуска скриптов. В приведенном ниже файле используется начало четырех потенциальных процессов выключения для запуска его скриптов. Добавление или удаление целевых объектов на линии Before line + WantedBy позволит вам делать более тонкие различия:

Этот файл был предложен в ответ на Unix & amp; Linux by @Matthias, но мне не удалось запустить его, пока я не добавил раздел «Установка».

Снова отредактируйте скрипт в /etc/systemd/service/ и включите его, используя systemctl enable your_file_name. Когда я сменил цели, я использовал команду systemclt disable file_name, а затем снова включил ее, которая привязала ее к целевым каталогам. Перезагрузка и обслуживание будут работать.

[Unit]
Description=Do something required
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
# This works because it is installed in the target and will be
#   executed before the target state is entered
# Also consider kexec.target

[Service]
Type=oneshot
ExecStart=/home/john/.my_script  #your path and filename

[Install]
WantedBy=halt.target reboot.target shutdown.target
18
ответ дан 8 August 2018 в 23:22

Как это сделать с systemd

Если вы найдете эту тему после июня 2016 года, Ubuntu и ее производные, включая Mint, будут использовать systemd для управления инициализацией и выключением системы. У меня были проблемы со старым подходом, поэтому я исследовал системный путь.

С помощью systemd вы создаете один или два файла для вызова своих сценариев с использованием шаблонов ниже и выполните команду. Простой.


Версия GUI

Сначала создайте сценарии, которые вы хотите запустить при запуске и / или выключении. Я создал .scopening_atstart и .scfullcopy_atend.

Затем убедитесь, что они оба исполняются, щелкнув файл правой кнопкой мыши, выбрав свойства и убедившись, что под разрешениями вы отметили «Разрешить выполнение файла в качестве программы».

Два созданных мной файла заполняют и сохраняют содержимое ramdisk. Они также создают файл в моем домашнем каталоге, чтобы доказать, что служба работает. Они были в форме:

#!/bin/sh
cp -pru /home/john/zRamdisk/subdirectory1/* /home/john/.wine/drive_c/subdirectory1/
rm /home/john/stop_time
date +%D' '%T > /home/john/stop_time

Затем я открыл свой файловый менеджер как root, открыл /etc/systemd/system и создал файл startup.service и файл save-ramdisk.service. Очевидно, вы можете выбрать свои собственные имена, а общие имена могли включать в себя файл запуска johns_start.service и файл выключения, называемый johns_shutdown.service. Просто не выбирайте существующие имена сервисов.

[Unit]
Description=Startup Applications

[Service]
Type=oneshot
RemainAfterExit=false
ExecStart=/home/john/.scopening_atstart

[Install]
WantedBy=multi-user.target

и

[Unit]
Description=Save Ramdisk to Wine drive C

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/home/john/.scfullcopy_atend

[Install]
WantedBy=multi-user.target

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

Наконец, для каждого из них выполните команду systemctl enable your_files_name (но без службы суффиксов). Итак, мой первый был systemctl enable startup

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


CLI (Command Line) Version

В этом описании предполагается, что вы работаете в своем домашнем каталоге, а не в / home / john, используйте sudo по мере необходимости и ваш выбор редактора, где я пишу vim или svim.

Создайте сценарии запуска и завершения работы оболочки с первой строкой #!/bin/sh и сделайте их исполняемыми с помощью chmod +x my_new_filename.

Создайте два файла, как указано выше, или в этом примере один файл для работы с задачами запуска и завершения работы. Я буду выполнять скрипты в своем домашнем каталоге, но @don_crissti показал некоторые альтернативы в Stack Exchange.

svim /etc/systemd/system/start_and_stop.service

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

[Unit]
Description=Run Scripts at Start and Stop

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/home/john/.startup_commands  #your paths and filenames
ExecStop=/home/john/.shutdown_commands

[Install]
WantedBy=multi-user.target

Затем Включите службу с помощью команду:

systemctl enable start_and_stop

и перезагрузите систему, после чего службы будут активны. Команды systemctl is-enabled start_and_stop и systemctl is-active start_and_stop могут использоваться для контроля ваших новых сервисов.


Изменение условий триггера для выключения

Файлы, прежде всего, используют открытые или закрытые многопользовательской среды для запуска запуска скриптов. В приведенном ниже файле используется начало четырех потенциальных процессов выключения для запуска его скриптов. Добавление или удаление целевых объектов на линии Before line + WantedBy позволит вам делать более тонкие различия:

Этот файл был предложен в ответ на Unix & amp; Linux by @Matthias, но мне не удалось заставить его работать до тех пор, пока я не добавлю раздел установки.

Снова отредактируйте скрипт в /etc/systemd/service/ и включите его, используя systemctl enable your_file_name. Когда я сменил цели, я использовал команду systemclt disable file_name, а затем снова включил ее, которая привязала ее к целевым каталогам. Перезагрузка и обслуживание будут работать.

[Unit]
Description=Do something required
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
# This works because it is installed in the target and will be
#   executed before the target state is entered
# Also consider kexec.target

[Service]
Type=oneshot
ExecStart=/home/john/.my_script  #your path and filename

[Install]
WantedBy=halt.target reboot.target shutdown.target
18
ответ дан 14 August 2018 в 13:39

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

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