Как запустить файл сценария при перезагрузке или завершении работы с Ubuntu 17.10? [dубликат]

У меня машина, на которой работает пара бродячих ВМ. У меня проблема в том, что иногда я забываю выключить эту виртуальную машину до того, как я выключу или перезагружу свою машину. Из-за этого моя машина застряла с этим сообщением: waiting for vboxnet0 to become free

Я искал о решениях, и я нашел эту страницу:

http://en.kioskea.net/faq/ 3348-ubuntu-executing-a-script-at-startup-and-shutdown

Я пробовал, что они для выключения, но он не работает.

Я написал файл sh для этой команды:

#!/bin/bash cd ~/workspace/git/mediaservice vagrant halt

любые предложения?

16
задан 4 February 2014 в 19:42

19 ответов

Если ваши бродячие виртуальные машины используют VirtualBox, вы можете изменить / etc / default / virtualbox и изменить строку, которая читает:

SHUTDOWN_USERS=""

на

SHUTDOWN_USERS="all"

Это исправлено для меня на Ubuntu 14.04

11
ответ дан 17 July 2018 в 16:03

Если ваши бродячие виртуальные машины используют VirtualBox, вы можете изменить / etc / default / virtualbox и изменить строку, которая читает:

SHUTDOWN_USERS=""

на

SHUTDOWN_USERS="all"

Это исправлено для меня на Ubuntu 14.04

11
ответ дан 23 July 2018 в 16:58

Для Ubuntu 14.10 вам что-то вроде RC04 not RC99

Что делать с нуля

Создайте скрипт в /etc/init.d/scriptName Ссылка через ln -s /etc/rc6.d/K04scriptName /etc/init.d/scriptName

Что делать с нуля

Создать скрипт в /etc/init.d/scriptName Я нашел скрипт выключения Ubuntu 14.10 с rc0.d (rc6. d, rc.d) Ссылка через ln -s /etc/rc6.d/K04scriptName /etc/init.d/scriptName
2
ответ дан 17 July 2018 в 16:03

Как сделать это с помощью Systemd (это проще)

Теперь, когда варианты Ubuntu и Mint перешли на systemd, я нашел, что мои старые решения на основе вышеизложенного были менее удовлетворительными. Я искал в Интернете, чтобы узнать, как это сделать с помощью systemd, и в итоге объединил чужую мудрость и документировал его как сообщение в блоге на blogspot.com.au, содержащее следующий учебник.

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

Версия GUI

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

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

blogspot.com.au

Два созданных мной файла заполняют и сохраняют содержимое 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

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

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

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

Дополнительные полезные команды:

systemctl включен запуск systemctl is-active startup systemctl restart startup

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 могут использоваться для мониторинга ваших новых сервисов.

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

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

Этот файл был предложен во втором ответе Stack Exchange , но я не смог получить он будет работать, пока я не добавлю раздел «Установка».

Снова отредактируйте скрипт в /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
6
ответ дан 17 July 2018 в 16:03

Чтобы выполнить скрипт при выключении или перезагрузке:

сохраните ваш скрипт в /etc/rc6.d Сделайте его исполняемым: sudo chmod +x K99_script

Примечания:

Скрипт в rc6.d должен быть без расширения .sh. Имя вашего скрипта должно начинаться с K99 для запуска в нужное время. Сценарии в этом каталоге выполняются в алфавитном порядке.

источник

20
ответ дан 17 July 2018 в 16:03

Вы можете найти решение здесь: Приостановить / возобновить все блоки Vagrant при выключениях / запуске системы.

Существует простой сценарий инициализации, который приостанавливает все запущенные окна перед выключением.

Установка

Измените /etc/init.d/vagrant-boxes и вставьте скрипт из предыдущей статьи и сохраните. Или Приостановить / возобновить все флажки Vagrant при выключениях / запуске системы и сохранить их в /etc/init.d/vagrant-boxes. На debian / ubuntu и т. Д. Запустите

# update-rc.d vagrant-boxes defaults 99 01 Номер 99 является порядковым номером и должен быть больше (в моем случае Virtualbox номер 20, который, кстати, является стандартным для дистрибутивов Debian). Второе число - это последовательность при выключении компьютера. Таким образом, это может быть полезно сделать в первую очередь.
2
ответ дан 17 July 2018 в 16:03
Создайте исполняемый файл оболочки с вашим скриптом в каталоге /etc/init.d/. Поскольку это должно быть выполнено во время выключения или перезагрузки, необходимо создать программные ссылки в /etc/rc0.d/ и /etc/rc6.d

Пример:

sudo ln -s /etc/init.d/<your_file> /etc/rc0.d/k99stop_vm sudo ln -s /etc/init.d/<your_file> /etc/rc6.d/k99stop_vm sudo chmod a+x /etc/rc0.d/k99stop_vm /etc/rc6.d/k99stop_vm
10
ответ дан 17 July 2018 в 16:03

Для Ubuntu 14.10 вам что-то вроде RC04 not RC99

Что делать с нуля

Создайте скрипт в /etc/init.d/scriptName Ссылка через ln -s /etc/rc6.d/K04scriptName /etc/init.d/scriptName

Что делать с нуля

Создать скрипт в /etc/init.d/scriptName Я нашел скрипт выключения Ubuntu 14.10 с rc0.d (rc6. d, rc.d) Ссылка через ln -s /etc/rc6.d/K04scriptName /etc/init.d/scriptName
2
ответ дан 23 July 2018 в 16:58

Как сделать это с помощью Systemd (это проще)

Теперь, когда варианты Ubuntu и Mint перешли на systemd, я нашел, что мои старые решения на основе вышеизложенного были менее удовлетворительными. Я искал в Интернете, чтобы узнать, как это сделать с помощью systemd, и в итоге объединил чужую мудрость и документировал его как сообщение в блоге на blogspot.com.au, содержащее следующий учебник.

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

Версия GUI

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

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

blogspot.com.au

Два созданных мной файла заполняют и сохраняют содержимое 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

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

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

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

Дополнительные полезные команды:

systemctl включен запуск systemctl is-active startup systemctl restart startup

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 могут использоваться для мониторинга ваших новых сервисов.

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

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

Этот файл был предложен во втором ответе Stack Exchange , но я не смог получить он будет работать, пока я не добавлю раздел «Установка».

Снова отредактируйте скрипт в /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
7
ответ дан 23 July 2018 в 16:58
  • 1
    Полегче? проще чем? легче, чем подниматься на Эверест? любое другое решение, размещенное здесь, легче, чем этот ... – Fran Marzoa 20 July 2017 в 13:01
  • 2
    Вау, это полный и достойный письменный ответ, и что все должны делать - проблемы с именами с /etc/rc6.d и путаница указывают на то, что это не хорошие ответы. Если процедура проста, то она не обязательно имеет право безопасно достичь своей цели. См. Раздел [Установка] - вы можете быть уверены, что ваш скрипт будет выполнен в нужное время. Более того, потому что ответ длинный, это не значит, что его комплекс! Благодаря btw, John9631, этот ответ является совершенным и будет бесценным в создании безопасных и эффективных скриптов в критический момент времени ... – miller the gorilla 5 August 2017 в 12:46

Чтобы выполнить скрипт при выключении или перезагрузке:

сохраните ваш скрипт в /etc/rc6.d Сделайте его исполняемым: sudo chmod +x K99_script

Примечания:

Скрипт в rc6.d должен быть без расширения .sh. Имя вашего скрипта должно начинаться с K99 для запуска в нужное время. Сценарии в этом каталоге выполняются в алфавитном порядке.

источник

20
ответ дан 23 July 2018 в 16:58
  • 1
    В самом деле. Именование его правильно, так что он работает в нужное время, очень важно. – shivams 9 May 2015 в 14:01
  • 2
    Я поместил скрипт в /etc/rc6.d, и он не запускался при завершении работы. Я положил его в /etc/rc0.d, и он запустился при завершении работы. Вероятно, rc.6 предназначен только для перезагрузки. – Erel Segal-Halevi 29 October 2015 в 21:24
  • 3
    @Erel Segal-Halevi Я просто попробовал добавить скрипт K99 в /etc/rc6.d, и он не выполнялся. Если посмотреть на другие скрипты, есть строка ** bold K10reboot - & gt; ../init.d/reboot **, так что он выглядит как скрипт K99 НИКОГДА не будет выполнен !! – David Walker 17 July 2016 в 12:06

Вы можете найти решение здесь: Приостановить / возобновить все блоки Vagrant при выключениях / запуске системы.

Существует простой сценарий инициализации, который приостанавливает все запущенные окна перед выключением.

Установка

Измените /etc/init.d/vagrant-boxes и вставьте скрипт из предыдущей статьи и сохраните. Или Приостановить / возобновить все флажки Vagrant при выключениях / запуске системы и сохранить их в /etc/init.d/vagrant-boxes. На debian / ubuntu и т. Д. Запустите

# update-rc.d vagrant-boxes defaults 99 01 Номер 99 является порядковым номером и должен быть больше (в моем случае Virtualbox номер 20, который, кстати, является стандартным для дистрибутивов Debian). Второе число - это последовательность при выключении компьютера. Таким образом, это может быть полезно сделать в первую очередь.
2
ответ дан 23 July 2018 в 16:58
Создайте исполняемый файл оболочки с вашим скриптом в каталоге /etc/init.d/. Поскольку это должно быть выполнено во время выключения или перезагрузки, необходимо создать программные ссылки в /etc/rc0.d/ и /etc/rc6.d

Пример:

sudo ln -s /etc/init.d/<your_file> /etc/rc0.d/k99stop_vm sudo ln -s /etc/init.d/<your_file> /etc/rc6.d/k99stop_vm sudo chmod a+x /etc/rc0.d/k99stop_vm /etc/rc6.d/k99stop_vm
10
ответ дан 23 July 2018 в 16:58
  • 1
    chmod изменяет флаги разрешений целевой ссылки, что одинаково для обоих аргументов. Указание их обоих является избыточным. – David Foerster 15 October 2014 в 06:36

Как сделать это с помощью Systemd (это проще)

Теперь, когда варианты Ubuntu и Mint перешли на systemd, я нашел, что мои старые решения на основе вышеизложенного были менее удовлетворительными. Я искал в Интернете, чтобы узнать, как это сделать с помощью systemd, и в итоге объединил мудрость других и документировал это как сообщение в блоге в blogspot.com.au , содержащее следующий учебник.

С помощью 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 вводит многопользовательскую цель и службу остановки, когда она выходит из многопользовательской цели.

Дополнительные полезные команды включают в себя:

systemctl с включенным запуском systemctl is-active startup systemctl restart startup

Подробнее см. В ссылке выше.



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 могут использоваться для мониторинга ваших новых сервисов.



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

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

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

Снова отредактируйте скрипт в /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
7
ответ дан 31 July 2018 в 18:23

Как сделать это с помощью Systemd (это проще)

Теперь, когда варианты Ubuntu и Mint перешли на systemd, я нашел, что мои старые решения на основе вышеизложенного были менее удовлетворительными. Я искал в Интернете, чтобы узнать, как это сделать с помощью systemd, и в итоге объединил мудрость других и документировал это как сообщение в блоге в blogspot.com.au , содержащее следующий учебник.

С помощью 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 вводит многопользовательскую цель и службу остановки, когда она выходит из многопользовательской цели.

Дополнительные полезные команды включают в себя:

systemctl с включенным запуском systemctl is-active startup systemctl restart startup

Подробнее см. В ссылке выше.



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 могут использоваться для мониторинга ваших новых сервисов.



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

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

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

Снова отредактируйте скрипт в /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
7
ответ дан 2 August 2018 в 11:26

Как сделать это с помощью Systemd (это проще)

Теперь, когда варианты Ubuntu и Mint перешли на systemd, я нашел, что мои старые решения на основе вышеизложенного были менее удовлетворительными. Я искал в Интернете, чтобы узнать, как это сделать с помощью systemd, и в итоге объединил мудрость других и документировал это как сообщение в блоге в blogspot.com.au , содержащее следующий учебник.

С помощью 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 вводит многопользовательскую цель и службу остановки, когда она выходит из многопользовательской цели.

Дополнительные полезные команды включают в себя:

systemctl с включенным запуском systemctl is-active startup systemctl restart startup

Подробнее см. В ссылке выше.



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 могут использоваться для мониторинга ваших новых сервисов.



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

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

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

Снова отредактируйте скрипт в /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
7
ответ дан 3 August 2018 в 10:01

Как сделать это с помощью Systemd (это проще)

Теперь, когда варианты Ubuntu и Mint перешли на systemd, я нашел, что мои старые решения на основе вышеизложенного были менее удовлетворительными. Я искал в Интернете, чтобы узнать, как это сделать с помощью systemd, и в итоге объединил мудрость других и документировал это как сообщение в блоге в blogspot.com.au , содержащее следующий учебник.

С помощью 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 вводит многопользовательскую цель и службу остановки, когда она выходит из многопользовательской цели.

Дополнительные полезные команды включают в себя:

systemctl с включенным запуском systemctl is-active startup systemctl restart startup

Подробнее см. В ссылке выше.



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 могут использоваться для мониторинга ваших новых сервисов.



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

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

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

Снова отредактируйте скрипт в /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
7
ответ дан 5 August 2018 в 01:22

Как сделать это с помощью Systemd (это проще)

Теперь, когда варианты Ubuntu и Mint перешли на systemd, я нашел, что мои старые решения на основе вышеизложенного были менее удовлетворительными. Я искал в Интернете, чтобы узнать, как это сделать с помощью systemd, и в итоге объединил мудрость других и документировал это как сообщение в блоге в blogspot.com.au , содержащее следующий учебник.

С помощью 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 вводит многопользовательскую цель и службу остановки, когда она выходит из многопользовательской цели.

Дополнительные полезные команды включают в себя:

systemctl с включенным запуском systemctl is-active startup systemctl restart startup

Подробнее см. В ссылке выше.



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 могут использоваться для мониторинга ваших новых сервисов.



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

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

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

Снова отредактируйте скрипт в /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
7
ответ дан 6 August 2018 в 17:52

Как сделать это с помощью Systemd (это проще)

Теперь, когда варианты Ubuntu и Mint перешли на systemd, я нашел, что мои старые решения на основе вышеизложенного были менее удовлетворительными. Я искал в Интернете, чтобы узнать, как это сделать с помощью systemd, и в итоге объединил мудрость других и документировал это как сообщение в блоге в blogspot.com.au , содержащее следующий учебник.

С помощью 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 вводит многопользовательскую цель и службу остановки, когда она выходит из многопользовательской цели.

Дополнительные полезные команды включают в себя:

systemctl с включенным запуском systemctl is-active startup systemctl restart startup

Подробнее см. В ссылке выше.



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 могут использоваться для мониторинга ваших новых сервисов.



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

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

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

Снова отредактируйте скрипт в /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
7
ответ дан 8 August 2018 в 22:06

Как сделать это с помощью Systemd (это проще)

Теперь, когда варианты Ubuntu и Mint перешли на systemd, я нашел, что мои старые решения на основе вышеизложенного были менее удовлетворительными. Я искал в Интернете, чтобы узнать, как это сделать с помощью systemd, и в итоге объединил мудрость других и документировал это как сообщение в блоге в blogspot.com.au , содержащее следующий учебник.

С помощью 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 вводит многопользовательскую цель и службу остановки, когда она выходит из многопользовательской цели.

Дополнительные полезные команды включают в себя:

systemctl с включенным запуском systemctl is-active startup systemctl restart startup

Подробнее см. В ссылке выше.



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 могут использоваться для мониторинга ваших новых сервисов.



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

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

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

Снова отредактируйте скрипт в /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
7
ответ дан 14 August 2018 в 11:46

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

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