mercredi 26 janvier 2011

Linux, process defunct

En faisant ce matin un ps aux | grep java sur un serveur, je me suis retrouvé avec ca :
507       9659  0.2  0.0      0     0 pts/7    Z    09:09   0:04 [java] <defunct>

Et lorsque je tapais kill -9 9659 ca ne donnait rien.

Il faut en fait tuer les parents de ce process :
ps -ef | grep defunct | awk '{print "kill -9 ", $3}'


Arrêter proprement un script Java

Ci-dessous un programme qui appelle en boucle la méthode processSomething(...) avec un sleep de 5 secondes.

Il faut donc traiter les user interrupts dans deux cas : 
  • le cas où l'interruption se fait lors de l'exécution d'un processSomething(...) 
  • et le cas où l'interruption se fait lors du sleep de 5 secondes.

public class StopSample{
    public static boolean running = true;

    public static void main(String [] args){
        new StopSample().processMain();
    }
    public void processMain() {
        // si on interrompt durant le processSomething(...) plus bas (cas 1) :
        Runtime.getRuntime().addShutdownHook(new Thread() {
            public void run() {
                StopSample.running = false;
                logger.info("Arret du programme suite à un user interrupt");
            }
        });
        try {
            for (; running;) {
                processSomething(...);
                Thread.sleep(5000);
            }
        } catch (InterruptedException e) {
            // si on interrompt durant le Thread.sleep (cas 2) :
            logger.info("Arret du programme suite à un user interrupt");
            System.exit(0);
        }
}

Lien : http://www.roseindia.net/javatutorials/hooking%20_into_the_shutdown_call.shtml

mardi 25 janvier 2011

Définir une variable d'environnement sous Linux

  • Pour rajouter une variable, le temps de la session linux courante:

          - sous bash/sh :
export PATH=$PATH:/path1/toto:/path1/titi

          - sous tcsh/csh :
set PATH=($PATH /path1/toto /path1/titi)


  • Pour rajouter une variable qui soit visible à chaque login:

          - sous bash/sh :
echo 'export PATH=$PATH:/path1/toto:/path2/titi' >> ~/.bashrc

          - sous tcsh/csh :
echo 'set PATH=($PATH /path1/toto /path2/titi)' >> ~/.cshrc


lundi 24 janvier 2011

Rechercher une boite aux lettres

Le site de LaPoste propose un moteur de recherche permettant de trouver les boîtes aux lettres les plus proches d'une adresse donnée.




jeudi 20 janvier 2011

"Facebook n'existait pas il y a un an" (Valérie Pecresse sur France 2)

Dans l'émission "Face aux Francais" sur France 2, elle a declaré hier :

L’économie numérique connait des révolutions tous les jours, quand on voit qu'aujourd'hui Facebook détrône Google, Facebook qui n'existait pas il y a un an

No comment...

Python élu langage de l'année 2010


Le langage qui a obtenu la plus forte progression est Python, avec +1.81% (passant du 7eme rang au 5eme).

Professionnalisme controleurs SNCF

J attendais que l occasion se présente pour publier ce post. Au moment où je l ecris, je suis dans le TER qui est parti de Melun à 9h15, en direction de Paris.

Il y a en face de moi 6 controleurs (qui n ont controlé que mon wagon) et qui cause depuis au moins une quinzaine de minutes des congés à la SNCF.

Ca ne donne pas du tout une image pro...

mercredi 19 janvier 2011

Silicon Valley vs Europe

Quand on créé une entreprise, il faut penser "globalement" et ne surtout pas penser "localement" si l'on souhaite vraiment que ca marche.

L'immense majorité des gens de la Silicon Valley pense de cette facon et c'est pour ca qu'ils reussissent plus facilement.

Par ailleurs, c'est dans la Silicon Valley que se trouve l'argent.


Voici un post de Loic Le Meur fort interessant.

Jurisprudence délit de marchandage

Trouvé sur Wikipedia :



La jurisprudence établit qu'il y a délit de marchandage notamment dans les cas suivants :

    * le personnel sous-traité travaille pour un seul client depuis plusieurs années ;
    * le personnel sous-traité reçoit ses instructions de l'encadrement du client ; le client contrôle lui-même le suivi, définit les tâches et les lieux d'exécution ;
    * le personnel exécute la totalité de sa mission dans les locaux du client, et est soumis à des horaires identiques à ceux du personnel du client ;
    * le client fournit les matériaux, les pièces de rechange, met à disposition son outillage, ses véhicules, des locaux lui appartenant, ses documents, etc.
    * la rémunération du sous-traitant est calculée au temps passé par son personnel.

mardi 11 janvier 2011

ORA-28000: The Account is locked

Comment unlocker ? ;o)

Ben tout simplement, via un compte admin Oracle :

SQL> alter user scott identified by tiger account unlock;

Crontab, howto

Syntaxe générale :

*    *    *    *    * command to be executed 

-    -    -    -    - 
|    |    |    |    | 
|    |    |    |    +----- day of week (0 - 6) (Sunday=0) 
|    |    | +------- month (1 - 12) 
|    | +--------- day of month (1 - 31) 
| +----------- hour (0 - 23) 
+------------- min (0 - 59)

Générer un fichier de log :

* * * * * rm toto.txt > /var/log/cron_mv.log

Désactiver l'envoi de mail :

Par défaut, un email est envoyé au user lancant le cronjob. Pour ne pas envoyer de mail :
* * * * * rm toto.txt >/dev/null 2>&1

Variables d'environnement par défaut:

Par défaut, crontab initialise 4 variables d'environnement :
HOME=le repertoire home de l'utilisateur
LOGNAME=id de l'utilisateur
PATH=/usr/bin:/usr/sbin:.
SHELL=/usr/bin/sh 


Variables d'environnement personnalisés:
Deux méthodes

-soit les initialiser dans le script appelé par crontab :

crontab:
* * * * * myscript.sh

myscript.sh:
#!/bin/bash
MYVAR=PROD
LANG=en_US.UTF-8
export MYVAR
export LANG
...
 

-soit les initialiser dans crontab :

crontab:
MYVAR=PROD
LANG=en_US.UTF-8
 
* * * * * myscript.sh

Attention, la valeur de la variable n'est jamais interpretée. Ainsi, PATH = $HOME/bin:$PATH ne fonctionnera pas comme on s'y attendrait.

Coder vite / coder bien, pas facile de trouver le juste milieu

Trouvé sur XKCD (le site web du dessinateur Randall Munroe) :



Categories