Passing the Unix SIGTERM signal through to child processes like Borg.
This commit is contained in:
parent
95be0c8e46
commit
27a6745743
4 changed files with 24 additions and 1 deletions
4
NEWS
4
NEWS
|
@ -1,3 +1,7 @@
|
||||||
|
1.1.10.dev0
|
||||||
|
* Passing the Unix SIGTERM signal through to child processes like Borg. This means that Borg now
|
||||||
|
properly shuts down if borgmatic is terminated (e.g. due to a system suspend).
|
||||||
|
|
||||||
1.1.9
|
1.1.9
|
||||||
* #16, #38: Support for user-defined hooks before/after backup, or on error.
|
* #16, #38: Support for user-defined hooks before/after backup, or on error.
|
||||||
* #33: Improve clarity of logging spew at high verbosity levels.
|
* #33: Improve clarity of logging spew at high verbosity levels.
|
||||||
|
|
|
@ -8,6 +8,7 @@ import sys
|
||||||
from borgmatic.borg import check, create, prune
|
from borgmatic.borg import check, create, prune
|
||||||
from borgmatic.commands import hook
|
from borgmatic.commands import hook
|
||||||
from borgmatic.config import collect, convert, validate
|
from borgmatic.config import collect, convert, validate
|
||||||
|
from borgmatic.signals import configure_signals
|
||||||
from borgmatic.verbosity import VERBOSITY_SOME, VERBOSITY_LOTS, verbosity_to_log_level
|
from borgmatic.verbosity import VERBOSITY_SOME, VERBOSITY_LOTS, verbosity_to_log_level
|
||||||
|
|
||||||
|
|
||||||
|
@ -120,6 +121,7 @@ def run_configuration(config_filename, args): # pragma: no cover
|
||||||
|
|
||||||
def main(): # pragma: no cover
|
def main(): # pragma: no cover
|
||||||
try:
|
try:
|
||||||
|
configure_signals()
|
||||||
args = parse_arguments(*sys.argv[1:])
|
args = parse_arguments(*sys.argv[1:])
|
||||||
logging.basicConfig(level=verbosity_to_log_level(args.verbosity), format='%(message)s')
|
logging.basicConfig(level=verbosity_to_log_level(args.verbosity), format='%(message)s')
|
||||||
|
|
||||||
|
|
17
borgmatic/signals.py
Normal file
17
borgmatic/signals.py
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
import os
|
||||||
|
import signal
|
||||||
|
|
||||||
|
|
||||||
|
def _handle_signal(signal_number, frame):
|
||||||
|
'''
|
||||||
|
Send the signal to all processes in borgmatic's process group, which includes child process.
|
||||||
|
'''
|
||||||
|
os.killpg(os.getpgrp(), signal_number)
|
||||||
|
|
||||||
|
|
||||||
|
def configure_signals():
|
||||||
|
'''
|
||||||
|
Configure borgmatic's signal handlers to pass relevant signals through to any child processes
|
||||||
|
like Borg.
|
||||||
|
'''
|
||||||
|
signal.signal(signal.SIGTERM, _handle_signal)
|
2
setup.py
2
setup.py
|
@ -1,7 +1,7 @@
|
||||||
from setuptools import setup, find_packages
|
from setuptools import setup, find_packages
|
||||||
|
|
||||||
|
|
||||||
VERSION = '1.1.9'
|
VERSION = '1.1.10.dev0'
|
||||||
|
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
|
|
Loading…
Reference in a new issue