3 votes

Éviter de créer plusieurs fichiers avec wget

を使用しています。 wget pour appeler un lien toutes les 10 secondes comme ça :

#/bin/sh
while true; do
    wget http://www.some.random.link/to/some/PHP/script
    sleep 10
done

Cela produit des fichiers vides appelés script_name.# donde # est incrémenté à chaque exécution.

Pourquoi cela se produit-il ?

5voto

Indrek Points 23336

C'est parce que wget télécharge la sortie de votre script (qui, vraisemblablement, est vide) et l'enregistre dans un fichier, en ajoutant un numéro à chaque fois pour ne pas écraser le fichier précédemment téléchargé.

Il y a plusieurs façons d'éviter cela.

  1. Empêcher wget de télécharger quoi que ce soit, en utilisant l'option --spider option :
    wget --spider http://www.some.random.link/to/some/PHP/script
    Cependant, cela peut empêcher votre script de fonctionner puisque, IIRC, il émet seulement un HEAD demande.
  2. Téléchargez la sortie, mais jetez-la en l'envoyant à /dev/null :
    wget -O /dev/null http://www.some.random.link/to/some/PHP/script
  3. Téléchargez la sortie, mais supprimez-la par la suite, en utilisant la fonction --delete-after option :
    wget --delete-after http://www.some.random.link/to/some/PHP/script
  4. Dans un souci d'exhaustivité, si vous pouvez vous contenter d'un seul fichier, utilisez le fichier -nc pour empêcher wget de télécharger des fichiers qui existent déjà localement :
    wget -nc http://www.some.random.link/to/some/PHP/script

1voto

Chad Huneycutt Points 2076

Comme solution alternative, vous pouvez éviter d'utiliser wget - qui, comme son nom l'indique, est destiné à obtenir contenu web à partir d'une URL donnée. En d'autres termes, il est conçu pour être un outil de "téléchargement". (Il est, bien sûr, très flexible, comme Indrek l'a démontré dans sa réponse. Mais ses valeurs par défaut vont à l'encontre de vos objectifs).

Puisque vous n'avez pas besoin ou veulent pour télécharger quoi que ce soit (vous accédez simplement à l'URL pour déclencher un script côté serveur), l'option curl est un peu plus appropriée pour votre script. Elle écrira les résultats de ses requêtes sur stdout par défaut, plutôt que dans un fichier.

Donc, en remplaçant wget con curl dans votre code ci-dessus devrait résoudre le problème de création de fichier sans autre travail.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X