programa en linux

letman

el problema es que
crear un script que solicite el nombre de un proceso de forma, que si ese proceso se esta ejcutando se mostrara su PID correspondiente y se solicitara al usuario si desea matarlo ono. En caso afiramtivo se matara al proceso

el problema es que nose que comando es para saber el pid de el archivo que tu quieres cojer para luego preguntar si quieres matar

me han dicho que tengo qutilizar el awk o el perl apr apoder hacer el ejercicio y yo de esas dos aplicaciones no tengo ni idea...

haber si me podeis ayudar!

Josepanaero

Para saber el pid de un proceso usa "ps".

Por cierto, con "...saber el pid de el archivo que..." te refieres en realidad a "...saber el pid del proceso que..."

Con lo que he leído en lo que has escrito, tampoco me queda muy claro cómo tienes que hacer el script (en qué lenguaje), pero bueno, hacerlo en bash quizá no sea demasiado complicado.

Un saludo!

EDIT: Vale, no había leído bien, dices de hacerlo en awk o en perl... Pues yo no he usado ninguno de los dos lenguajes nunca, así que no te puedo ayudar con ninguno, pero sí que he hecho alguna práctica en bash para la universidad, y lo que tú dices no cuesta demasiado hacerlo... Más que nada porque puedes hacer fácilmente uso de los comandos del sistema, como el propio "ps", y la información que te devuelve puedes seleccionarla usando "cut" y comandos similares.

aNuBiS

A ver...Ahora mismo no estoy en linux y no te puedo decir...Pero seria algo asi como...

Pedir nombre
salida = ps -A | $nombre | awk $(La colulmna donde salga el PID) [nunca me acuerdo de como utilizar awk]

//Para saber si existe

if $salida > 1
Haz lo que sea
kill -1 $salida (por ejemplo?)

else
echo El proceso no existe

A grandes rasgos seria una cosa asi, ya te digo, los comandos y tal los tengo mas pez...Pero de todas formas si nadie te ayuda luego lo miro yo que no tengo nada que hacer (asco de estar malo).

[editado] Hecho, mas o menos.
El comando que te falta seria ps -A | grep $nombre | awk '{ print $1 }'

ps -A muestra todos los procesos
| es una tuberia
grep $nombre te saca SOLO las lineas donde este la var. nombre
awk te imprimiria solamente la columna 1, que es justo donde esta el pid.

Te recomiendo leer mucho sobre awk porque es jodido y lioso como el solo, pero hace maravillas.

Get

hay una manera mas rapida pa averiguar el pid.

pgrep

[get@tsys0101 (~)]$ pgrep firefox
23595
23629
[get@tsys0101 (~)]$

Matar el firefox
#! /bin/bash
read Programa
for X in $(pgrep $Programa);do kill -9 $X; logger "$USER has killed $Promama Pid $X":$X;done
exit

Usuarios habituales

  • Get
  • aNuBiS
  • Josepanaero
  • letman