OVH Cloud OVH Cloud

renommer un process

20 réponses
Avatar
at
Bonsoir,

Si je lance deux fois le même process, par exemple deux fois VLC,
comment faire identifier un VLC ? Est-il possible d'attribuer un faux
nom à un process pour le reconnaître ? Car en fait je voudrais tuer
avec un kill -9 mais évidemment il faudrait pouvoir déterminer lequel
est-ce..

Merci

10 réponses

1 2
Avatar
Erwan David
(Luc Habert) écrivait :

Benoit Izac :

Le problème c'est que « ps aux|grep foo » risque de te donner le pid de
grep :



Il y a pgrep qui n'a pas ce travers. Et pkill qui combine pgrep et kill.



pgrep ne te donne que les PID sans même te donner les commandes. Ce qui
le rend souvent inutile...

--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Avatar
Damien Wyart
* Erwan David in fr.comp.os.linux.configuration:
pgrep ne te donne que les PID sans même te donner les commandes. Ce
qui le rend souvent inutile...



pgrep -l

--
DW
Avatar
Erwan David
Damien Wyart écrivait :

* Erwan David in fr.comp.os.linux.configuration:
pgrep ne te donne que les PID sans même te donner les commandes. Ce
qui le rend souvent inutile...



pgrep -l



Bien trop sommaire par rapport au ps wwaux de la question d'origine...

Si pgrep prenant les options de ps, ça serait nettement mieux...


--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Avatar
Philippe Naudin
Le ven 11 mar 2011 10:59:38 CET, at a écrit:

Benoit Izac a exprimé avec précision :

> Ensuite, pourquoi -9 (KILL) qui est plutôt brutal au lieu que TERM ?

> #!/bin/sh
> pkill -TERM -f "$1"

ça c'est très bien :)




Je me fais probablement des idées sur ton but, mais bast.
Perso, j'utilise un truc comme ça :

STOP='echo kill $! | at '$FIN
echo "
vlc --open="$URL"
--intf=dummy
--sout="$OUTPUT"
--sout-standard-access=file
--sout-standard-mux=ts
/dev/null &


eval $STOP >& /dev/null
" | at $DEBUT >& /dev/null

Donc, $! pour récupérer le PID de la commande que je viens d'exécuter,
et kill $lePidDeLaCommande pour tuer.

Ça ne marcherait pas forcément avec un processus qui forke, mais aucun
problème avec vlc.

HTH,

--
Philippe Naudin
Avatar
at
Philippe Naudin avait prétendu :

STOP='echo kill $! | at '$FIN
echo "
vlc --open="$URL"
--intf=dummy
--sout="$OUTPUT"
--sout-standard-access=file
--sout-standard-mux=ts
> /dev/null &
eval $STOP >& /dev/null
" | at $DEBUT >& /dev/null



Bein c'est balaise je comprends rien :(
Ah si, tu utilises AT pour déterminer l'heure de début et l'heure de
fin ?

Donc, $! pour récupérer le PID de la commande que je viens d'exécuter,
et kill $lePidDeLaCommande pour tuer.

Ça ne marcherait pas forcément avec un processus qui forke, mais aucun
problème avec vlc.

HTH,



Bon en fait ça marche avec une proposition précédente. En pratique je
démarre avec cron deux taches. Il s'agit de CURL qui récupère des flux
audio.

Les deux taches démarrent le même jour à quelques minutes de
différence et s'arrêtent à des heure différentes. Donc j'arrête curl
avec pkill (également avec cron). Donc il vaut mieux savoir quel curl
arrêter sans erreur.
Avatar
Philippe Naudin
Le ven 11 mar 2011 22:38:41 CET, at a écrit:

Philippe Naudin avait prétendu :

> STOP='echo kill $! | at '$FIN
> echo "
> vlc --open="$URL"
> --intf=dummy
> --sout="$OUTPUT"
> --sout-standard-access=file
> --sout-standard-mux=ts
> > /dev/null &
> eval $STOP >& /dev/null
> " | at $DEBUT >& /dev/null

Bein c'est balaise je comprends rien :(
Ah si, tu utilises AT pour déterminer l'heure de début et l'heure de
fin ?



En gros, la première ligne construit (sans rien exécuter) la commande
qui arrêtera le processus.

La suite est une commande qui est passée à at, et qui provoque le
démarrage d'un enregistrement par vlc de la chaine $URL à l'heure
$DEBUT. Cette commande, aussitôt l'enregistrement démarré, exécute
(c'est la ligne eval $STOP...) la commande qui a été construite au
début, dans laquelle $! est remplacé par le PID du vlc qui vient de
démarrer. Cette commande d'arrêt est elle-même passée à at, qui
arrêtera donc l'enregistrement à l'heure $FIN.

> Donc, $! pour récupérer le PID de la commande que je viens d'exéc uter,
> et kill $lePidDeLaCommande pour tuer.
>
> Ça ne marcherait pas forcément avec un processus qui forke, mais au cun
> problème avec vlc.
>
> HTH,

Bon en fait ça marche avec une proposition précédente. En pratique je
démarre avec cron deux taches. Il s'agit de CURL qui récupère des f lux
audio.



Pour moi, vlc qui enregistre une émission.

Les deux taches démarrent le même jour à quelques minutes de
différence et s'arrêtent à des heure différentes. Donc j'arrête curl
avec pkill (également avec cron). Donc il vaut mieux savoir quel curl
arrêter sans erreur.



Un peu pareil dans mon exemple, sauf que le deuxième cron (en fait,
un at pour moi) est démarré par le premier juste après avoir lancé curl
(vlc pour moi), ce qui permet d'indiquer le PID du processus à tuer
sans risque d'erreur.
Il est ainsi tout à fait possible d'enregistrer plusieurs émissions
simultanément (qui peuvent démarrer en même temps ou pas), avec à
chaque fois l'heure d'arrêt que l'on veut.

Donc tu pourrais remplacer les 5 lignes qui commencent à "vlc --open"
par la commande "curl ..." que tu utilises déjà (sans oublier le
final), et ça devrait fonctionner tel quel.

Bonne nuit !

--
Philippe Naudin
Avatar
at
Il se trouve que Philippe Naudin a formulé :
Le ven 11 mar 2011 22:38:41 CET, at a écrit:

Philippe Naudin avait prétendu :

STOP='echo kill $! | at '$FIN
echo "
vlc --open="$URL"
--intf=dummy
--sout="$OUTPUT"
--sout-standard-access=file
--sout-standard-mux=ts
> /dev/null &
eval $STOP >& /dev/null
" | at $DEBUT >& /dev/null



Bein c'est balaise je comprends rien :(
Ah si, tu utilises AT pour déterminer l'heure de début et l'heure de
fin ?



En gros, la première ligne construit (sans rien exécuter) la commande
qui arrêtera le processus.

La suite est une commande qui est passée à at, et qui provoque le
démarrage d'un enregistrement par vlc de la chaine $URL à l'heure
$DEBUT. Cette commande, aussitôt l'enregistrement démarré, exécute
(c'est la ligne eval $STOP...) la commande qui a été construite au
début, dans laquelle $! est remplacé par le PID du vlc qui vient de
démarrer. Cette commande d'arrêt est elle-même passée à at, qui
arrêtera donc l'enregistrement à l'heure $FIN.

Donc, $! pour récupérer le PID de la commande que je viens d'exécuter,
et kill $lePidDeLaCommande pour tuer.

Ça ne marcherait pas forcément avec un processus qui forke, mais aucun
problème avec vlc.

HTH,



Bon en fait ça marche avec une proposition précédente. En pratique je
démarre avec cron deux taches. Il s'agit de CURL qui récupère des flux
audio.



Pour moi, vlc qui enregistre une émission.

Les deux taches démarrent le même jour à quelques minutes de
différence et s'arrêtent à des heure différentes. Donc j'arrête curl
avec pkill (également avec cron). Donc il vaut mieux savoir quel curl
arrêter sans erreur.



Un peu pareil dans mon exemple, sauf que le deuxième cron (en fait,
un at pour moi) est démarré par le premier juste après avoir lancé curl
(vlc pour moi), ce qui permet d'indiquer le PID du processus à tuer
sans risque d'erreur.
Il est ainsi tout à fait possible d'enregistrer plusieurs émissions
simultanément (qui peuvent démarrer en même temps ou pas), avec à
chaque fois l'heure d'arrêt que l'on veut.

Donc tu pourrais remplacer les 5 lignes qui commencent à "vlc --open"
par la commande "curl ..." que tu utilises déjà (sans oublier le
final), et ça devrait fonctionner tel quel.

Bonne nuit !



J'ai essayé de reproduite ton script, la départ fonctionne mais pas
l'arrêt! Le fichier filename contient bien le stream audio.
Le voici:

#!/bin/bash
FIN:28
DEBUT:26
FILENAME="/mnt/teste.mp3"
STOP='echo kill $! | at '$FIN
echo "curl --silent --retry 43 --retry-max-time 14 --connect-timeout 60
"http://radio.rim952.fr:8002/stream3.mp3" >> $FILENAME
eval $STOP >& /dev/null
" | at $DEBUT >& /dev/null

Je ne vois pas ou est l'erreur ?
Avatar
at
at a présenté l'énoncé suivant :

Je ne vois pas ou est l'erreur ?



Bon avec ça c'est ok:

#!/bin/bash
FIN:01
DEBUT:59
FILENAME="/mnt/teste.mp3"
STOP='echo pkill -f curl | at '$FIN
echo "curl --silent --retry 43 --retry-max-time 14 --connect-timeout 60
http://radio.rim952.fr:8002/stream3.mp3 >> $FILENAME
/dev/null &


eval $STOP >& /dev/null
" | at $DEBUT >& /dev/null
Avatar
Philippe Naudin
Le sam 12 mar 2011 13:31:27 CET, at a écrit:

Il se trouve que Philippe Naudin a formulé :
> Le ven 11 mar 2011 22:38:41 CET, at a écrit:
>
>> Philippe Naudin avait prétendu :
>>
>>> STOP='echo kill $! | at '$FIN
>>> echo "
>>> vlc --open="$URL"
>>> --intf=dummy
>>> --sout="$OUTPUT"
>>> --sout-standard-access=file
>>> --sout-standard-mux=ts
>>> > /dev/null &
>>> eval $STOP >& /dev/null
>>> " | at $DEBUT >& /dev/null
>>
>> Bein c'est balaise je comprends rien :(
>> Ah si, tu utilises AT pour déterminer l'heure de début et l'heure de
>> fin ?
>
> En gros, la première ligne construit (sans rien exécuter) la comman de
> qui arrêtera le processus.
>
> La suite est une commande qui est passée à at, et qui provoque le
> démarrage d'un enregistrement par vlc de la chaine $URL à l'heure
> $DEBUT. Cette commande, aussitôt l'enregistrement démarré, exéc ute
> (c'est la ligne eval $STOP...) la commande qui a été construite au
> début, dans laquelle $! est remplacé par le PID du vlc qui vient de
> démarrer. Cette commande d'arrêt est elle-même passée à at, q ui
> arrêtera donc l'enregistrement à l'heure $FIN.
>
>>> Donc, $! pour récupérer le PID de la commande que je viens d'ex écuter,
>>> et kill $lePidDeLaCommande pour tuer.
>>>
>>> Ça ne marcherait pas forcément avec un processus qui forke, mais aucun
>>> problème avec vlc.
>>>
>>> HTH,
>>
>> Bon en fait ça marche avec une proposition précédente. En pratiq ue je
>> démarre avec cron deux taches. Il s'agit de CURL qui récupère de s flux
>> audio.
>
> Pour moi, vlc qui enregistre une émission.
>
>> Les deux taches démarrent le même jour à quelques minutes de
>> différence et s'arrêtent à des heure différentes. Donc j'arr ête curl
>> avec pkill (également avec cron). Donc il vaut mieux savoir quel cur l
>> arrêter sans erreur.
>
> Un peu pareil dans mon exemple, sauf que le deuxième cron (en fait,
> un at pour moi) est démarré par le premier juste après avoir lanc é curl
> (vlc pour moi), ce qui permet d'indiquer le PID du processus à tuer
> sans risque d'erreur.
> Il est ainsi tout à fait possible d'enregistrer plusieurs émissions
> simultanément (qui peuvent démarrer en même temps ou pas), avec à
> chaque fois l'heure d'arrêt que l'on veut.
>
> Donc tu pourrais remplacer les 5 lignes qui commencent à "vlc --open"
> par la commande "curl ..." que tu utilises déjà (sans oublier le
> final), et ça devrait fonctionner tel quel.
>
> Bonne nuit !

J'ai essayé de reproduite ton script, la départ fonctionne mais pas
l'arrêt! Le fichier filename contient bien le stream audio.
Le voici:

#!/bin/bash
FIN:28
DEBUT:26
FILENAME="/mnt/teste.mp3"
STOP='echo kill $! | at '$FIN
echo "curl --silent --retry 43 --retry-max-time 14 --connect-timeout 60
"http://radio.rim952.fr:8002/stream3.mp3" >> $FILENAME
eval $STOP >& /dev/null
" | at $DEBUT >& /dev/null

Je ne vois pas ou est l'erreur ?



Essaye :

#!/bin/bash
FIN:28
DEBUT:26
FILENAME="/mnt/teste.mp3"
STOP='echo kill $! | at '$FIN
echo "curl --silent --retry 43 --retry-max-time 14 --connect-timeout 60
"http://radio.rim952.fr:8002/stream3.mp3" >> $FILENAME &
eval $STOP >& /dev/null
" | at $DEBUT >& /dev/null

J'ai ajouté la protection des quotes à l'intérieur du echo "" (celles
qui entourent ton URL), un anti-slash qui "échappe" le retour-chariot
au milieu de ta commande, et un & pour que curl s'exécute en tâche de
fond.

Chez moi ça marche (TM).

Cordialement,

--
Philippe Naudin
Avatar
at
Philippe Naudin a présenté l'énoncé suivant :

Essaye :

#!/bin/bash
FIN:28
DEBUT:26
FILENAME="/mnt/teste.mp3"
STOP='echo kill $! | at '$FIN
echo "curl --silent --retry 43 --retry-max-time 14 --connect-timeout 60
"http://radio.rim952.fr:8002/stream3.mp3" >> $FILENAME &
eval $STOP >& /dev/null
" | at $DEBUT >& /dev/null

J'ai ajouté la protection des quotes à l'intérieur du echo "" (celles
qui entourent ton URL), un anti-slash qui "échappe" le retour-chariot
au milieu de ta commande, et un & pour que curl s'exécute en tâche de
fond.

Chez moi ça marche (TM).

Cordialement,



ça marche sans les quote, merci

#!/bin/bash
FIN:01
DEBUT:59
FILENAME="/mnt/teste.mp3"
STOP='echo pkill -f curl | at '$FIN
echo "curl --silent --retry 43 --retry-max-time 14 --connect-timeout 60
http://radio.rim952.fr:8002/stream3.mp3 >> $FILENAME

/dev/null &
eval $STOP >& /dev/null
" | at $DEBUT >& /dev/null
1 2