¿Está esto en Linux?
En realidad, hay algunas versiones ligeramente diferentes del nombre del comando que son utilizados por ps
, killall
, etc.
Las dos variantes principales son: 1) el nombre de comando largo, que es lo que obtienes cuando corres ps u
; y 2) el nombre corto del comando, que es lo que obtienes cuando corres ps
sin ningún indicador.
Probablemente la mayor diferencia ocurre si su programa es un script de shell o cualquier cosa que requiera un intérprete, por ejemplo, Python, Java, etc.
Aquí hay un script realmente trivial que demuestra la diferencia. Lo llamé mycat
:
#!/bin/sh
cat
Después de ejecutarlo, aquí están los dos tipos diferentes de ps
.
Primero, sin u
:
$ ps -p 5290
PID TTY ... CMD
5290 pts/6 ... mycat
En segundo lugar, con u
:
$ ps u 5290
USER PID ... COMMAND
mikel 5290 ... /bin/sh /home/mikel/bin/mycat
¿Observa cómo comienza la segunda versión /bin/sh
?
Ahora, por lo que puedo decir, en killall
realidad lee /proc/<pid>/stat
y toma la segunda palabra entre los parens como el nombre del comando, así que eso es realmente lo que necesitas especificar cuando corres killall
. Lógicamente, eso debería ser lo mismo que dice ps
la u
bandera, pero sería una buena idea verificarlo.
Cosas para verificar:
- ¿Qué
cat /proc/<pid>/stat
dice el nombre del comando?
- ¿Qué
ps -e | grep db2
dice el nombre del comando?
- hacer
ps -e | grep db2
y ps au | grep db2
mostrar el mismo nombre de comando?
Notas
Si también está utilizando otros indicadores ps, puede que le resulte más fácil de usar ps -o comm
para ver el nombre corto y ps -o cmd
el nombre largo.
También puede encontrar pkill
una mejor alternativa. En particular, pkill -f
intenta hacer coincidir usando el nombre completo del comando, es decir, el nombre del comando tal como se imprime con ps u
o ps -o cmd
.