Killing cron
Closed this issue · 4 comments
fbochu commented
Lors des mises à jour, il serait préférable d’arrêter le conteneur cron
sans tuer tous les jobs qui sont en cours. En gros, il faudrait :
- Ne plus lancer de nouveaux jobs (
crontab -r
) - Demander à
cron
de s'arrêter - Attendre la fin des jobs en cours
Les point 2. et 3. peuvent être inversés si nécessaire, le 1. et 2. peuvent se faire en même temps (en arrêtant cron
sans supprimer la crontab).
fbochu commented
PoC utilisant prctl(PR_SET_CHILD_SUBREAPER)
#!/usr/bin/python
from __future__ import print_function
import ctypes
import os
libc = ctypes.CDLL('libc.so.6')
PR_SET_CHILD_SUBREAPER = 36
libc.prctl(PR_SET_CHILD_SUBREAPER)
print('Running script.sh...')
os.system('bash script.sh')
print('Waiting for grandchildren...')
while True:
try:
r = os.wait()
print('Grandchild:', r)
except OSError as e:
print(e)
break
script.sh :
#!/bin/bash
yes > /dev/null &
sleep 10 &
fbochu commented