web-dev-qa-db-fra.com

Je pense que j'ai bombardé mon serveur avec une tâche cron - que se passe-t-il ici et comment puis-je récupérer?

J'ai planifié un simple script python pour qu'il s'exécute toutes les minutes sous l'utilisateur foo

Shell=/bin/bash
BASH_ENV=/home/foo/.bash_profile

* * * * * python /home/foo/slack-bot/main.py 2>&1 /home/foo/slack-bot.log

Après quelques minutes, j'ai eu ces erreurs et j'ai peu de temps après lancé mon serveur

-bash: fork: Cannot allocate memory
-bash: wait_for: No record of process 32012
-bash: fork: Cannot allocate memory
-bash: wait_for: No record of process 32012
....

Euh oh. J'ai donc essayé de me connecter en tant que root et Sudo-ing en tant que foo

Sudo -iu foo
Sudo: unable to execute /bin/bash: Cannot allocate memory

Génial.

J'ai ensuite supprimé la ligne incriminée du fichier crontab de l'utilisateur de foo et j'ai également tué tous les processus avec slack dans le nom

kill $(ps aux | grep 'slack' | awk '{print $2}')

Je reçois maintenant une erreur différente, mais je ne peux toujours pas Sudo cet utilisateur:

Sudo -iu foo
-bash: xmalloc: .././copy_cmd.c:86: cannot allocate 32 bytes (450560 bytes allocated)

Que se passe t-il ici? Je suis sûr qu'il y a une erreur dans mon programme cron que j'examinerai, mais quel type de comportement provoque les erreurs de fork de mémoire? Quelle est la meilleure façon de récupérer à part une réinitialisation matérielle?

Merci!

2
user2490003

C'est un modèle de lancement commun - dépend de ce dont vous avez besoin ... vous pouvez

  • augmenter le temps entre le lancement du processus pour augmenter la probabilité avant la fin
  • identifier si le lancement précédent est toujours en cours si tel est le cas
  • créer un démon à exécution longue au lieu d'un processus à exécution courte
  • lancer - faire le travail puis terminer - demander à un processus d'observation de lancer un nouveau lancement uniquement lorsqu'il découvre qu'il ne fonctionne pas (à la supervisord)

sans connaître le cas d'utilisation, il est difficile de procéder

1
Scott Stensland