¿Qué significa el |
símbolo al sudo ps -ef | grep processname
mando?
También, ¿alguien puede explicar este comando? He usado este comando solo para obtener el PID y matar ese proceso, pero también vi sudo ps -ef | grep processname | grep -v grep
y tengo la impresión de que -v grep
es como matar el PID generado anteriormente grep
. Si es así, ¿cómo funciona?
command-line
bash
process
Aamir
fuente
fuente
sudo
correrps -ef
. También un truco común para evitar el tercer comando es encerrar un carácter del nombre del proceso entre corchetes:ps -ef | grep [p]rocessname
ps -ef | grep '[p]rocessname'
grep [p]rocessname
, le está diciendo al shell que busque un archivo en el directorio actual con el nombreprocessname
y sustituya el patrón con el nombre de ese archivo. Si noprocessname
existe un archivo con nombre , el shell puede pasar el patrón literalmente a grep. Pero eso depende de su configuración. Por lo que su versión se romperá si un archivo llamadoprocessname
existe o si alguna de las siguientes opciones de shell ha sido habilitadofailglob
,nullglob
,nocaseglob
.Respuestas:
Primero se ejecuta
sudo ps -ef
y pasa la salida al segundo comando.El segundo comando filtra todas las líneas que contienen la palabra "nombre de proceso".
ps -ef | grep processname | grep -v grep
enumera todas las líneas que contienenprocessname
y no contienengrep
.De acuerdo a
man grep
De acuerdo a
man ps
Puede combinar parámetros
-ef
significa lo mismo que-e -f
.En realidad,
ps -ef | grep processname
enumere todas las ocurrencias del proceso llamadoprocessname
.fuente
ps -ef
hace exactamente ??| grep processName
en la terminal también obtenemos salida de grep, que en sí mismo es un proceso, así que -v mata esta salidaSe llama
pipe
. Da la salida del primer comando como la entrada al segundo comando.En su caso significa:
El resultado de
sudo ps -ef
se alimenta como la entrada degrep processname
sudo ps -ef
:Esto enumera todos los procesos en ejecución. Escriba
man ps
el término para más.grep processname
Entonces, esta lista de procesos se alimenta a grep que solo busca el programa definido por
programname
.Ejemplo
Escribiendo
sudo ps -ef | grep firefox
en mi terminal vuelve:fuente
-v grep
funciona ..grep -v
se usa. Para filtrar la última línea.grep -v
filtra las líneas de salida que contienen el patrón.Voy a tratar de responder esto con una respuesta práctica directa:
¡La pipa
|
te permite hacer cosas increíbles en el caparazón! Es el único operador que considero el más útil y poderoso.¿Qué tal contar archivos en un directorio? sencillo:
ls | wc -l
.. redireccionar la salida dels
unwc
parámetro ingenioso-l
para líneaso el recuento de líneas en un archivo?
¿Qué pasa si quiero buscar algo? 'grep' puede buscar ocurrencias de cadenas:
simplemente redirige la salida del comando a la izquierda de la tubería al comando a la derecha de la tubería.
un nivel más: ¿con qué frecuencia ocurre algo en un archivo?
puedes usar el | por casi todo :)
fuente
grep -c "aRandomStringYouWantToSearchFor" "someFile"
;-)kill $(ps aux | awk '/someString/ { print $2}' | sed -n '1p')
no, porque no serviría para nada.Otras respuestas ya han respondido a su pregunta principal, pero me gustaría abordar esto también;
En general, matar un proceso a menudo es una exageración y deja los recursos asignados por un proceso en un estado desordenado, a menudo puede terminarlo ;
Además de esto, solo use
pkill
para matar / terminar un proceso.pkill
admite especificar un nombre de proceso exacto o una expresión regular:fuente
kill -9
menos que sepa específicamente que ninguna otra señal funcionará. Véase también iki.fi/era/unix/award.html#killkill
hace. La especificación-9
es una opción adicional adicional y con mayor frecuencia desastrosa.kill
, simple y llanamente. Dejando a un lado cualquier terminología, su respuesta no debería aconsejar a las personas que usen la-9
opción a menos que pongan una advertencia carnosa.