Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/04/2014, à 09: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, à 09: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.

En ligne

#3 Le 23/04/2014, à 10: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, à 10: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...

Hors ligne

#5 Le 23/04/2014, à 12: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 sad

Dernière modification par etudiant2014 (Le 23/04/2014, à 12:20)

Hors ligne

#6 Le 23/04/2014, à 12: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, à 15: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...

Hors ligne

#8 Le 23/04/2014, à 18: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, à 14: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, à 14:19)

Hors ligne

#10 Le 24/04/2014, à 14: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, à 14:23)

Hors ligne

#11 Le 24/04/2014, à 14:25

jplemoine

Re : Crontab

tiramiseb a écrit :

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, à 14: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.

Hors ligne

#13 Le 24/04/2014, à 14: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, à 15:00)

Hors ligne

#14 Le 25/04/2014, à 10: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, à 10:42

jplemoine

Re : Crontab

tiramiseb a écrit :

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, à 16:20

etudiant2014

Re : Crontab

Slt,
le premier problème résolu mes amis merci pour vous tous  big_smile 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 hmm un 2eme probleme avec Cron ( mais bon je pense que le probleme cette fois vient de ps -a )  Aidez moi SVP sad

Hors ligne

#17 Le 25/04/2014, à 21:33

tiramiseb

Re : Crontab

Tu peux éventuellement tenter de remplacer "ps -a | grep Statique.pl" par "pgrep -f Statique.pl"...

Hors ligne

#18 Le 25/04/2014, à 21:44

etudiant2014

Re : Crontab

j'ai essayé votre proposition tjrs le meme probleme ca marche pas hmm

Hors ligne

#19 Le 25/04/2014, à 21: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, à 22:34

etudiant2014

Re : Crontab

Boucle "While" j'ai pas bien compris expliquez-moi SVP roll

Hors ligne

#21 Le 26/04/2014, à 01: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