Pages : 1
#1 Le 23/04/2014, à 10:46
- etudiant2014
Crontab
Bonjour, je veux lancer un script chaque minute avec Cron pour cela j ai mis ce code en editant le fichier de crontab (crontab -e) : * * * * * perl /home/ubuntu1/analyze.pl mais ce script ne se lance pas sachant que j'ai donné les droits d'acces (777) pour le fichier
Hors ligne
#2 Le 23/04/2014, à 10:58
- erresse
Re : Crontab
... et pourquoi, au lieu de s'enquiquiner à tripatouiller le crontab à la main, ne pas installer le paquet "gnome-schedule" qui te permettra de gérer tout ça les doigts dans le nez ???
Allez, un bon mouvement, c'est bien joli le terminal et la ligne de commande, mais on peut aussi faire un geste pour les développeurs qui se cassent la tête pour nous faire de si belles interfaces !
Bonne journée.
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#3 Le 23/04/2014, à 11:09
- pires57
Re : Crontab
Que contiens le script analyze.pl?
Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn
Hors ligne
#4 Le 23/04/2014, à 11:13
- tiramiseb
Re : Crontab
Exécuté à la main, ce script fonctionne bien ?
Tu dis qu'il ne se lance pas... Comment constates-tu qu'il ne se lance pas ?
Peut-être qu'il se lance mais qu'il ne fonctionne pas car il est lui-même foireux... d'où la question de pires57...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#5 Le 23/04/2014, à 13:18
- etudiant2014
Re : Crontab
Merci pour vos réponses,
le script fonctionne bien pendant l'exécution manuelle, il permet d’extraire des données d'une base et l'écrire dans une fichier texte avec la date du système il fonctionne bien ( je dois le faire avec le terminal c est une obligation et de plus je travaille sur ubuntu server)
Avec Cron il n'ajoute rien au fichier malgré il existe des informations récents à ajouter
Dernière modification par etudiant2014 (Le 23/04/2014, à 13:20)
Hors ligne
#6 Le 23/04/2014, à 13:28
- jplemoine
Re : Crontab
oui mais il faut le tester dans les mêmes conditions que le cron...
donc je pense avec un
sudo -i
puis, lancer le script avec
perl /home/ubuntu1/analyze.pl
et regarder si ça fonctionne.
Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.
Hors ligne
#7 Le 23/04/2014, à 16:18
- tiramiseb
Re : Crontab
donc je pense avec un
sudo -i
Un sudo !? Pourquoi ? Il n'a pas mis sudo dans sa tâche cron !
Surtout pas sudo !
Il s'agit peut-être d'un problème de chemin vers les fichiers, ou d'autre chose. Pour savoir d'où peut venir le problème, le mieux est de voir la source de ce script, d'où la demande de pires57 en #3 ; j'attend également une réponse à cette question.
Autre possibilité : faire fonctionner l'envoi des retours de cron par e-mail...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#8 Le 23/04/2014, à 19:05
- pires57
Re : Crontab
donc comme l'as dit tiramiseb surtout pas de sudo -i, ensuite si tu veut de l'aide je te conseilles vivement de répondre au questions lorsqu'on te les poses sans quoi je ne répondrais pas. Le blabla inutile c'est pas mon truc, ni la résolution de problème par tâtonnement.
Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn
Hors ligne
#9 Le 24/04/2014, à 15:18
- etudiant2014
Re : Crontab
Slt
voila le contenu du script:
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $bd = 'Users';
my $server = 'localhost';
my $id = 'root';
my $pwd = 'root';
my $port = '';
my $dbh = DBI->connect ( "DBI:mysql:database=$bd;host=$server;port=$port",$id,$pwd, {
RaiseError => 1,
}
) or die " Connexion Failed \n";
open(TR,">>/home/ubuntu1/informations.txt");
my $sth = $dbh->prepare("select number, name from Client where ST = 0");
$sth->execute();
my $R = $sth->fetchrow_hashref();
my $p1 = $R->{name};
my $p2 = $R->{number};
my $p3 = localtime();
print TR " Number is $p2 et le nom est $p1 \n";
print TR "$p3 \n";
print TR "---------------------------------------------------------\n";
Dernière modification par etudiant2014 (Le 24/04/2014, à 15:19)
Hors ligne
#10 Le 24/04/2014, à 15:22
- etudiant2014
Re : Crontab
Merci pour vos réponses
et concernant le sudo i bon j ai pas vraiment compri de quoi il s agit et son utilité et merci encore une fois
Dernière modification par etudiant2014 (Le 24/04/2014, à 15:23)
Hors ligne
#11 Le 24/04/2014, à 15:25
- jplemoine
Re : Crontab
donc je pense avec un
sudo -i
Un sudo !? Pourquoi ? Il n'a pas mis sudo dans sa tâche cron !
Surtout pas sudo !
Il s'agit peut-être d'un problème de chemin vers les fichiers, ou d'autre chose. Pour savoir d'où peut venir le problème, le mieux est de voir la source de ce script, d'où la demande de pires57 en #3 ; j'attend également une réponse à cette question.
Autre possibilité : faire fonctionner l'envoi des retours de cron par e-mail...
Pas de sudo dans les tâches cron, on est d'acord mais c'est root qui les lance.
Donc, ma théorie est que l'utilisateur normal peut très bien lancer la tâche mais pas root car il y a un environnement différent.
Exemple : accès à un fichier par ~ au lieu du chemin en toutes lettres...
Le sudo (qui est peut-être une bétise), c'était pour tester le script en interactif dans des conditions aussi proche que lors du lancement par le cron.
Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.
Hors ligne
#12 Le 24/04/2014, à 15:57
- tiramiseb
Re : Crontab
Pas de sudo dans les tâches cron, on est d'acord mais c'est root qui les lance.
Non !
Quand tu édite ton crontab personnel (commande "crontab -e"), c'est bel et bien ton utilisateur qui lance les tâches, pas root !
Seules les taches systèmes (fichiers /etc/cron*) et les tâches de l'utilisateur root sont lancées en tant que l'utilisateur root.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#13 Le 24/04/2014, à 15:59
- etudiant2014
Re : Crontab
bon j 'ai essayé un autre scrpit qui permet d'ecrire la date systeme et ca marce meme chemin meme ligne en crontab
Dernière modification par etudiant2014 (Le 24/04/2014, à 16:00)
Hors ligne
#14 Le 25/04/2014, à 11:33
- miniSeb
Re : Crontab
Salut,
Rajoute au début de ton script la ligne :
open(STDERR,'>>','~/analyze.pl.log');
Je ne vois de prime abord que le die de ton code qui puisse bloquer. Avec cette ligne tu devrais récupérer le contenu du message d'erreur dans le fichier log. N'hésite pas à rajouter des warn ailleurs dans le script pour voir ce que perl raconte, si ça n'est pas le die.
Ca serait pas mal aussi de fermer le fichier en fin de script
close(TR);
Hors ligne
#15 Le 25/04/2014, à 11:42
- jplemoine
Re : Crontab
Pas de sudo dans les tâches cron, on est d'acord mais c'est root qui les lance.
Non !
Quand tu édite ton crontab personnel (commande "crontab -e"), c'est bel et bien ton utilisateur qui lance les tâches, pas root !
Seules les taches systèmes (fichiers /etc/cron*) et les tâches de l'utilisateur root sont lancées en tant que l'utilisateur root.
Oui. Maintenant que tu me le dis, c'est exact : comme je n'utilise que le cron "système", je n'ai plus penser au cron "utilisateur".
Merci pour tes précisions et ta rectification.
J'ai regardé le script : je ne vois pas ce qui bloque.
Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.
Hors ligne
#16 Le 25/04/2014, à 17:20
- etudiant2014
Re : Crontab
Slt,
le premier problème résolu mes amis merci pour vous tous j ai copié le contenu du fichier Analyze.pl vers un nouveau fichier Statique.pl et ca marche ( bon je ne sais pas pk ca n a pas marché pour le premier fichier)
Mais bon, il parait que je dois faire qlq chose de plus, on m a demandé qu'un script ne doit être exécuté avant que le précédent termine. Pour cela j'ai fait ce script :
#!/usr/bin/perl
use warnings;
use strict;
my @p1 = qx{ps -a | grep Statique.pl};
if (@p1 == 1 } { system("perl /home/ubuntu1/Statique.pl");}
else {exit(1);}
Avec la tâche Cron ne fonctionne pas un 2eme probleme avec Cron ( mais bon je pense que le probleme cette fois vient de ps -a ) Aidez moi SVP
Hors ligne
#17 Le 25/04/2014, à 22:33
- tiramiseb
Re : Crontab
Tu peux éventuellement tenter de remplacer "ps -a | grep Statique.pl" par "pgrep -f Statique.pl"...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#18 Le 25/04/2014, à 22:44
- etudiant2014
Re : Crontab
j'ai essayé votre proposition tjrs le meme probleme ca marche pas
Hors ligne
#19 Le 25/04/2014, à 22:59
- pires57
Re : Crontab
bonsoir, j'aurais plutôt placer une boucle while pour ton problème, en effet, tant que ton script est exécuté, tu boucles jusqu'a ce qu'il ai fini et alors seulement la tu envois l'autre script
Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn
Hors ligne
#20 Le 25/04/2014, à 23:34
- etudiant2014
Re : Crontab
Boucle "While" j'ai pas bien compris expliquez-moi SVP
Hors ligne
#21 Le 26/04/2014, à 02:03
- pires57
Re : Crontab
#!/usr/bin/perl
use warnings;
use strict;
my @p1 = qx{ps -a | grep Statique.pl};
if (@p1 == 1 } {
system("perl /home/ubuntu1/Statique.pl");
}else {
exit(1);
}
Ici tu dit si p1 =1 jexecute le script sinon je sort, si tu sort tu fermes ton script et donc ne verifie plus...
Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn
Hors ligne
Pages : 1