Jump to content

Archived

This topic is now archived and is closed to further replies.

theocrite

[GLOBAL] 100% question pour un pinguin

Recommended Posts

Bon, par contre il y aura un bug si ton fichier contient des majuscules accentuées :

$ echo É | tr [:upper:] [:lower:]
É

Share this post


Link to post
Share on other sites

Ah zut, je pensait que c'était géré. J'avais hésité à faire ça ou le contraire. J'ai choisi la mauvaise solution.

Dans ce cas, il faut inverser les deux dernières lignes. Dabord les accents, puis les lettres capitales.

PS : Pas des majuscules, des lettres capitales ;)http://fr.wikipedia.org/wiki/Majuscule

Share this post


Link to post
Share on other sites
Dans ce cas, il faut inverser les deux dernières lignes. Dabord les accents, puis les lettres capitales.

Dans ce cas là, ton tr doit être deux fois plus long puisqu'il doit prendre en compte aussi les lettres capitales :)

Share this post


Link to post
Share on other sites

Ouais, je suis dégouté. J'ai repensé à ça pendant mon éval.

Je me suis mis à gratter des lignes de commande sur mon brouillon...

Mais sans l'interpréteur, c'est dur.

J'ai cherché comment "simplifier" ça (d'une façon tordue, d'où les guillemets), mais ça ne fonctionne pas.

Mais je ne lache pas l'affaire. Je suis sûr qu'il y a moyen.

Question comment faire pour faire un script qui récupère le nom de l'user qui l'a lancé pour pouvoir l'imprimer sur l'écran par exemple ?

#!/bin/sh
#Recup du nom de l'user
echo $USER

Share this post


Link to post
Share on other sites

alors ça c'est facile :

whoami

Raah le traitre qui demande à ce qu'on pose un question dont il connait la reponse... :transpi:

(nan, en fait je m'en suis rendu compte apres... :D )

Share this post


Link to post
Share on other sites

J'y ai pensé, même si j'ai une préférence pour

who am i

Est ce que tu es sûr que ça fonctionne si il est lancé par un demon apache par exemple ? (je pense que oui, mais bon)

Tu as gagné le droit de poser une question donc... :roll:

:transpi: c'est traitre de profiter que personne ne soit là... ;)
Re :mad2:

EDIT : Et non, quel con, moi je pensait à

who

:D

Share this post


Link to post
Share on other sites

alors j'ai une question super facile :

que se passe-t-il si on arrive à faire ça (une partie de la question étant de le faire...)

lrwxrwxrwx  1 lorinc lorinc 5 sep  3 02:46 lien1 -> lien4
lrwxrwxrwx  1 lorinc lorinc 5 sep  3 02:44 lien2 -> lien1
lrwxrwxrwx  1 lorinc lorinc 5 sep  3 02:44 lien3 -> lien2
lrwxrwxrwx  1 lorinc lorinc 5 sep  3 02:45 lien4 -> lien3

et que l'on lance un des symlinks???

et ouais, c'est simple, mais c'est à mon niveau (d'ailleurs, on se rend compte que linux est bien foutu quand même... :D )

EDIT : c'est pas parce qu'on est que 2 à cette heure sur le forum, qu'il faut en profiter, si tu crois que je ne t'ai pas vu... :transpi:

Share this post


Link to post
Share on other sites

Déja, tu as le droit de lancer un coup de ntp-date. :roll:

Apparament ton truc ne fonctionne pas. Quand le cron me lance le script, j'ai une ligne vide dans mon fichier de log...

Sinon, il me semble que linux interdit les les liens récursifs, il ne devrait donc ne rien faire du tout :mad2:

Mais je ne suis pas sûr et il faut que j'aille me coucher :D

:D

EDIT : ;), ça va, je m'en vais :transpi:

C'est vrai que c'est pas très sport.

Share this post


Link to post
Share on other sites
alors j'ai une question super facile :

que se passe-t-il si on arrive à faire ça (une partie de la question étant de le faire...)

lrwxrwxrwx  1 lorinc lorinc 5 sep  3 02:46 lien1 -> lien4
lrwxrwxrwx  1 lorinc lorinc 5 sep  3 02:44 lien2 -> lien1
lrwxrwxrwx  1 lorinc lorinc 5 sep  3 02:44 lien3 -> lien2
lrwxrwxrwx  1 lorinc lorinc 5 sep  3 02:45 lien4 -> lien3

et que l'on lance un des symlinks???

et ouais, c'est simple, mais c'est à mon niveau (d'ailleurs, on se rend compte que linux est bien foutu quand même... :D )

EDIT : c'est pas parce qu'on est que 2 à cette heure sur le forum, qu'il faut en profiter, si tu crois que je ne t'ai pas vu... :transpi:

Bof...

 $ ln -s l1 l4
$ ln -s l2 l1
$ ln -s l3 l2
$ ln -s l1 l4

 $ ll
total 0
lrwxr-xr-x  1 damien users 2 Sep  3 03:22 l1 -> l2
lrwxr-xr-x  1 damien users 2 Sep  3 03:22 l2 -> l3
lrwxr-xr-x  1 damien users 2 Sep  3 03:22 l3 -> l4
lrwxr-xr-x  1 damien users 2 Sep  3 03:22 l4 -> l1

 $ ./l1
zsh: too many levels of symbolic links: ./l1

(pour le whoami, un petit "whereis whoami" indique que c'est "/bin/whoami" donc c'est ça qu'il faudrait utiliser dans un script un peu bozarre sans PATH)

Share this post


Link to post
Share on other sites

Ca ne semble pas fonctionner non plus.

Et pour ceux qui ne l'auraient jamais fait, je vous invite à taper

#who am i
#whoami

Puis comparer les deux.

Share this post


Link to post
Share on other sites
Bof...

 $ ln -s l1 l4
$ ln -s l2 l1
$ ln -s l3 l2
$ ln -s l1 l4

 $ ll
total 0
lrwxr-xr-x  1 damien users 2 Sep  3 03:22 l1 -> l2
lrwxr-xr-x  1 damien users 2 Sep  3 03:22 l2 -> l3
lrwxr-xr-x  1 damien users 2 Sep  3 03:22 l3 -> l4
lrwxr-xr-x  1 damien users 2 Sep  3 03:22 l4 -> l1

tiens, tu y arrive comme ça, parce que normalement, si t'as un bon shell :transpi: :

ln -s l1 l2
[lorinc@localhost test_teo]$ ln -s l2 l1
ln: `l1': fichier existant.
[lorinc@localhost test_teo]$ ln -s --force l2 l1
ln: `l2' et `l1' identifient le même fichier.

ça m'étonne ton truc...

Share this post


Link to post
Share on other sites

bon, puisque ma question precedente était un fiasco absolu... j'ai mets une autre :

comment limiter le nombre maximal de fichier ouverts en même temps, de processus d'un utilisateur, la taille de la pile la quantité de swap disponible pour un utilisateur et la taille maximale d'un fichier?

le tout en une seul ligne, bien evidement...

Share this post


Link to post
Share on other sites

C'est marrant en fait, peu de gens ici connaissent ulimit.... C'est dommage, parce que du coup ils croient que cela varie selon les distributions, etc...

Faudrait les :transpi::yes:

Share this post


Link to post
Share on other sites

exact

ulimite -a

pour connaitre les limites actuelles (et les options par la même accose)

ou limit en tcsh

d'ailleurs, ça me fait repenser à ton petit programme de l'autre jour : on voit bien que le nombre de processus à une limite que tu peux fixer. autant la fixer relativement basse (un user va pas avoir 200 processus de lancés), tu peux aussi limiter le temps CPU.

Si tu te trouve fasse au programme de l'autre jour, il suffit de se logger avec un utilisateur plus puissant et de kiiller les processus de l'autre... va faire ça avec l'autre (win)daube...

Share this post


Link to post
Share on other sites

, il suffit de se logger avec un utilisateur plus puissant

Comment tu te logge lorsque tous les apples systemes sont "aspirés" ??? :yes:

Tu devrais essayer cette commande si tu n'as trop rien a faire lorinc...

Share this post


Link to post
Share on other sites

:yes:

tu ne peux juste plus creer de processus avec ce user là. ton programme, il ne fait que se forker jusqu'a plus soif, donc arrive un moment ou il a atteint la limite du systeme.

Si la limite du systeme est la limite hard, alors oui, tu peux plus rien faire.

Si elle est < a la limite hard, alors tu peux encore faire plein de chose, comme basculer dans un autre console et te logger (qui est prioritaire)...

Share this post


Link to post
Share on other sites

[lorinc@localhost test_teo]$ ./test_fork

27162 pts2     Z      0:00 [test_fork] <defunct>
27166 pts2     Z      0:00 [test_fork] <defunct>
27173 pts2     Z      0:00 [test_fork] <defunct>
27182 pts2     Z      0:00 [test_fork] <defunct>
27186 pts2     Z      0:00 [test_fork] <defunct>
27192 pts2     Z      0:00 [test_fork] <defunct>
27202 pts2     Z      0:00 [test_fork] <defunct>
27236 pts2     Z      0:00 [test_fork] <defunct>
27242 pts2     Z      0:00 [test_fork] <defunct>
27246 pts2     Z      0:00 [test_fork] <defunct>
27254 pts2     Z      0:00 [test_fork] <defunct>
27257 pts2     Z      0:00 [test_fork] <defunct>
27262 pts2     Z      0:00 [test_fork] <defunct>
27266 pts2     Z      0:00 [test_fork] <defunct>
27282 pts2     Z      0:00 [test_fork] <defunct>
27288 pts2     Z      0:00 [test_fork] <defunct>
27290 pts2     Z      0:00 [test_fork] <defunct>
27291 pts2     Z      0:00 [test_fork] <defunct>
27298 pts2     Z      0:00 [test_fork] <defunct>
27302 pts2     Z      0:00 [test_fork] <defunct>
27308 pts2     Z      0:00 [test_fork] <defunct>
27312 pts2     Z      0:00 [test_fork] <defunct>
27325 pts2     Z      0:00 [test_fork] <defunct>
27328 pts2     Z      0:00 [test_fork] <defunct>
27334 pts2     Z      0:00 [test_fork] <defunct>
27338 pts2     Z      0:00 [test_fork] <defunct>
27347 pts2     Z      0:00 [test_fork] <defunct>
27350 pts2     Z      0:00 [test_fork] <defunct>
27358 pts2     Z      0:00 [test_fork] <defunct>
27367 pts2     Z      0:00 [test_fork] <defunct>
27369 pts2     Z      0:00 [test_fork] <defunct>
27373 pts2     Z      0:00 [test_fork] <defunct>
27379 pts2     Z      0:00 [test_fork] <defunct>
27389 pts2     Z      0:00 [test_fork] <defunct>
27423 pts2     Z      0:00 [test_fork] <defunct>
27429 pts2     Z      0:00 [test_fork] <defunct>
27433 pts2     Z      0:00 [test_fork] <defunct>
27450 pts2     Z      0:00 [test_fork] <defunct>
27454 pts2     Z      0:00 [test_fork] <defunct>
27465 pts2     Z      0:00 [test_fork] <defunct>
27469 pts2     Z      0:00 [test_fork] <defunct>
27475 pts2     Z      0:00 [test_fork] <defunct>
27485 pts2     Z      0:00 [test_fork] <defunct>
27489 pts2     Z      0:00 [test_fork] <defunct>
27495 pts2     Z      0:00 [test_fork] <defunct>
27511 pts2     Z      0:00 [test_fork] <defunct>
27515 pts2     Z      0:00 [test_fork] <defunct>
27524 pts2     Z      0:00 [test_fork] <defunct>
27531 pts2     Z      0:00 [test_fork] <defunct>
27533 pts2     Z      0:00 [test_fork] <defunct>
27537 pts2     Z      0:00 [test_fork] <defunct>
27543 pts2     Z      0:00 [test_fork] <defunct>
27557 pts2     Z      0:00 [test_fork] <defunct>
27561 pts2     Z      0:00 [test_fork] <defunct>
27566 pts2     Z      0:00 [test_fork] <defunct>

j'en coupe un paquet

tu m'expliques comment j'ai fait pour envoyer le post, si mon pc il freeze... :chinois:

j'ai juste tweaker les limites autorisée au user...

Share this post


Link to post
Share on other sites

Tu as fait un top avec tous les processus zombies non killés, pour voir l'utilisation de la memoire et du cpu ?

Pareil pour un uptime ?

Share this post


Link to post
Share on other sites

j'ai simplement ouvert 2 session shell sous kde, l'une avec mon compte (limité) l'autre avec root...

Share this post


Link to post
Share on other sites

moauis, parce que tu as mis une limite tres basse lorinc.... Pour contourner le pb...

Fait le sur un install toute fraiche...tu verras.

Share this post


Link to post
Share on other sites

certes, au passage :

Le nombre maximal de processus simultané : il est conseillé de mettre une valeur suffisamment haute (par exemple 256) dans les fichiers d'initialisation du shell de connexion, mais de ne pas laisser la limite infinie. En effet, cela permet de prévenir les erreurs de programmation où l'on boucle sur un fork(). Au bout d'un certain temps, celui-ci échouera et, de cette manière, root pourra stopper tous les processus du groupe fautif depuis une autre console.

Christophe Blaess, Programmation système en C sous Linux, page208-209.

Comme quoi je dis pas n'importe quoi sans réfléchir, je me suis quand même documenté sur la question avant... :chinois:

Share this post


Link to post
Share on other sites
tiens, tu y arrive comme ça, parce que normalement, si t'as un bon shell :chinois: :

ln -s l1 l2
[lorinc@localhost test_teo]$ ln -s l2 l1
ln: `l1': fichier existant.
[lorinc@localhost test_teo]$ ln -s --force l2 l1
ln: `l2' et `l1' identifient le même fichier.

ça m'étonne ton truc...

bof, ça marche avec zsh et bash...

essaye en enlevant d'abord tous les l1 et l2, parce que le "ln: `l1': fichier existant.", c'est ptet juste qu'il reste l1...

Share this post


Link to post
Share on other sites

×
×
  • Create New...