2013-08-21 4 views
2

J'ai un script python que je cours sur un serveur avec cette commande:ne peut pas voir des changements dans nohup.out

sudo nohup python fetch_script.py & 

Il crée un fichier nohup.out sur le même répertoire.

Après quelques jours, je suis revenu et a essayé de le vérifier, je l'ai:

tail -f nohup.out 

Il m'a donné un résultat:

[email protected]:/home/ubuntu# tail -f nohup.out 
8809896 
8809897 
8809898 
8809899 
8809900 
8809901 
8809902 
8809903 
8809904 
8809905 

J'ai attendu un peu, mais rien ne se passe. Le script supposé envoyer des messages au RabbitMQ et mettre à jour compte et l'imprime. Le script fonctionnait tout le temps, j'en suis sûr, parce que je pouvais voir de nouveaux messages qui arrivaient constamment. Mais nohup.out coincé. J'ai également vérifié avec ls -l commande pour voir si la taille a changé, mais toujours pas de chance. Savez-vous quelle pourrait être la raison de cela? Je suppose qu'il sera finalement mis à jour, mais je ne sais pas combien de temps cela prendra. Alors, y a-t-il des moyens de constamment mettre à jour ce fichier? Will nice -20 aider dans ce cas?

MISE À JOUR

Il suffit de tourner le journal, avec /usr/sbin/logrotate attendirent un peu et a vu des changements dans frais nohup.out

+0

Etes-vous sûr que le processus est toujours en cours? –

+0

Le processus est en cours d'exécution et le script s'exécute également – Vor

Répondre

4

Le fichier nohup.out est écrit directement par le programme qui est en cours d'exécution sous nohup, tout comme avec la coquille normale redirection Si ce n'est pas mis à jour le problème est avec le programme Python, pas avec nohup lui-même.

+0

Savez-vous si le fichier (nohup.out) deviendra grand comme 1G, est-ce que cela pourrait être le problème de délai que je vois dans la sortie? – Vor

+6

Il est plus probable que le processus python a juste décidé de vider son tampon de sortie sur le disque. Ce qui arrive souvent avec les programmes est que si leur sortie est connectée à un terminal interactif, leur sortie est mise en mémoire tampon, de sorte qu'à chaque fois qu'une ligne est écrite, elle est vidée en sortie, mais si le programme est exécuté avec stdout redirigé vers un le fichier est mis en mémoire tampon et le fichier de sortie est mis à jour moins fréquemment. – Joni

+1

C'est une très bonne explication, c'est probablement une réponse. – Vor