mirror of
https://github.com/borgbackup/borg.git
synced 2024-12-25 17:27:31 +00:00
Handle SIGTERM and make a clean exit
This commit is contained in:
parent
f9638645d1
commit
6cf61024d9
1 changed files with 12 additions and 0 deletions
|
@ -1488,6 +1488,14 @@ def sig_info_handler(signum, stack): # pragma: no cover
|
|||
break
|
||||
|
||||
|
||||
class SIGTERMReceived(BaseException):
|
||||
pass
|
||||
|
||||
|
||||
def sig_term_handler(signum, stack):
|
||||
raise SIGTERMReceived
|
||||
|
||||
|
||||
def setup_signal_handlers(): # pragma: no cover
|
||||
sigs = []
|
||||
if hasattr(signal, 'SIGUSR1'):
|
||||
|
@ -1496,6 +1504,7 @@ def setup_signal_handlers(): # pragma: no cover
|
|||
sigs.append(signal.SIGINFO) # kill -INFO pid (or ctrl-t)
|
||||
for sig in sigs:
|
||||
signal.signal(sig, sig_info_handler)
|
||||
signal.signal(signal.SIGTERM, sig_term_handler)
|
||||
|
||||
|
||||
def main(): # pragma: no cover
|
||||
|
@ -1523,6 +1532,9 @@ def main(): # pragma: no cover
|
|||
except KeyboardInterrupt:
|
||||
msg = 'Keyboard interrupt.\n%s\n%s' % (traceback.format_exc(), sysinfo())
|
||||
exit_code = EXIT_ERROR
|
||||
except SIGTERMReceived:
|
||||
msg = 'Received SIGTERM.'
|
||||
exit_code = EXIT_ERROR
|
||||
if msg:
|
||||
logger.error(msg)
|
||||
if args.show_rc:
|
||||
|
|
Loading…
Reference in a new issue