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 16/01/2013, à 10:22

omnimax

[Résolu] $USER > script ok, cron problème

Bonjour lorsque je lance mon script avec par exemple

variable=/home/$USER/Musique

tout marche.

Par contre via cron

*/1 * * * * /home/script 2>cron.log

lorsque je regarde mon cron.log
il me dit impossible d'accéder à /home//Musique, en fait il ne reconnait pas la variable $USER, pourquoi?
La doc ubuntu sur cron ne dit rien sur ce problème.

Dernière modification par greg2007 (Le 16/01/2013, à 10:23)


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#2 Le 16/01/2013, à 10:34

ljere

Re : [Résolu] $USER > script ok, cron problème

pourquoi ne pas utiliser simplement
variable=~/Musique


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#3 Le 16/01/2013, à 11:02

elendil

Re : [Résolu] $USER > script ok, cron problème

Salut,

Cron ne définit que les variables SHELL, LOGNAME, HOME, il n'a donc pas accès à toutes les variables d'environnement chargées par Bash. Et cron utilise sh et non bash.

Pour charger ou définir les variables d'environnement, il faut le faire soit même.

Pour donner une réponse, il vaut mieux utiliser HOME et non USER sachant que HOME=/home/user et USER=user votre code devient :

variable=$HOME/Musique

et devrait fonctionner sans problème.

Edit : [voir post suivant j'ai dit une bêtise]
La solution de ljere ne fonctionnera peut-être pas car le tilde (~) est un raccourcis de Bash pour $HOME et je ne suis pas certain que cron (qui utilise sh) connaisse ce raccourcis...

Elendil

Dernière modification par elendil (Le 16/01/2013, à 12:46)

Hors ligne

#4 Le 16/01/2013, à 12:15

Watael

Re : [Résolu] $USER > script ok, cron problème

le développement du tilde en $HOME est POSIX.
~- et ~+ sont des extensions bash.


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#5 Le 16/01/2013, à 18:20

omnimax

Re : [Résolu] $USER > script ok, cron problème

Merci pour vos réponses. J'ai pigé.

Par contre j'ai un autre petit souci dans mon script et je ne comprends pas pourquoi cela ne fonctionne pas

EMPLACEMENT=$HOME/Public/*
FICHIER=$(ls "$EMPLACEMENT"|wc -l)

il me ressort

ls: impossible d'accéder à /home/monuser/Public/*: Aucun fichier ou dossier de ce type

pourquoi ?

alors que

ls $HOME/Public/*

marche parfaitement bien dans mon terminal et que ce dossier contient des fichiers.???

Dernière modification par greg2007 (Le 16/01/2013, à 18:23)


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#6 Le 16/01/2013, à 18:53

Watael

Re : [Résolu] $USER > script ok, cron problème

parce que l'astérisque n'est pas développé entre guillemets.


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#7 Le 16/01/2013, à 19:57

omnimax

Re : [Résolu] $USER > script ok, cron problème

Salut,

EMPLACEMENT=$HOME/Public/"*"
FICHIER=$(ls "$EMPLACEMENT"|wc -l)

résultat identique impossible d'accéder

EMPLACEMENT="$HOME/Public/*"
FICHIER=$(ls "$EMPLACEMENT"|wc -l)

marche dans mon terminal mais pas dans mon script >???


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#8 Le 16/01/2013, à 20:00

omnimax

Re : [Résolu] $USER > script ok, cron problème

et maintenant j'ai retesté ma deuxième ligne de commande ne fonctionne plus en terminal.


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#9 Le 16/01/2013, à 20:39

Watael

Re : [Résolu] $USER > script ok, cron problème

watael a écrit :

l'astérisque n'est pas développé entre guillemets


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#10 Le 16/01/2013, à 21:27

ljere

Re : [Résolu] $USER > script ok, cron problème

en clair modifie ton script comme ceci

EMPLACEMENT=$HOME/Public
FICHIER=$(ls "$EMPLACEMENT"/* |wc -l)

ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#11 Le 17/01/2013, à 09:11

omnimax

Re : [Résolu] $USER > script ok, cron problème

Merci pour l'éclaircissement. Bonne journée


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#12 Le 17/01/2013, à 10:17

elendil

Re : [Résolu] $USER > script ok, cron problème

Un petit résolu dans le titre (Éditer le premier message > Ajout de [resolu] dans le titre)

Hors ligne

#13 Le 17/01/2013, à 17:22

omnimax

Re : [Résolu] $USER > script ok, cron problème

FICHIER=$(ls "$EMPLACEMENT"/*|wc -l)
[ "$FICHIER" -eq 0 ] && touch "$TXTOK"

cela ne fonctionne pas, il me met dans mon log : ls impossible d'accéder, mon répertoire est vide forcément ! Mais je voudrais que le résultat 0 (via wc -l) soit pris en compte


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#14 Le 17/01/2013, à 17:51

pingouinux

Re : [Résolu] $USER > script ok, cron problème

Bonjour,

FICHIER=$(ls -d "$EMPLACEMENT"/* 2>/dev/null|wc -l || echo 0)

Ajouté :
En fait, il faut faire ceci , et c'est plus simple (voir #21) :

FICHIER=$(ls -d "$EMPLACEMENT"/* 2>/dev/null|wc -l)

Dernière modification par pingouinux (Le 18/01/2013, à 09:21)

Hors ligne

#15 Le 17/01/2013, à 18:15

ljere

Re : [Résolu] $USER > script ok, cron problème

tu peux expliquer pingouinux
si je comprend bien si le répertoire est vide c'est le echo 0 qui renvoie 0 mais à quoi sert 2>/dev/null


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#16 Le 17/01/2013, à 18:27

pingouinux

Re : [Résolu] $USER > script ok, cron problème

ljere #15 a écrit :

mais à quoi sert 2>/dev/null

C'est pour ne pas avoir de message d'erreur quand le répertoire est vide.

Hors ligne

#17 Le 17/01/2013, à 18:36

elendil

Re : [Résolu] $USER > script ok, cron problème

@pingouinux : Pourquoi "ls -d" et pas "ls" ?

Hors ligne

#18 Le 17/01/2013, à 18:44

pingouinux

Re : [Résolu] $USER > script ok, cron problème

elendil #17 a écrit :

Pourquoi "ls -d" et pas "ls" ?

C'est pour ne pas récupérer le contenu des sous-répertoires éventuels.

Hors ligne

#19 Le 17/01/2013, à 18:48

elendil

Re : [Résolu] $USER > script ok, cron problème

Ok la man de ls n'est pas clair là dessus ou je ne l'avais pas bien compris. Pour moi il ne listait que les dossiers (mais pas leur contenu) et je ne sais pas pourquoi mais j'ai pensé qu'il ne listait pas les fichiers du coup.
Merci

Hors ligne

#20 Le 17/01/2013, à 22:58

omnimax

Re : [Résolu] $USER > script ok, cron problème

wc -l || echo 0

Pourquoi le résultat nul de wc -l ne peut il pas être pris en compte et que du coup on est obliger de passer via le subterfuge || echo 0?

je viens de comprendre, j'avais passé trop vite la réflexion de ljere

Dernière modification par greg2007 (Le 17/01/2013, à 23:08)


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#21 Le 17/01/2013, à 23:11

pingouinux

Re : [Résolu] $USER > script ok, cron problème

@greg2007 #20 :
Tu as raison, il fallait faire ceci :

FICHIER=$(ls -d "$EMPLACEMENT"/* 2>/dev/null|wc -l)

Dernière modification par pingouinux (Le 18/01/2013, à 09:22)

Hors ligne

#22 Le 20/01/2013, à 15:05

omnimax

Re : [Résolu] $USER > script ok, cron problème

Une autre petite question (sûrement débile pour vous)

comment fait-on pour réinitialiser une variable

FICHIER=$(ls -d "$EMPLACEMENT"/* 2>/dev/null|wc -l)
if [ "$FICHIER" -ne 0 ]; then

la je jais ceci mais c'est un peu une faute de style,

FICHIER2=$(ls -d "$EMPLACEMENT"/* 2>/dev/null|wc -l)
[ "$FICHIER2" -eq 0 ] && touch "$TXTOK"

Mais il doit y avoir moyen de dire à la variable FICHIER de relire $EMPLACEMENT sans utliser le subterfuge FICHIER2

Dernière modification par greg2007 (Le 20/01/2013, à 15:06)


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#23 Le 20/01/2013, à 15:13

pingouinux

Re : [Résolu] $USER > script ok, cron problème

greg2007 #22 a écrit :

comment fait-on pour réinitialiser une variable

Il suffit de la redéfinir, et il est inutile d'en utiliser une autre.

Hors ligne

#24 Le 20/01/2013, à 15:17

elendil

Re : [Résolu] $USER > script ok, cron problème

Heu je ne vois pas trop où tu veux en venir mais test l'exmple ci-dessous :

$ EMPLACEMENT='.'
$ FICHIER=$(ls -d "$EMPLACEMENT"/* 2>/dev/null|wc -l)
$ echo $FICHIER
9 # Il y a 9 fichiers là où je me trouve
$ FICHIER="coucou"
$ echo $FICHIER
coucou
$ EMPLACEMENT="$HOME"
$ FICHIER=$(ls -d "$EMPLACEMENT"/* 2>/dev/null|wc -l)
$ echo $FICHIER
23 # Nombres d'entrées dans mon HOME

Est-ce que ça répond à ta question ?

(pingouinux: Tu es trop rapide :-))

Dernière modification par elendil (Le 20/01/2013, à 15:17)

Hors ligne

#25 Le 20/01/2013, à 15:18

omnimax

Re : [Résolu] $USER > script ok, cron problème

Juste ceci alors

FICHIER=$(ls -d "$EMPLACEMENT"/* 2>/dev/null|wc -l)
if [ "$FICHIER" -ne 0 ]; then
FICHIER=$(ls -d "$EMPLACEMENT"/* 2>/dev/null|wc -l)
[ "$FICHIER" -eq 0 ] && touch "$TXTOK"

Je pensais qu'il y avait une manière plus élégante de faire.

Merci quand même et b. week -end


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne