bonjour tout le monde,
J esp=E8re trouver r=E9ponse =E0 mes questions sur ce forum et j esp=E8re
que
vous aurez un peu de patience parce que je suis d=E9butante en
programmation et j aimerai faire un programme qui semble un
peu .....dur puisque je n ai pa encore trouver de r=E9ponses!
Bon on suppose qu on est l administrateur d un parc informatique et
qu on veut:
1.Etre alert=E9 par e mail si jamais :
-l un des utilisateurs a d=E9pass=E9 le quota ceci dit 1Mo
-ou bien s il a d=E9pass=E9 1000 copies d impression
2.Eteindre tous les ordinateurs chaque vendredi =E0 19h
3.Faire une sauvegarde de donn=E9es de chaque ordinateur et l
enregistrer dans un r=E9pertoire qui aura de nom la date du jour o=F9 la
sauvegarde a =E9t=E9 faite et ce r=E9pertoire doit avoir pour
extension .tgz
(archiv=E9 et compress=E9)
Je note que cette sauvegarde doit aussi se faire chaque dimanche =E0
minuit.
Voil=E0 ceci est le programme et j ai des difficult=E9s avec ....je sais
que je dois utiliser le CRONTAB pour les taches planifi=E9es mais =E0
part
sa....rien!!!
Plz help et je vous remercie =E0 l avance
Pour le commentaire de Bruno: -->En fait ce qui serait logique c'est de faire un test après chaque impression et ce test doit s'exécuter pour toutes les imprimantes qui existent et quand une imprimante apprtenant à un user bien défini(on supposera que chaque user a sa propre imprimante)a imprimé 998 pages alors là on envoit le mail à celui qui s'en sert .
-->Pour le programme merci d'avoir corrigé je noterai qu'il est toujours préférable de travailler en variables moi je suis allée fair e un autre programme ./essai qui renvoit la valeur du calcul :s!
Pour le commentaire de Bruno:
-->En fait ce qui serait logique c'est de faire un test après chaque
impression et ce test doit s'exécuter pour toutes les imprimantes qui
existent et quand une imprimante apprtenant à un user bien défini(on
supposera que chaque user a sa propre imprimante)a imprimé 998 pages
alors là on envoit le mail à celui qui s'en sert .
-->Pour le programme merci d'avoir corrigé je noterai qu'il est
toujours préférable de travailler en variables moi je suis allée fair e
un autre programme ./essai qui renvoit la valeur du calcul :s!
Pour le commentaire de Bruno: -->En fait ce qui serait logique c'est de faire un test après chaque impression et ce test doit s'exécuter pour toutes les imprimantes qui existent et quand une imprimante apprtenant à un user bien défini(on supposera que chaque user a sa propre imprimante)a imprimé 998 pages alors là on envoit le mail à celui qui s'en sert .
-->Pour le programme merci d'avoir corrigé je noterai qu'il est toujours préférable de travailler en variables moi je suis allée fair e un autre programme ./essai qui renvoit la valeur du calcul :s!
yvslart
Pour la boucle dont tu m'as parlé Bruno je pense que c'est ainsi: for name [in words ...]; do commands ; done
Puisque je dois donner les noms des utilisateurs j'ai pensé à whoami puisqu'elle affiche tous les utilisateurs connectés.
Pour la boucle dont tu m'as parlé Bruno je pense que c'est ainsi:
for name [in words ...]; do commands ; done
Puisque je dois donner les noms des utilisateurs j'ai pensé à whoami
puisqu'elle affiche tous les utilisateurs connectés.
Pour la boucle dont tu m'as parlé Bruno je pense que c'est ainsi: for name [in words ...]; do commands ; done
Puisque je dois donner les noms des utilisateurs j'ai pensé à whoami puisqu'elle affiche tous les utilisateurs connectés.
Bruno Tréguier
Le 16/01/2010 à 14:40, yvslart a écrit :
Pour la boucle dont tu m'as parlé Bruno je pense que c'est ainsi: for name [in words ...]; do commands ; done
Puisque je dois donner les noms des utilisateurs j'ai pensé à whoami puisqu'elle affiche tous les utilisateurs connectés.
Bonjour,
Pour la boucle, et puisque c'est un exercice, vous pouvez déjà commencer par supposer (ce n'est pas toujours vrai, comme l'a dit Cyrille) que les utilisateurs ont tous un répertoire "home" qui de la forme "/home/user", "user" correspondant au login de la personne. Cela vous permettra de réaliser une boucle simple. Si par la suite il faut complexifier (aller chercher les utilisateurs et les paramètres les concernant dans le fichier /etc/passwd, ne pas prendre en compte les utilisateurs "système" ("root", "bin", etc.) ), on pourra voir ça en temps utile.
La commande "whoami", comme son nom l'indique, vous dira qui vous êtes, pas qui est connecté. Pour ce dernier cas, c'est la commande "who", mais là non plus ce n'est pas adéquat, car le test ne doit pas concerner que les gens qui sont connectés !
Il vous faut donc trouver un moyen de lister les utilisateurs, puis ensuite de faire la boucle autour.
La syntaxe pour la boucle, en considérant que $LISTE_USERS est la variable qui contient la liste des utilisateurs du sytème (les logins séparés par des espaces par exemple) est la suivante:
for USER in $LISTE_USERS do echo "Traitement de $USER" # pour le debug - a virer ensuite la_suite_de_commandes # Ce qu'il y a à faire (votre test avec le "if") done
Bon courage !
Cordialement,
Bruno
Le 16/01/2010 à 14:40, yvslart a écrit :
Pour la boucle dont tu m'as parlé Bruno je pense que c'est ainsi:
for name [in words ...]; do commands ; done
Puisque je dois donner les noms des utilisateurs j'ai pensé à whoami
puisqu'elle affiche tous les utilisateurs connectés.
Bonjour,
Pour la boucle, et puisque c'est un exercice, vous pouvez déjà commencer
par supposer (ce n'est pas toujours vrai, comme l'a dit Cyrille) que les
utilisateurs ont tous un répertoire "home" qui de la forme "/home/user",
"user" correspondant au login de la personne. Cela vous permettra de
réaliser une boucle simple. Si par la suite il faut complexifier (aller
chercher les utilisateurs et les paramètres les concernant dans le
fichier /etc/passwd, ne pas prendre en compte les utilisateurs "système"
("root", "bin", etc.) ), on pourra voir ça en temps utile.
La commande "whoami", comme son nom l'indique, vous dira qui vous êtes,
pas qui est connecté. Pour ce dernier cas, c'est la commande "who", mais
là non plus ce n'est pas adéquat, car le test ne doit pas concerner que
les gens qui sont connectés !
Il vous faut donc trouver un moyen de lister les utilisateurs, puis
ensuite de faire la boucle autour.
La syntaxe pour la boucle, en considérant que $LISTE_USERS est la
variable qui contient la liste des utilisateurs du sytème (les logins
séparés par des espaces par exemple) est la suivante:
for USER in $LISTE_USERS
do
echo "Traitement de $USER" # pour le debug - a virer ensuite
la_suite_de_commandes # Ce qu'il y a à faire (votre test avec le "if")
done
Pour la boucle dont tu m'as parlé Bruno je pense que c'est ainsi: for name [in words ...]; do commands ; done
Puisque je dois donner les noms des utilisateurs j'ai pensé à whoami puisqu'elle affiche tous les utilisateurs connectés.
Bonjour,
Pour la boucle, et puisque c'est un exercice, vous pouvez déjà commencer par supposer (ce n'est pas toujours vrai, comme l'a dit Cyrille) que les utilisateurs ont tous un répertoire "home" qui de la forme "/home/user", "user" correspondant au login de la personne. Cela vous permettra de réaliser une boucle simple. Si par la suite il faut complexifier (aller chercher les utilisateurs et les paramètres les concernant dans le fichier /etc/passwd, ne pas prendre en compte les utilisateurs "système" ("root", "bin", etc.) ), on pourra voir ça en temps utile.
La commande "whoami", comme son nom l'indique, vous dira qui vous êtes, pas qui est connecté. Pour ce dernier cas, c'est la commande "who", mais là non plus ce n'est pas adéquat, car le test ne doit pas concerner que les gens qui sont connectés !
Il vous faut donc trouver un moyen de lister les utilisateurs, puis ensuite de faire la boucle autour.
La syntaxe pour la boucle, en considérant que $LISTE_USERS est la variable qui contient la liste des utilisateurs du sytème (les logins séparés par des espaces par exemple) est la suivante:
for USER in $LISTE_USERS do echo "Traitement de $USER" # pour le debug - a virer ensuite la_suite_de_commandes # Ce qu'il y a à faire (votre test avec le "if") done
J'ai voulu faire le malin en rajoutant les "" que j'avais omis dans mes tests. Il ne faut pas les mettre dans des $(()) !
if [ $(($year % 4)) -eq 0 -a $(($year % 100)) -ne 0 ] || [ $(($year % 400)) -eq 0 ]; then period=$((366 * 24 * 60 * 60)) else period=$((365 * 24 * 60 * 60)) fi
-- Benoit Izac
Cyrille Lefevre
yvslart a écrit :
Pour le répertoire de l'utilisateur merci Cyrille parce que je ne savais pas que sa pouvait être différent donc je suppose que je vai s faire ceci : REP=$(` grep " `logname`" /etc/passwd | cut -d ':' -f6 `)
rappel, c'est soit `...`, soit $(...), mais pas les 2.
et après : TAILLE=$(`du -s -k $REP | cut -f1`) if [ "${TAILLE}" -ge 1000 ] then mail -s "attention" <sujet_mail fi
reprenons la boucle de bases :
1/ la méthode bourin, on part du principe que le nom du répertoire contient le nom d'utilisateur...
users=$(awk -F: '$3 > 1000 {print $1}' /etc/passwd) # > 1000 pour éviter les comptes admin (réservé), etc.
limite00 home=/home for user in ${users}; do taille=$(du -sk "${home}/${user}" | cut -f1) if [ "${taille}" -ge "${limite}" ]; then mail_quota.sh "${user}" "${home}/${user}" "${taille}" "${limite}" fi done
alternative, trouver les compte utilisateur s'ils sont tous dans /home :
limite00 for home in ${homes}; do taille=$(du -sk "${home}" | cut -f1) if [ "${taille}" -ge "${limite}" ]; then user=${home##*/} # aka user=$(basename "${home}") mail_quota.sh "${user}" "${home}" "${taille}" "${limite}" fi done
2/ la solution la mieux à mon sens, plusieurs nouvelles notions : IFS=: read -r => en général, toujours mettre l'option -r à read pas d'espace entre IFS=: et read, on exporte temporairement la variable IFS à la commande read avec : comme valeur. caque variable passé à la commande read sera rempli avec le champ correspondant du fichier /etc/passwd. petit truc à propos de read x y z, s'il y a plus d e 3 champs à lire, la variable z contiendra le champ 3 et tous les champs restant.
limite00 while IFS=: read -r user passwd uid gid gecos home shell; do taille=$(du -sk "${home}" | cut -f1) if [ "${taille}" -ge "${limite}" ]; then mail_quota.sh "${user}" "${home}" "${taille}" "${limite}" fi done < /etc/passwd
alternative, mais pour le fun, c'est histoire de parler de la syntaxe $(< ...), qui équivaut à un $(cat /etc/passwd), mais sans forker.
done << EOF $(< /etc/passwd) EOF
pour finir, s'il faut éliminer des lignes, il est toujours possible d'ajouter un case avec les tests adéquat :
while ...; do case $user in '') continue ;; # ligne vide '#') continue ;; # ligne en commentaire
done < /etc/passwd
l'idée est de toujours avoir le contenu de la boucle dans le shell courant et non dans nu sous shell, mais ailleurs, le nom de l'utilisateur n'est pas nécessairement
*/ le truc que je déteste le plus :
IFS=' ' for ligne in $(cat /etc/passwd); do user=$(echo $ligne | cut -f1) home=$(echo $ligne | cut -f6) ... done
il n'y a rien de plus anti-shell et de plus dégueulasse que cette forme !
puis le script d'envoi mail :
mail_quota.sh
# plus tard, ajouter un contrôle sur les arguments user=$1 home=$2 taille=$3 limite=$4 sujet="attention, limite de quota atteinte" # plus tard, ajouter une méthode pour déterminer l'email # d'un utilisateur, en attendant : to=${user} mail -s "${sujet}" ${to} << EOF Bonjour ${user},
votre limite de quota (${limite}K) a été atteinte (${taille}K) dans le répertoire : ${home}
vous êtes prié de faire de la place dans les prochaines jours, sans quoi, votre compte sera bloqué.
Cordialement EOF
Pour le man quota je l'ai lu et relu et tout ce que j'ai pu capter c'est que: -->quand quota est différent de zéro alors il y a over quota (On pourra alors utiliser sa comme condition) -->quota -p (donne la durée de temps qui reste avant qu'il soit over quota) Bon j'ai pas vraiment compris ........
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre.
yvslart a écrit :
Pour le répertoire de l'utilisateur merci Cyrille parce que je ne
savais pas que sa pouvait être différent donc je suppose que je vai s
faire ceci :
REP=$(` grep " `logname`" /etc/passwd | cut -d ':' -f6 `)
rappel, c'est soit `...`, soit $(...), mais pas les 2.
et après :
TAILLE=$(`du -s -k $REP | cut -f1`)
if [ "${TAILLE}" -ge 1000 ]
then
mail -s "attention" n...@hotmail.com <sujet_mail
fi
reprenons la boucle de bases :
1/ la méthode bourin, on part du principe que le nom du répertoire
contient le nom d'utilisateur...
users=$(awk -F: '$3 > 1000 {print $1}' /etc/passwd)
# > 1000 pour éviter les comptes admin (réservé), etc.
limite=1000
home=/home
for user in ${users}; do
taille=$(du -sk "${home}/${user}" | cut -f1)
if [ "${taille}" -ge "${limite}" ]; then
mail_quota.sh "${user}" "${home}/${user}"
"${taille}" "${limite}"
fi
done
alternative, trouver les compte utilisateur s'ils sont tous dans /home :
limite=1000
for home in ${homes}; do
taille=$(du -sk "${home}" | cut -f1)
if [ "${taille}" -ge "${limite}" ]; then
user=${home##*/} # aka user=$(basename "${home}")
mail_quota.sh "${user}" "${home}"
"${taille}" "${limite}"
fi
done
2/ la solution la mieux à mon sens, plusieurs nouvelles notions :
IFS=: read -r => en général, toujours mettre l'option -r à read
pas d'espace entre IFS=: et read, on exporte temporairement la
variable IFS à la commande read avec : comme valeur. caque variable
passé à la commande read sera rempli avec le champ correspondant du
fichier /etc/passwd. petit truc à propos de read x y z, s'il y a plus d e
3 champs à lire, la variable z contiendra le champ 3 et tous les champs
restant.
limite=1000
while IFS=: read -r user passwd uid gid gecos home shell; do
taille=$(du -sk "${home}" | cut -f1)
if [ "${taille}" -ge "${limite}" ]; then
mail_quota.sh "${user}" "${home}"
"${taille}" "${limite}"
fi
done < /etc/passwd
alternative, mais pour le fun, c'est histoire de parler de la syntaxe
$(< ...), qui équivaut à un $(cat /etc/passwd), mais sans forker.
done << EOF
$(< /etc/passwd)
EOF
pour finir, s'il faut éliminer des lignes, il est toujours possible
d'ajouter un case avec les tests adéquat :
while ...; do
case $user in
'') continue ;; # ligne vide
'#') continue ;; # ligne en commentaire
done < /etc/passwd
l'idée est de toujours avoir le contenu de la boucle dans le shell
courant et non dans nu sous shell, mais ailleurs, le nom de
l'utilisateur n'est pas nécessairement
*/ le truc que je déteste le plus :
IFS='
'
for ligne in $(cat /etc/passwd); do
user=$(echo $ligne | cut -f1)
home=$(echo $ligne | cut -f6)
...
done
il n'y a rien de plus anti-shell et de plus dégueulasse que cette forme !
puis le script d'envoi mail :
mail_quota.sh
# plus tard, ajouter un contrôle sur les arguments
user=$1 home=$2 taille=$3 limite=$4
sujet="attention, limite de quota atteinte"
# plus tard, ajouter une méthode pour déterminer l'email
# d'un utilisateur, en attendant :
to=${user}
mail -s "${sujet}" ${to} << EOF
Bonjour ${user},
votre limite de quota (${limite}K) a été atteinte (${taille}K)
dans le répertoire : ${home}
vous êtes prié de faire de la place dans les prochaines jours,
sans quoi, votre compte sera bloqué.
Cordialement
EOF
Pour le man quota je l'ai lu et relu et tout ce que j'ai pu capter
c'est que:
-->quand quota est différent de zéro alors il y a over quota (On
pourra alors utiliser sa comme condition)
-->quota -p (donne la durée de temps qui reste avant qu'il soit over
quota)
Bon j'ai pas vraiment compris ........
Pour le répertoire de l'utilisateur merci Cyrille parce que je ne savais pas que sa pouvait être différent donc je suppose que je vai s faire ceci : REP=$(` grep " `logname`" /etc/passwd | cut -d ':' -f6 `)
rappel, c'est soit `...`, soit $(...), mais pas les 2.
et après : TAILLE=$(`du -s -k $REP | cut -f1`) if [ "${TAILLE}" -ge 1000 ] then mail -s "attention" <sujet_mail fi
reprenons la boucle de bases :
1/ la méthode bourin, on part du principe que le nom du répertoire contient le nom d'utilisateur...
users=$(awk -F: '$3 > 1000 {print $1}' /etc/passwd) # > 1000 pour éviter les comptes admin (réservé), etc.
limite00 home=/home for user in ${users}; do taille=$(du -sk "${home}/${user}" | cut -f1) if [ "${taille}" -ge "${limite}" ]; then mail_quota.sh "${user}" "${home}/${user}" "${taille}" "${limite}" fi done
alternative, trouver les compte utilisateur s'ils sont tous dans /home :
limite00 for home in ${homes}; do taille=$(du -sk "${home}" | cut -f1) if [ "${taille}" -ge "${limite}" ]; then user=${home##*/} # aka user=$(basename "${home}") mail_quota.sh "${user}" "${home}" "${taille}" "${limite}" fi done
2/ la solution la mieux à mon sens, plusieurs nouvelles notions : IFS=: read -r => en général, toujours mettre l'option -r à read pas d'espace entre IFS=: et read, on exporte temporairement la variable IFS à la commande read avec : comme valeur. caque variable passé à la commande read sera rempli avec le champ correspondant du fichier /etc/passwd. petit truc à propos de read x y z, s'il y a plus d e 3 champs à lire, la variable z contiendra le champ 3 et tous les champs restant.
limite00 while IFS=: read -r user passwd uid gid gecos home shell; do taille=$(du -sk "${home}" | cut -f1) if [ "${taille}" -ge "${limite}" ]; then mail_quota.sh "${user}" "${home}" "${taille}" "${limite}" fi done < /etc/passwd
alternative, mais pour le fun, c'est histoire de parler de la syntaxe $(< ...), qui équivaut à un $(cat /etc/passwd), mais sans forker.
done << EOF $(< /etc/passwd) EOF
pour finir, s'il faut éliminer des lignes, il est toujours possible d'ajouter un case avec les tests adéquat :
while ...; do case $user in '') continue ;; # ligne vide '#') continue ;; # ligne en commentaire
done < /etc/passwd
l'idée est de toujours avoir le contenu de la boucle dans le shell courant et non dans nu sous shell, mais ailleurs, le nom de l'utilisateur n'est pas nécessairement
*/ le truc que je déteste le plus :
IFS=' ' for ligne in $(cat /etc/passwd); do user=$(echo $ligne | cut -f1) home=$(echo $ligne | cut -f6) ... done
il n'y a rien de plus anti-shell et de plus dégueulasse que cette forme !
puis le script d'envoi mail :
mail_quota.sh
# plus tard, ajouter un contrôle sur les arguments user=$1 home=$2 taille=$3 limite=$4 sujet="attention, limite de quota atteinte" # plus tard, ajouter une méthode pour déterminer l'email # d'un utilisateur, en attendant : to=${user} mail -s "${sujet}" ${to} << EOF Bonjour ${user},
votre limite de quota (${limite}K) a été atteinte (${taille}K) dans le répertoire : ${home}
vous êtes prié de faire de la place dans les prochaines jours, sans quoi, votre compte sera bloqué.
Cordialement EOF
Pour le man quota je l'ai lu et relu et tout ce que j'ai pu capter c'est que: -->quand quota est différent de zéro alors il y a over quota (On pourra alors utiliser sa comme condition) -->quota -p (donne la durée de temps qui reste avant qu'il soit over quota) Bon j'ai pas vraiment compris ........
C'est pas posix, mais c'est diablement plus lisible. Donc à moins de se retrouver sur un vieux système tout pourri, autant faire dans le simple, quitte à appeler gdate plutôt que data...
C'est pas posix, mais c'est diablement plus lisible. Donc à moins
de se retrouver sur un vieux système tout pourri, autant faire
dans le simple, quitte à appeler gdate plutôt que data...
C'est pas posix, mais c'est diablement plus lisible. Donc à moins de se retrouver sur un vieux système tout pourri, autant faire dans le simple, quitte à appeler gdate plutôt que data...
C'est pas posix, mais c'est diablement plus lisible. Donc à moins de se retrouver sur un vieux système tout pourri, autant faire dans le simple, quitte à appeler gdate plutôt que data...
C'est pas posix, mais c'est diablement plus lisible. Donc à moins
de se retrouver sur un vieux système tout pourri, autant faire
dans le simple, quitte à appeler gdate plutôt que data...
C'est pas posix, mais c'est diablement plus lisible. Donc à moins de se retrouver sur un vieux système tout pourri, autant faire dans le simple, quitte à appeler gdate plutôt que data...
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre.
Arnaud Launay
Le 16-01-2010, Cyrille Lefevre <cyrille.lefevre-news% a écrit :
le jour ou tu auras à faire à une prod, il faudra bien que tu t'adaptes... et même si l'environnement gnu est bien à la maison ou à l'école, il ne l'est pas en prod !
L'"école", ça doit bien faire plus de 10 ans que j'en ai pas vu un banc. A la maison, j'ai autre chose à faire que jouer, ça c'était il y a 15 ans.
En prod, j'ai beaucoup de linux, un peu de bsd et quelques windows. Mais c'est mon choix -- comme ça, je ne suis pas emmerdé par des clients avec des archi remontant à Mathusalem.
(nota: même sur solaris, on peut installer gdate, d'abord) (bon, sur aix et autres HPUX, évidemment...) (allez, je vais installer plan9 pour tester)
as, même si c'est moins bien. malheureusement, nivellement par le bas :-(
Mauvais boulot, changer boulot :)
à ce tarif, je préfère la couche bsd, mais ce n'est que mon avis ;^)
Ça marche aussi. BSD ou Linux, très franchement, c'est comme choisir entre un cognac et un armagnac pour accompagner le cigare à la fin du repas, c'est un choix personnel... :)
Le 16-01-2010, Cyrille Lefevre <cyrille.lefevre-news%nospam@laposte.net.invalid> a écrit :
le jour ou tu auras à faire à une prod, il faudra bien que tu
t'adaptes... et même si l'environnement gnu est bien à la maison
ou à l'école, il ne l'est pas en prod !
L'"école", ça doit bien faire plus de 10 ans que j'en ai pas vu
un banc. A la maison, j'ai autre chose à faire que jouer, ça
c'était il y a 15 ans.
En prod, j'ai beaucoup de linux, un peu de bsd et quelques windows.
Mais c'est mon choix -- comme ça, je ne suis pas emmerdé par des
clients avec des archi remontant à Mathusalem.
(nota: même sur solaris, on peut installer gdate, d'abord)
(bon, sur aix et autres HPUX, évidemment...)
(allez, je vais installer plan9 pour tester)
as, même si c'est moins bien. malheureusement,
nivellement par le bas :-(
Mauvais boulot, changer boulot :)
à ce tarif, je préfère la couche bsd, mais ce n'est que mon avis ;^)
Ça marche aussi. BSD ou Linux, très franchement, c'est comme
choisir entre un cognac et un armagnac pour accompagner le cigare
à la fin du repas, c'est un choix personnel... :)
Le 16-01-2010, Cyrille Lefevre <cyrille.lefevre-news% a écrit :
le jour ou tu auras à faire à une prod, il faudra bien que tu t'adaptes... et même si l'environnement gnu est bien à la maison ou à l'école, il ne l'est pas en prod !
L'"école", ça doit bien faire plus de 10 ans que j'en ai pas vu un banc. A la maison, j'ai autre chose à faire que jouer, ça c'était il y a 15 ans.
En prod, j'ai beaucoup de linux, un peu de bsd et quelques windows. Mais c'est mon choix -- comme ça, je ne suis pas emmerdé par des clients avec des archi remontant à Mathusalem.
(nota: même sur solaris, on peut installer gdate, d'abord) (bon, sur aix et autres HPUX, évidemment...) (allez, je vais installer plan9 pour tester)
as, même si c'est moins bien. malheureusement, nivellement par le bas :-(
Mauvais boulot, changer boulot :)
à ce tarif, je préfère la couche bsd, mais ce n'est que mon avis ;^)
Ça marche aussi. BSD ou Linux, très franchement, c'est comme choisir entre un cognac et un armagnac pour accompagner le cigare à la fin du repas, c'est un choix personnel... :)