Est-ce sur Linux?
Il y a en fait quelques versions légèrement différentes du nom de la commande qui sont utilisés par ps
, killall
, etc.
Les deux variantes principales sont: 1) le nom de la commande longue, qui est ce que vous obtenez lorsque vous exécutez ps u
; et 2) le nom de commande court, qui est ce que vous obtenez lorsque vous exécutez ps
sans aucun indicateur.
La plus grande différence se produit probablement si votre programme est un script shell ou tout ce qui nécessite un interprète, par exemple Python, Java, etc.
Voici un script vraiment trivial qui montre la différence. Je l'ai appelé mycat
:
#!/bin/sh
cat
Après l'avoir exécuté, voici les deux types différents de ps
.
Premièrement, sans u
:
$ ps -p 5290
PID TTY ... CMD
5290 pts/6 ... mycat
Deuxièmement, avec u
:
$ ps u 5290
USER PID ... COMMAND
mikel 5290 ... /bin/sh /home/mikel/bin/mycat
Notez comment commence la deuxième version /bin/sh
?
Maintenant, pour autant que je sache, killall
lit /proc/<pid>/stat
et saisit le deuxième mot entre les parens comme nom de commande, c'est donc vraiment ce que vous devez spécifier lorsque vous exécutez killall
. Logiquement, cela devrait être la même chose que ps
sans le u
drapeau, mais ce serait une bonne idée de vérifier.
A vérifier:
- que
cat /proc/<pid>/stat
dit le nom de la commande?
- que
ps -e | grep db2
dit le nom de la commande?
- faire
ps -e | grep db2
et ps au | grep db2
afficher le même nom de commande?
Remarques
Si vous utilisez également d'autres indicateurs ps, vous pouvez trouver plus simple à utiliser ps -o comm
pour voir le nom court et ps -o cmd
voir le nom long.
Vous pourriez également trouver pkill
une meilleure alternative. En particulier, pkill -f
essaie de faire correspondre le nom de commande complet, c'est-à-dire le nom de commande tel qu'imprimé par ps u
ou ps -o cmd
.