1 00:00:00,430 --> 00:00:16,969 Vamos a seguir con cómo podemos finalizar un proceso que ha empezado a ejecutarse, pero antes me queda comentaros un comando que nos puede resultar útil, sobre todo cuando estemos viendo script, y es el comando que se llama pgrep. 2 00:00:16,969 --> 00:00:27,949 Este comando pgrep lo que hace es utilizar una expresión regular y lo que hace es mostrar todos los ids de todos los procesos que se están ejecutando actualmente 3 00:00:27,949 --> 00:00:35,369 Que coincidan con dicha expresión regular que nosotros le pongamos en el pgrep 4 00:00:35,369 --> 00:00:37,490 Entonces lo vemos mejor con un ejemplo 5 00:00:37,490 --> 00:00:44,390 Imaginaros que nosotros, yo que sé, el XSize este ya que estamos utilizando 6 00:00:44,390 --> 00:00:49,369 Lo voy a ejecutar varias veces en segundo plano para que no moleste 7 00:00:49,369 --> 00:01:00,049 Y imaginaros que yo puedo decirle que quiero que me diga el PREP y yo le puedo decir aquí XSize 8 00:01:00,049 --> 00:01:07,390 ¿Qué es lo que me dice? Pues fijaros que lo que nos devuelve son los identificadores de todos los procesos que coinciden con XSize 9 00:01:07,390 --> 00:01:21,170 ¿Sí? Cuidado con poner, por ejemplo, xis porque te dice que no hay ninguno, a no ser que nosotros dentro de las opciones del pgrep le digamos que no quiero distinguir entre mayúsculas y minúsculas. 10 00:01:21,370 --> 00:01:30,510 Imaginaros que estamos en lo del grep, ¿vale? Me junta aquí el ps con el grep, juntan los dos comandos en uno, pero esto lo que hace es devolver los ids, ¿sí? 11 00:01:30,510 --> 00:01:41,069 Si en lugar de decirle que me devuelva uno en cada línea, yo le digo el "-d", y le digo, por ejemplo, que me lo separe con una coma, pues me devuelve separados con una coma. 12 00:01:41,269 --> 00:01:46,689 Entonces, este comando nos resulta muy útil, sobre todo cuando estemos en script. 13 00:01:47,310 --> 00:01:51,510 Otra de las opciones del comando pgrep es la opción, por ejemplo, "-n". 14 00:01:52,230 --> 00:01:57,510 ¿Qué es lo que hace el "-n"? Me devuelve el id del último comando que yo he ejecutado. 15 00:01:57,510 --> 00:02:07,109 Entonces, hay veces que ejecutáis un comando, queréis obtener su ID, pues con poner el pgrep-n obtenéis el ID correspondiente al comando. 16 00:02:08,729 --> 00:02:11,610 Otras opciones que podemos utilizar del comando pgrep. 17 00:02:11,610 --> 00:02:25,610 Nosotros le podemos decir, por ejemplo, que quiero que me muestre del usuario root 18 00:02:25,610 --> 00:02:30,409 Solo del usuario root 19 00:02:30,409 --> 00:02:33,990 Y quiero que me muestre, por ejemplo, los que son ssh 20 00:02:33,990 --> 00:02:40,569 Y me muestra el identificador del servidor ssh que se está ejecutando, que son el 16500 21 00:02:40,569 --> 00:02:55,550 ¿Sí? Entonces, repito, yo aquí le puedo decir por usuario, me está buscando del usuario root aquellos que son el SSH. Si yo le digo, por ejemplo, del alumno, pues obviamente me dice que el alumno no está ejecutando ningún proceso SSH. 22 00:02:55,550 --> 00:02:59,550 vale, que otras opciones 23 00:02:59,550 --> 00:03:02,729 nosotros vamos a poder utilizar dentro del pgrep 24 00:03:02,729 --> 00:03:03,689 que nos pueden ayudar 25 00:03:03,689 --> 00:03:07,889 antes le hemos dicho, voy a bajar aquí porque como tenemos los ojitos 26 00:03:07,889 --> 00:03:11,389 le voy a decir que quiero que me busque del pgrep 27 00:03:11,389 --> 00:03:13,590 y le hemos dicho el xsize 28 00:03:13,590 --> 00:03:17,830 si yo le digo que en lugar de que eso 29 00:03:17,830 --> 00:03:20,250 quiero saber cuánto se me están ejecutando, le digo 30 00:03:20,250 --> 00:03:23,569 guion c, esto para que? porque imaginaros 31 00:03:23,569 --> 00:03:25,610 que tenéis, yo que sé, instancias 32 00:03:25,610 --> 00:03:27,610 del Apache y tenéis que vigilar 33 00:03:27,610 --> 00:03:29,569 que no haya más instancias de las que vosotros 34 00:03:29,569 --> 00:03:31,629 debéis, entonces vosotros dentro de un script 35 00:03:31,629 --> 00:03:33,509 le podéis decir que si supera el número 36 00:03:33,509 --> 00:03:34,729 de tres, pues entonces 37 00:03:34,729 --> 00:03:37,710 monitorizáis y matáis 38 00:03:37,710 --> 00:03:39,590 aquellos que sobran o a saber 39 00:03:39,590 --> 00:03:41,550 ¿vale? entonces hay veces que os puede 40 00:03:41,550 --> 00:03:43,129 interesar cuánto están ejecutando 41 00:03:43,129 --> 00:03:43,930 pero 42 00:03:43,930 --> 00:03:47,250 quiero que veáis también que 43 00:03:47,250 --> 00:03:49,189 yo por ejemplo voy a 44 00:03:49,189 --> 00:03:51,069 ejecutar el gedit 45 00:03:51,069 --> 00:03:52,669 simplemente para que lo veáis 46 00:03:52,669 --> 00:03:58,580 me voy a ejecutar en segundo plano 47 00:03:58,580 --> 00:04:00,520 ¿sí? entonces se me ha abierto 48 00:04:00,520 --> 00:04:01,340 aquí el gedit 49 00:04:01,340 --> 00:04:04,280 entonces imaginaros que yo quiero 50 00:04:04,280 --> 00:04:06,280 buscar, porque el pgrep 51 00:04:06,280 --> 00:04:08,199 yo puedo poner una expresión regular 52 00:04:08,199 --> 00:04:10,419 entonces, si yo quiero poner 53 00:04:10,419 --> 00:04:11,719 una expresión regular 54 00:04:11,719 --> 00:04:14,340 si yo le digo 55 00:04:14,340 --> 00:04:15,879 el pgrep 56 00:04:15,879 --> 00:04:18,779 y por ejemplo 57 00:04:18,779 --> 00:04:20,480 pues yo que sé 58 00:04:20,480 --> 00:04:26,740 le digo 59 00:04:26,740 --> 00:04:32,310 que sea, que sea, que sea 60 00:04:32,310 --> 00:04:36,810 Bueno, si yo le digo ahora aquí un n simplemente para que lo veáis, pues me muestra el último que yo he ejecutado. 61 00:04:37,389 --> 00:04:51,949 Pero si yo le digo que me muestre todo lo que empieza por una x y asterisco, pues fijaros que me muestran todos los ids de todos los procesos que coinciden con el patrón de que empiezan por e y una x. 62 00:04:51,949 --> 00:04:56,730 si yo le digo x size tenemos ese si yo le digo 63 00:04:56,730 --> 00:05:01,050 g edit tengo ese pero yo le puedo decir 64 00:05:01,050 --> 00:05:04,490 oye quiero que me muestres por x o por e 65 00:05:04,490 --> 00:05:07,610 no por x o por g 66 00:05:07,610 --> 00:05:13,189 seguido de una e o una g 67 00:05:13,189 --> 00:05:17,069 y seguido de una 68 00:05:17,069 --> 00:05:20,889 y o una e y después 69 00:05:20,889 --> 00:05:47,110 cualquier cosa. Entonces fijaros que aquí me tiene que devolver estos tres, el 2, 2, 4, 1, 5, 4, 9, 4, 6 y el 2, 2, 8, es decir, estos cuatro de aquí coinciden que empiezan por x, coge, sigue una e, una g y le sigue una y, una e, es decir, yo aquí puedo poner expresiones regulares, ¿vale? Las que ponía con el grepo, aquí también las puedo poner, ¿de acuerdo? 70 00:05:47,110 --> 00:06:11,069 Entonces, hemos visto que podemos utilizar el guión i para que no me distinga entre mayúsculas y minúsculas, le hemos dicho que puedo decirle que me diga cuántos hay, le hemos dicho que le puedo decir que el delimitador, por ejemplo, es el espacio en blanco, y me pone el espacio en blanco, le puedo decir que nos muestre el id del proceso, ¿vale? 71 00:06:11,069 --> 00:06:17,610 si yo le digo guión L me muestra el nombre del proceso 72 00:06:17,610 --> 00:06:22,029 ¿qué más opciones le podemos decir? 73 00:06:29,639 --> 00:06:34,060 le puedo decir que solamente me muestres aquellos que son de un terminal 74 00:06:34,060 --> 00:06:37,399 por ejemplo si yo pongo aquí el PTS1 75 00:06:37,399 --> 00:06:40,060 yo soy el PTS1 76 00:06:40,600 --> 00:06:45,220 si yo le digo que me muestre todos los que son del terminal 77 00:06:45,220 --> 00:06:53,180 y le pongo guion t y le pongo el pts 1 pues solamente me muestran los que se están ejecutando 78 00:06:53,180 --> 00:07:00,720 en ese terminal correspondiente entonces aquí tenéis una opción a tener en cuenta a la hora 79 00:07:00,720 --> 00:07:07,420 de conseguir identificadores de proceso pero que junta el comando ps con el comando cre para obtener 80 00:07:07,420 --> 00:07:13,180 repito identificadores si hemos visto que le puedo decir el guión para obtener el usuario 81 00:07:13,180 --> 00:07:19,540 correspondiente le puede ser guión g para obtener el grupo correspondiente 82 00:07:19,540 --> 00:07:25,439 de acuerdo si queréis lo que esto ya simplemente ya son si queréis decirle 83 00:07:25,439 --> 00:07:32,339 por ejemplo los que no sean este pues esto es como el v decir te van a 84 00:07:32,339 --> 00:07:38,040 devolver los identificadores que no coinciden con ese patrón si vale pues 85 00:07:38,040 --> 00:07:43,300 viendo esto vamos a ver cómo podemos finalizar procesos entonces por ejemplo 86 00:07:43,300 --> 00:07:50,759 vamos a coger aquí y nosotros que sepáis que cuando se va a finalizar un proceso lo que se 87 00:07:50,759 --> 00:07:58,319 hace es enviar una señal a ese programa indicando dependiendo del tipo de señal indicando que lo que 88 00:07:58,319 --> 00:08:06,480 es lo que queremos que haga entonces las señales tienen un nombre o un número asignado los números 89 00:08:06,480 --> 00:08:11,639 de señal van a variar dependiendo de la plataforma de linux que nosotros tengamos vale pero los 90 00:08:11,639 --> 00:08:16,860 nombres y los significados suelen estar estandarizados vale entonces vamos a ver 91 00:08:16,860 --> 00:08:22,379 qué tipo de comandos o qué tipo de señales nosotros vamos a poder enviar a 92 00:08:22,379 --> 00:08:27,540 los diferentes procesos para decir que queremos terminarlos 93 00:08:27,540 --> 00:08:32,700 entonces este tipo de señales lo voy a mostrar directamente en lugar de poner 94 00:08:32,700 --> 00:08:37,919 las transparencias lo vamos a ver aquí si yo pongo kill guión l quiero que 95 00:08:37,919 --> 00:08:42,299 veáis que estas son todas las señales que tengo puesto en cada una de ellas es 96 00:08:42,299 --> 00:08:47,399 decir tengo el nombre de la señal y el número asignado a cada una de ellas sí 97 00:08:47,399 --> 00:08:51,519 entonces aquí solamente voy a comentar un par de ellas que son las que se 98 00:08:51,519 --> 00:09:01,120 suelen utilizar prácticamente siempre y estas señales son o esta de aquí 99 00:09:01,120 --> 00:09:05,720 o esta de aquí 100 00:09:05,720 --> 00:09:08,899 o a ver si la veo que no la encuentro 101 00:09:08,899 --> 00:09:12,000 o esta de aquí 102 00:09:12,000 --> 00:09:14,240 y las otras dos 103 00:09:14,240 --> 00:09:18,159 el SYNC CONTINUE 104 00:09:18,159 --> 00:09:20,559 y el SYNC STOP 105 00:09:20,559 --> 00:09:25,299 vale entonces vamos a ver esas que son las que más os pueden vosotros ayudar 106 00:09:25,299 --> 00:09:29,679 pero fijaros que tenemos hasta 64 tipos de señales diferentes que se le pueden 107 00:09:29,679 --> 00:09:30,519 mirar 108 00:09:30,519 --> 00:09:32,940 a los procesos 109 00:09:32,940 --> 00:09:47,110 Vamos a ver qué quiere decir cada una de ellas. Aquí sí que os voy a mostrar la transparencia. A ver si se ve. Sí, ok. 110 00:09:47,110 --> 00:09:52,250 Entonces quiero que veáis que o tenemos el número de señal 111 00:09:52,250 --> 00:09:55,710 Porque yo le puedo indicar la señal que le quiero enviar 112 00:09:55,710 --> 00:09:56,970 O se lo envío con el número 113 00:09:56,970 --> 00:10:00,009 O se lo envío en este caso con el nombre 114 00:10:00,009 --> 00:10:02,389 Aquí tenéis el nombre abreviado 115 00:10:02,389 --> 00:10:05,049 Pero si no queréis el nombre abreviado 116 00:10:05,049 --> 00:10:08,710 Lo que hacen es poner, por ejemplo, el SIG y el AP 117 00:10:08,710 --> 00:10:12,370 SIG, INT, SIG, QUIT, SIG, KILL, SIG, TEN 118 00:10:12,370 --> 00:10:12,909 ¿De acuerdo? 119 00:10:13,970 --> 00:10:15,750 ¿Qué es lo que hace cada uno de estos? 120 00:10:15,750 --> 00:10:30,169 Pues fijaros que el que nos van a interesar nosotros, voy a empezar por este, que es el valor por defecto. Es decir, cuando nosotros le decimos a un proceso que queremos terminarlo, por defecto se envía esta señal que se llama SIGTEN y tienen asignado el numerito 15. 121 00:10:30,169 --> 00:10:46,129 Y me dice, provoca la finalización del programa. Me dice, oye, a diferencia del syskill, que este es el 9, que es este de aquí, me dice, puede bloquearse, ignorarse y manipularse. 122 00:10:46,129 --> 00:10:52,450 dice es la manera correcta de solicitar la finalización de un programa me explico cuando 123 00:10:52,450 --> 00:10:58,429 yo le envío esta señal a un programa imaginaros que tiene un fichero abierto pues yo a ese programa 124 00:10:58,429 --> 00:11:02,570 le estoy diciendo oye cierra te entonces va a terminar de escribir las cosas del buffer que 125 00:11:02,570 --> 00:11:07,970 tenga en el disco duro y se va a terminar correctamente si el envío esta señal en cambio 126 00:11:07,970 --> 00:11:12,750 si yo le envío esta señal de aquí es como si yo hiciese un botonazo en el ordenador por decirlo 127 00:11:12,750 --> 00:11:20,070 alguna manera es decir es mata esa aplicación cierra la y puede que los datos que hay o con 128 00:11:20,070 --> 00:11:27,649 los que yo esté trabajando se queden de forma incorrecta entonces el menos 9 es la última 129 00:11:27,649 --> 00:11:34,070 opción que tendría es que intentar utilizar pero sí que es cierto que la gente se acostumbra mucho 130 00:11:34,070 --> 00:11:41,210 a utilizar siempre el six kill porque como sabe que eso lo mata sí o sí pero qué os puede pasar 131 00:11:41,210 --> 00:11:58,049 Pues esto es como cuando sacáis un pendrive y no lo extraéis de forma segura que se pueden crear los actos corruptos, pues aquí igual, es decir, el 15 haciendo una analogía con el USB, extraéis el USB de forma correcta y el guión 9 saquéis el USB al capón con todos los problemas que eso puede acarrear, ¿de acuerdo? 132 00:11:58,049 --> 00:12:24,549 ¿Sí? Y luego nosotros tenemos aquí el 18 y el 19. ¿Os acordáis cuando estuvimos viendo el control de los trabajos que teníamos, lo de poner en segundo plano, en pausado y cuando queríamos reanudar? Pues aquí tenemos las señales. Cuando yo le quería decir que el control Z, que lo quería suspender, ¿vale? O cuando yo lo quería reanudar, que poníamos en este caso el BG o el FG. 133 00:12:24,549 --> 00:12:41,789 Entonces son las señales que nosotros le podemos enviar. Pero tenéis hasta 64. Aquí tenéis algunas más conocidas, pero con que sepamos esta que tenemos aquí, repito que tenemos la 18, la 19, la 15 y la 9. 134 00:12:41,789 --> 00:12:48,850 ¿De acuerdo? Vale, pues vamos a ver cómo podemos nosotros matar un proceso. 135 00:12:49,590 --> 00:12:58,210 Ya hemos visto que nosotros podemos ver todas las señales con un comando que se llama kill. 136 00:12:58,409 --> 00:13:05,149 Pues ese comando es el que nosotros vamos a utilizar para matar, para terminar un proceso. 137 00:13:05,149 --> 00:13:18,029 tenéis que saber que los usuarios pueden finalizar sus propios procesos, obvio, pero si alguien quiere matar o quiere terminar un proceso que no es suyo 138 00:13:18,029 --> 00:13:28,330 ya necesito privilegios de administrador, pues vamos a ver cómo funciona el comando kill, yo al comando kill le puedo pasar o el numerito de la señal 139 00:13:28,330 --> 00:13:37,289 o el número 15, o le puedo pasar el nombre de la señal, es decir, el system, que es el valor por defecto, el número 15, recordar, ¿de acuerdo? 140 00:13:37,809 --> 00:13:43,129 ¿Y qué es lo que le tengo que pasar al comando kill? El identificador de proceso que quiero matar. 141 00:13:43,129 --> 00:14:08,149 Por ejemplo, si yo le digo aquí el pgrep y le digo xice, os recuerdo que si queréis ver en este caso cuáles son los p y d de los procesos, poníamos en este caso el guión l. 142 00:14:08,149 --> 00:14:13,409 Y tenemos ahí que efectivamente tenemos los procesos 143 00:14:13,409 --> 00:14:15,929 ¿Qué pasa si yo quiero matar un proceso? 144 00:14:17,129 --> 00:14:18,730 Pues yo puedo utilizar lo siguiente 145 00:14:18,730 --> 00:14:20,090 Quiero que lo veáis, ¿vale? 146 00:14:20,110 --> 00:14:22,289 Lo voy a poner así, lo voy a poner más chiquitito 147 00:14:22,289 --> 00:14:23,830 Porque quiero que veáis los tres ojos 148 00:14:23,830 --> 00:14:26,230 Yo por ejemplo voy a decirle 149 00:14:26,230 --> 00:14:27,669 Oye, sin poner nada, ¿eh? 150 00:14:27,669 --> 00:14:30,049 Le voy a poner kill y le voy a poner el primero 151 00:14:30,049 --> 00:14:31,490 Y quiero que veáis 152 00:14:31,490 --> 00:14:33,370 Qué es lo que pasa con el primer ojo 153 00:14:33,370 --> 00:14:34,690 Que lo he matado 154 00:14:34,690 --> 00:14:37,269 Que quiero matar, que yo le digo ya 155 00:14:37,269 --> 00:14:39,070 oye, otra vez quiero ver y tengo dos 156 00:14:39,070 --> 00:14:41,129 me dice que hay uno que ha sido terminado 157 00:14:41,129 --> 00:14:42,289 ¿vale? con el kill 158 00:14:42,289 --> 00:14:44,549 como yo no he puesto el número de señal 159 00:14:44,549 --> 00:14:46,850 por defecto me está mandando la señal 15 160 00:14:46,850 --> 00:14:48,289 la que se llama 610 161 00:14:48,289 --> 00:14:49,850 la que tenemos aquí arriba 162 00:14:49,850 --> 00:14:51,649 que estoy seleccionando 163 00:14:51,649 --> 00:14:54,149 con el ratón, esta de aquí 164 00:14:54,149 --> 00:14:55,009 ¿de acuerdo? 165 00:14:57,289 --> 00:14:58,470 si yo no pongo nada 166 00:14:58,470 --> 00:15:00,870 por defecto estoy mandando esa señal 167 00:15:00,870 --> 00:15:01,750 ¿sí? 168 00:15:02,789 --> 00:15:05,450 vale, ¿qué pasa si yo ahora hago lo siguiente? 169 00:15:05,690 --> 00:15:06,509 nosotros tenemos 170 00:15:06,509 --> 00:15:11,759 que se está ejecutando estos tres 171 00:15:11,759 --> 00:15:15,700 comandos. ¿Qué pasa si yo quiero 172 00:15:15,700 --> 00:15:19,779 decirles, por ejemplo, le decimos 173 00:15:19,779 --> 00:15:23,360 el pgrep y vamos a coger este segundo 174 00:15:23,360 --> 00:15:25,679 y le vamos a decir que lo quiero 175 00:15:25,679 --> 00:15:30,419 parar. Yo le puedo decir, oye, kill 176 00:15:30,419 --> 00:15:38,350 y le digo, lo quiero parar y le voy a decir 177 00:15:38,350 --> 00:15:39,529 Pues este de aquí 178 00:15:39,529 --> 00:15:42,870 Parece que no me ha hecho nada 179 00:15:42,870 --> 00:15:45,049 Si yo le digo ahora el jobs 180 00:15:45,049 --> 00:15:46,590 Quiero que veáis que ha hecho aquí 181 00:15:46,590 --> 00:15:47,509 ¿Lo veis? 182 00:15:48,190 --> 00:15:49,190 Me lo ha detenido 183 00:15:49,190 --> 00:15:51,590 ¿Veis donde estoy? 184 00:15:54,769 --> 00:15:55,070 Ahí 185 00:15:55,070 --> 00:16:00,480 Entonces veis que me lo ha detenido 186 00:16:00,480 --> 00:16:02,480 ¿Qué pasa si lo quiero volver a reanudar? 187 00:16:02,980 --> 00:16:06,080 Pues en lugar de decirle el seek stop 188 00:16:06,080 --> 00:16:07,299 Le voy a decir 189 00:16:07,299 --> 00:16:11,769 Que quiero continuarlo 190 00:16:11,769 --> 00:16:13,769 De forma que si yo le digo el jobs 191 00:16:13,769 --> 00:16:18,429 Pues ahora de nuevo, yo ya lo tengo ejecutándose. 192 00:16:19,470 --> 00:16:20,309 ¿De acuerdo? 193 00:16:22,009 --> 00:16:22,889 ¿Entendemos esto? 194 00:16:24,629 --> 00:16:27,850 Son las opciones que os podéis encontrar dentro del kill. 195 00:16:29,450 --> 00:16:32,769 Ahora, yo también puedo mandarle la señal correspondiente. 196 00:16:33,529 --> 00:16:37,269 Es decir, imaginaros que me voy a cargar el GEDIC que tengo aquí. 197 00:16:37,830 --> 00:16:41,429 Lo voy a poner aquí, en este lado. 198 00:16:41,429 --> 00:16:45,049 Imaginaros que a mí se me ocurra hacer esto 199 00:16:45,049 --> 00:16:46,210 En lugar de poner el nombre 200 00:16:46,210 --> 00:16:48,149 Porque repito, si yo no pongo nada 201 00:16:48,149 --> 00:16:49,769 Es como si estuviese mandando 202 00:16:49,769 --> 00:16:53,250 Esta señal, ¿vale? 203 00:16:53,429 --> 00:16:53,870 Esto 204 00:16:53,870 --> 00:16:58,169 Y esto es lo mismo 205 00:16:58,169 --> 00:17:00,309 ¿Sí? O le mando el número 206 00:17:00,309 --> 00:17:02,870 O le mando el nombre de la señal 207 00:17:02,870 --> 00:17:05,150 Pues imaginaros que yo hago esto 208 00:17:05,150 --> 00:17:05,910 Le hago el 9 209 00:17:05,910 --> 00:17:09,269 Y le voy a mandar, por ejemplo, el del gedit 210 00:17:09,269 --> 00:17:11,089 Que, espérate que no me lo sé cuál es 211 00:17:11,089 --> 00:17:17,589 Este de aquí 212 00:17:17,589 --> 00:17:20,049 Pues imaginaros que yo le digo kill 213 00:17:20,049 --> 00:17:21,390 Y le digo 9 214 00:17:21,390 --> 00:17:23,150 Y le voy a decir este de aquí 215 00:17:23,150 --> 00:17:26,650 ¿Sí? 216 00:17:27,390 --> 00:17:29,529 Es decir, me lo ha matado, ¿vale? 217 00:17:30,470 --> 00:17:32,690 Me ha intentado incluso matar el VAS, pero bueno 218 00:17:32,690 --> 00:17:35,609 Porque este de aquí de que le he dicho el heading 219 00:17:35,609 --> 00:17:37,369 Me ha cogido el padre, pero me da igual 220 00:17:37,369 --> 00:17:39,309 Pero me ha matado 221 00:17:39,309 --> 00:17:43,509 ¿Y qué pasa si yo tuviese ahí escrito 15.000 cosas? 222 00:17:43,509 --> 00:17:45,690 Pues yo hubiese perdido absolutamente todo 223 00:17:45,690 --> 00:17:53,349 En cambio, si yo hubiese hecho esto, se hubiese cerrado o se hubiese intentado cerrar correctamente. 224 00:17:53,710 --> 00:17:56,009 ¿Cuándo tenemos que utilizar el 9? 225 00:17:56,190 --> 00:18:00,250 Tenemos que utilizar el 9 cuando esta opción normal no nos funciona. 226 00:18:00,789 --> 00:18:06,430 Imaginaros que yo le digo aquí que quiero borrar o que quiero quitar el XSize y no me funciona. 227 00:18:06,849 --> 00:18:09,150 Entonces intentar en este caso con la opción 9. 228 00:18:10,029 --> 00:18:10,170 ¿Sí? 229 00:18:11,009 --> 00:18:11,609 Vale. 230 00:18:12,869 --> 00:18:15,490 Ya hemos visto las tres opciones. 231 00:18:15,690 --> 00:18:40,000 Repito que esto, cierro todos para que lo veáis y voy a borrar este de aquí. Ese me ha cerrado correctamente y esto es lo mismo. En lugar de este de aquí, vamos a decirle el que nos queda, que me parece que es este de aquí. 232 00:18:40,000 --> 00:18:47,279 me da igual que sea o por número o por nombre de la señal 233 00:18:47,279 --> 00:18:52,839 pues que sepáis que tenéis otro comando que es como el kill 234 00:18:52,839 --> 00:18:57,880 pero es de lo siguiente, imaginaros que yo tengo lo mismo 235 00:18:57,880 --> 00:19:09,740 tengo aquí 3 o 4, yo le digo que tengo aquí los correspondientes 236 00:19:09,740 --> 00:19:36,079 Yo le tengo aquí el pgrep xsize. Pues hay un comando que es kill all, que lo que hace es, yo le paso el nombre del proceso, le paso la señal que le quiero pasar, por ejemplo, le puedo pasar el 15 o le puedo pasar la señal que quiera, exactamente igual que el kill. 237 00:19:36,079 --> 00:19:44,759 Pero aquí lo que le voy a decir es, oye, XSize, y quiero que veáis que lo que hace, pues me ha terminado todo cuyo nombre coincide con ese de ahí. 238 00:19:44,980 --> 00:19:53,799 Entonces, si tenéis abiertos cinco pestañitas o cinco Firefox o Chrome o lo que pueda ser y lo queréis matar todo a la vez, pues aquí tenéis el comando KeyLol. 239 00:19:53,799 --> 00:19:58,259 si yo al comando 240 00:19:58,259 --> 00:20:04,279 si yo al comando 241 00:20:04,279 --> 00:20:05,720 kilol 242 00:20:05,720 --> 00:20:09,750 le digo menos L 243 00:20:09,750 --> 00:20:12,869 pues ahí son las señales que yo le puedo enviar 244 00:20:12,869 --> 00:20:14,769 esas son las versiones abreviadas 245 00:20:14,769 --> 00:20:15,529 sin el sig 246 00:20:15,529 --> 00:20:17,910 sig quit 247 00:20:17,910 --> 00:20:20,819 de acuerdo 248 00:20:20,819 --> 00:20:23,839 y si yo tengo lo mismo 249 00:20:23,839 --> 00:20:25,839 imaginaros que yo tengo 250 00:20:25,839 --> 00:20:27,420 pues esto de aquí 251 00:20:27,420 --> 00:20:29,740 con 3 me vale, yo tengo estos 3 252 00:20:29,740 --> 00:20:56,240 Entonces, si yo le digo que quiero matar todos los que son XIs, ¿qué es lo que hace el W? El W lo que hace es, si hay un proceso padre que ha ejecutado esos tres XIs, pues espera a que todos terminen para terminarse correctamente, ¿vale? Simplemente por curiosidad para que lo tengáis en cuenta. 253 00:20:56,240 --> 00:21:00,480 vale, lo que os he dicho 254 00:21:00,480 --> 00:21:02,279 siempre que podáis por favor 255 00:21:02,279 --> 00:21:04,599 utilizamos la señal por defecto 256 00:21:04,599 --> 00:21:06,259 que es el SYNC TERM 257 00:21:06,259 --> 00:21:07,819 que es la predeterminada 258 00:21:07,819 --> 00:21:10,640 porque si utilizamos el SYNC KILL 259 00:21:10,640 --> 00:21:12,160 SYNC KILL 260 00:21:12,160 --> 00:21:13,480 que es el menos 9 261 00:21:13,480 --> 00:21:16,859 no va a poder terminarse 262 00:21:16,859 --> 00:21:18,039 correctamente 263 00:21:18,039 --> 00:21:20,059 el programa, el proceso 264 00:21:20,059 --> 00:21:22,500 y lo que son las opciones por ejemplo 265 00:21:22,500 --> 00:21:24,599 de limpieza, de caché, etc 266 00:21:24,599 --> 00:21:35,539 Todo eso no se va a realizar. Entonces hay muchas posibilidades de que perdamos información del proceso en cuestión. Entonces solamente utilizarlo cuando sea estrictamente necesario. 267 00:21:35,539 --> 00:21:54,880 ¿De acuerdo? Hemos visto la opción el KeyLol y ahora simplemente para que veáis, imaginaros que nosotros tenemos esto de aquí y tenemos el gedit o la 1.txt. 268 00:21:54,880 --> 00:22:18,869 Vale, nosotros tenemos esto de aquí, ¿de acuerdo? Entonces nosotros tenemos aquí el PSJ para ver los procesos que tenemos nosotros de esto de aquí, ¿de acuerdo? Vale, ¿qué pasa si yo quiero matar todos con el kill all? 269 00:22:18,869 --> 00:22:23,650 El kill all yo le puedo pasar una expresión regular 270 00:22:23,650 --> 00:22:29,759 Si yo le digo kill all 271 00:22:29,759 --> 00:22:33,420 Yo le puedo decir, oye, pues quiero que empiecen 272 00:22:33,420 --> 00:22:39,259 Pues por ejemplo, para decirle que voy a utilizar una expresión regular 273 00:22:39,259 --> 00:22:40,779 Voy a utilizar guión R 274 00:22:40,779 --> 00:22:47,259 Y le voy a decir, por ejemplo, mira, va a empezar por 275 00:22:47,259 --> 00:22:51,240 la x 276 00:22:51,240 --> 00:22:53,700 o la g, igual que hemos hecho antes 277 00:22:53,700 --> 00:22:55,900 le sigue la e 278 00:22:55,900 --> 00:23:04,059 x size 279 00:23:04,059 --> 00:23:05,160 y el g edit 280 00:23:05,160 --> 00:23:09,720 le sigue una e y le sigue 281 00:23:09,720 --> 00:23:13,319 una i 282 00:23:13,319 --> 00:23:15,259 o una d 283 00:23:15,259 --> 00:23:17,180 ¿si? y luego 284 00:23:17,180 --> 00:23:18,079 cualquier cosa 285 00:23:18,079 --> 00:23:23,480 y le voy a decir 286 00:23:23,480 --> 00:23:26,039 guion i, ¿por qué le digo guion i? 287 00:23:26,680 --> 00:23:28,240 porque fijaros que el guion 288 00:23:28,240 --> 00:23:30,319 es interactivo, me pregunta 289 00:23:30,319 --> 00:23:32,240 vaya a ser que yo la cague y digo 290 00:23:32,240 --> 00:23:34,180 oye, ¿quieren matar este proceso? por defecto 291 00:23:34,180 --> 00:23:36,180 me pone que no, pero mira, este sí que 292 00:23:36,180 --> 00:23:38,160 es el x6, este sí que lo mato, este 293 00:23:38,160 --> 00:23:40,220 lo mato y el gedit también lo mato 294 00:23:40,220 --> 00:23:42,180 ¿vale? porque si no ponéis 295 00:23:42,180 --> 00:23:44,319 la i, hay a veces que no habéis probado 296 00:23:44,319 --> 00:23:45,900 la expresión regular, os va a dar 297 00:23:45,900 --> 00:23:48,160 procesos que no queréis matar y os lo va a matar 298 00:23:48,160 --> 00:23:50,319 entonces, el guión i, hay a veces 299 00:23:50,319 --> 00:23:52,299 que está muy interesante y siempre que queráis 300 00:23:52,299 --> 00:23:54,319 poner una expresión regular, ponéis 301 00:23:54,319 --> 00:23:55,059 el guión r 302 00:23:55,059 --> 00:23:57,740 y aquí igual que antes, si no queréis 303 00:23:57,740 --> 00:24:03,980 distinguir entre mayúsculas y minúsculas pues en este caso vamos a ponerla y mayúscula sí porque 304 00:24:03,980 --> 00:24:09,259 la y minúscula se utiliza para interactivo que queremos listar todas las señales ya hemos visto 305 00:24:09,259 --> 00:24:21,759 que tenemos la opción l perdonarme la opción l si quiero buscar exactamente algo es decir que 306 00:24:21,759 --> 00:24:28,319 se llame x hay exactamente así no que empiece ni que contenga sino si quiero que encuentre eso 307 00:24:28,319 --> 00:24:34,319 pongo guión y me busca exactamente lo que quiera buscar de acuerdo y si quiero coger y quiero 308 00:24:34,319 --> 00:24:40,140 decirle oye que pertenezca al usuario alumno pues ponemos el rayado y que sea oye mátame todos los 309 00:24:40,140 --> 00:24:48,759 x 6 del alumno usuario obviamente como no tengo ninguno si yo tuviese aquí un par de ellos con 310 00:24:48,759 --> 00:24:58,579 que tengo uno pues directamente terminado de acuerdo que más opciones nosotros podemos tener 311 00:24:59,259 --> 00:25:06,599 ¿Os acordáis que nosotros teníamos el pgrep para buscar los identificadores? 312 00:25:06,599 --> 00:25:10,220 Pues nosotros tenemos el mismo comando que pgrep, pero para matar. 313 00:25:10,339 --> 00:25:11,640 Es decir, tenemos el pkill. 314 00:25:12,400 --> 00:25:18,559 Entonces, el pkill va a ser como el killall, pero yo tengo que indicar los id de los procesos. 315 00:25:19,460 --> 00:25:22,880 Entonces, ¿qué le podemos decir en el pkill? 316 00:25:23,299 --> 00:25:27,319 Pues imaginaros que yo tengo cosas como esta. 317 00:25:30,849 --> 00:25:45,240 a ver me voy a conectar al usuario desde manera remota y me voy a conectar como 318 00:25:45,240 --> 00:25:58,599 fernando y aquí con el fernando voy a ejecutar por ejemplo pues un slip yo le 319 00:25:58,599 --> 00:26:13,009 digo oye slip y le digo 10 minutos 11 minutos 12 minutos y 13 minutos vale 320 00:26:13,009 --> 00:26:18,509 entonces si yo aquí, lo que pasa es que me voy a meter como root para que yo lo pueda hacer 321 00:26:18,509 --> 00:26:22,150 porque como es otro usuario necesito privilegio de administración 322 00:26:22,150 --> 00:26:31,680 e imaginaros que yo quiero decirle que quiero que me muestre en el pgrep todo lo que son de sleep 323 00:26:31,680 --> 00:26:40,160 y me muestra esos procesos, si yo le digo el guion l, pues me muestra eso de ahí, de acuerdo 324 00:26:40,160 --> 00:27:00,880 Yo tengo esos procesos que si yo pongo psfax, yo voy a tener por aquí lf, que así me muestra los usuarios, yo voy a tener aquí al usuario Fernando con estos identificadores, ¿de acuerdo? 325 00:27:00,880 --> 00:27:23,680 ¿Cómo puedo obtener estos identificadores? Pues hemos visto antes que yo puedo utilizar el comando pgrep para obtener esos identificadores y le digo, oye, quiero el pgrep, quiero los identificadores de proceso del usuario Fernando correspondiente a sleep y me da esos de ahí. 326 00:27:23,680 --> 00:27:28,599 Si quiero ver el nombre de los procesos, ya sabéis que tenemos que poner el guión L. 327 00:27:29,200 --> 00:27:32,440 ¿Qué pasa si yo quiero matar esos procesos directamente? 328 00:27:32,720 --> 00:27:37,279 Yo puedo utilizar P, kill, y lo que le voy a decir el P, kill, es decir, 329 00:27:37,339 --> 00:27:42,859 oye, quiero que me mates todos los procesos del usuario, Fernando, todos, ¿eh? 330 00:27:44,980 --> 00:27:47,259 Así me va a matar todos los procesos. 331 00:27:48,480 --> 00:27:52,279 ¿Sí? Si yo ahora le digo que me muestre, no me está mostrando nada. 332 00:27:52,279 --> 00:27:54,640 si yo me voy aquí, que ha pasado 333 00:27:54,640 --> 00:27:56,700 que me dice 334 00:27:56,700 --> 00:28:00,890 se me ha quedado bloqueado 335 00:28:00,890 --> 00:28:01,470 me ha echado 336 00:28:01,470 --> 00:28:04,769 si, entonces yo tendría que 337 00:28:04,769 --> 00:28:06,269 abrir otra vez la sesión 338 00:28:06,269 --> 00:28:14,400 y volverme a meter 339 00:28:14,400 --> 00:28:25,000 tenemos el 10 340 00:28:25,000 --> 00:28:27,579 el 11 y el 12 341 00:28:27,579 --> 00:28:28,779 de acuerdo 342 00:28:28,779 --> 00:28:30,680 entonces yo con el pkill 343 00:28:30,680 --> 00:28:33,299 puedo jugar y hacer lo mismo 344 00:28:33,299 --> 00:28:35,400 que hace con el kill, pero en este 345 00:28:35,400 --> 00:28:37,380 caso yo le puedo pasar varios 346 00:28:37,380 --> 00:28:44,660 procesos si a mí me da la gana separados por espacios si acaso lo hacéis de acuerdo 347 00:28:47,380 --> 00:28:55,079 no sé si me faltaba algo del pequeño vale perfecto entonces que podemos ver también del 348 00:28:55,079 --> 00:29:01,799 fijaros que estoy conectado estoy aquí y me dice que fernando está conectado del pts 0 lo veis 349 00:29:03,220 --> 00:29:08,460 pues yo también le puedo decir cosas como esta oye quiero que me mates los que están en el 350 00:29:08,460 --> 00:29:12,480 terminal y le cojo este y le digo oye quiero que todo lo que esté en ese 351 00:29:12,480 --> 00:29:23,400 terminal melo machaques si si yo me voy a directamente me ha cerrado vale me ha 352 00:29:23,400 --> 00:29:27,539 cerrado directamente la consola ahora tendría que abrir otra vez la consola 353 00:29:27,539 --> 00:29:33,000 entonces tendría que abrir otra de la consola porque yo le he hecho que todo 354 00:29:33,000 --> 00:29:37,079 lo que en ese terminal me lo cierre de acuerdo y tendría que abrir otra vez 355 00:29:37,079 --> 00:29:48,640 aquí el fernando entonces opciones que podéis jugar con el comando pekín 356 00:29:48,640 --> 00:29:54,519 este junto con el pekín se llevan de la mano vale se utiliza tanto uno con otro 357 00:29:54,519 --> 00:30:00,640 para utilizarlos dentro de él de los scripts que sepáis que el comando 358 00:30:00,640 --> 00:30:04,779 pekín yo no lo estoy pasando nada pero yo aquí le puedo pasar la señal y yo 359 00:30:04,779 --> 00:30:11,440 Aquí le puedo pasar, oye, SIDKILL, o le puedo pasar SIDTEN, o le pongo el numerito, ¿vale? 360 00:30:11,500 --> 00:30:14,099 Y le pongo aquí el guión 9 o el guión 15. 361 00:30:14,099 --> 00:30:22,000 Le puedo pasar o el nombre de la señal o le puedo pasar el numerito correspondiente a la señal que yo le quiera pasar. 362 00:30:22,839 --> 00:30:23,519 ¿De acuerdo? 363 00:30:25,299 --> 00:30:25,859 ¿Sí? 364 00:30:29,259 --> 00:30:32,019 Otra cosa que podemos hacer es la siguiente. 365 00:30:32,700 --> 00:30:33,819 Abro un terminal. 366 00:30:34,500 --> 00:30:36,920 Estoy abriendo el terminal como el usuario normal. 367 00:30:37,240 --> 00:30:58,519 Este es el usuario normal e imaginaros que yo hago aquí pues otra vez el sleep y le pongo aquí 15 minutos, uy perdón, que si no no puedo seguir escribiendo y 16 y 17 minutos, ¿vale? 368 00:30:58,519 --> 00:31:08,059 si yo estando como root por ejemplo le digo ps y le pongo aquí el fax por ejemplo si yo me voy 369 00:31:08,059 --> 00:31:27,619 aquí al usuario veis que lo tengo aquí sí entonces mi pregunta es si yo cojo este de aquí fijaros que 370 00:31:27,619 --> 00:31:37,240 El identificador del bus es 23036 y dentro del bus se está ejecutando 3 sleep, 15, 16 y 17. 371 00:31:38,059 --> 00:31:38,700 ¿Lo veis? 372 00:31:40,539 --> 00:31:45,440 Yo puedo coger en este caso y decirle lo siguiente. 373 00:31:46,859 --> 00:31:54,200 Quiero coger el 23036. 374 00:31:55,059 --> 00:31:56,259 Lo voy a copiar. 375 00:31:59,700 --> 00:32:07,599 Y yo le puedo decir pkill, le voy a decir la opción "-p", y le voy a decir el identificador. 376 00:32:08,539 --> 00:32:23,680 Si yo le doy, y le vuelvo a decir que quiero que me muestre, o por ejemplo, le voy a pasar el ps3, y le voy a decir "-p", y le digo aquí alumno. 377 00:32:24,400 --> 00:32:27,799 Lo que pasa es que aquí me va a mostrar un montonazo de cosas, y no quiero eso, pero bueno. 378 00:32:29,700 --> 00:32:52,730 Que aquí esté. Ahora no me gusta. Quiero que veáis por aquí que yo sigo teniendo el 23036, pero lo que hay dentro de me lo ha quitado. Repito, yo he ejecutado el 23036, pero no me ha matado el 23026. 379 00:32:52,730 --> 00:32:54,710 si yo ahora aquí le doy al intro 380 00:32:54,710 --> 00:32:56,529 me ha matado los tres hijos 381 00:32:56,529 --> 00:32:59,329 pero el terminal en sí no me lo ha matado 382 00:32:59,329 --> 00:33:01,170 entonces yo tendría que utilizar 383 00:33:01,170 --> 00:33:03,089 el comando kill para matar 384 00:33:03,089 --> 00:33:04,369 en concreto el bus 385 00:33:04,369 --> 00:33:07,230 porque con la opción guión p 386 00:33:07,230 --> 00:33:09,210 lo que le estoy diciendo es que 387 00:33:09,210 --> 00:33:10,730 todo lo que hay contenido dentro 388 00:33:10,730 --> 00:33:13,289 del padre directamente 389 00:33:13,289 --> 00:33:14,490 lo elimine 390 00:33:14,490 --> 00:33:16,230 ¿de acuerdo? 391 00:33:18,900 --> 00:33:19,180 mal 392 00:33:19,180 --> 00:33:22,359 y luego por último, y con esto ya 393 00:33:22,359 --> 00:33:23,400 terminamos esta parte 394 00:33:23,400 --> 00:33:25,799 tenemos el comando pido 395 00:33:25,799 --> 00:33:29,759 que es lo que hace este comando 396 00:33:29,759 --> 00:33:31,559 este comando busca el 397 00:33:31,559 --> 00:33:33,579 identificador de un programa que se está 398 00:33:33,579 --> 00:33:34,200 ejecutando 399 00:33:34,200 --> 00:33:36,400 me explico 400 00:33:36,400 --> 00:33:39,000 si nosotros tenemos aquí 401 00:33:39,000 --> 00:33:41,680 el x 402 00:33:41,680 --> 00:33:42,099 size 403 00:33:42,099 --> 00:33:45,539 si yo pongo el pido 404 00:33:45,539 --> 00:33:47,500 y le pongo aquí 405 00:33:47,500 --> 00:33:48,819 del x size 406 00:33:48,819 --> 00:33:51,359 me dice oye este es su 407 00:33:51,359 --> 00:33:52,140 identificador 408 00:33:52,140 --> 00:33:54,839 ¿lo veis? 409 00:33:55,539 --> 00:34:01,049 si yo tengo varios 410 00:34:01,049 --> 00:34:05,279 y le digo el p2 411 00:34:05,279 --> 00:34:06,700 pues me muestra a todos 412 00:34:06,700 --> 00:34:13,010 si yo solamente quiero que me retorne 413 00:34:13,010 --> 00:34:15,309 en este caso el último 414 00:34:15,309 --> 00:34:16,489 le pongo el guión s 415 00:34:16,489 --> 00:34:20,789 entonces si vosotros queréis la última instancia del Firefox 416 00:34:20,789 --> 00:34:24,030 para coger el id y para matar solamente la última instancia 417 00:34:24,030 --> 00:34:26,070 porque pensáis que es la que se me ha quedado bloqueada 418 00:34:26,070 --> 00:34:28,050 o que me ha permitido esto, pues tirándome ya 419 00:34:28,050 --> 00:34:32,829 entonces aquí ya podemos eliminar como nos dé la gana 420 00:34:32,829 --> 00:34:35,090 el kill all y le decimos 421 00:34:35,090 --> 00:34:38,469 xice 422 00:34:38,469 --> 00:34:41,510 ¿de acuerdo? 423 00:34:42,929 --> 00:34:45,989 entonces simplemente a modo de resumen 424 00:34:45,989 --> 00:34:51,050 para que veamos aquí las opciones que nosotros tenemos 425 00:34:51,050 --> 00:34:53,510 os recuerdo 426 00:34:53,510 --> 00:34:59,460 ¿dónde lo tengo? aquí 427 00:34:59,460 --> 00:35:06,769 para las opciones que hemos visto 428 00:35:06,769 --> 00:35:12,239 hemos visto el comando, a ver si puedo escribir 429 00:35:12,239 --> 00:35:13,760 a ver, sí 430 00:35:13,760 --> 00:35:19,449 el pgrep 431 00:35:19,449 --> 00:35:23,289 que me devuelve los identificadores de procesos 432 00:35:23,289 --> 00:35:26,349 de la expresión regular que coincida con la expresión regular 433 00:35:26,349 --> 00:35:28,449 y luego para matar los procesos 434 00:35:28,449 --> 00:35:31,349 hemos visto varios comandos 435 00:35:31,349 --> 00:35:34,730 uno de ellos, el más conocido obviamente 436 00:35:34,730 --> 00:35:36,789 es el kill 437 00:35:36,789 --> 00:35:41,880 que le digo aquí la señal 438 00:35:41,880 --> 00:35:45,500 y el PID del proceso que quiero eliminar 439 00:35:45,500 --> 00:35:47,880 también tenemos el KILL ALL 440 00:35:47,880 --> 00:35:52,739 que yo le puedo poner aquí una expresión regular 441 00:35:52,739 --> 00:35:56,280 y me va a matar todos, pasándole también la señal si quiero 442 00:35:56,280 --> 00:35:57,840 ¿de acuerdo? 443 00:35:58,659 --> 00:36:00,460 tengo el PKILL 444 00:36:00,460 --> 00:36:05,599 que este y este van relacionados 445 00:36:05,599 --> 00:36:07,480 ¿de acuerdo? 446 00:36:07,480 --> 00:36:33,119 Y teníamos también, que no sé si me queda alguno, el último, que era el PIDOFF, que se me había olvidado, que me devuelve el identificador del programa que yo le indique que se esté ejecutando. 447 00:36:33,119 --> 00:36:53,699 Entonces, estos tres de aquí son los que se utilizan para terminar un proceso o terminar o enviarle una señal. La señal correspondiente que hemos visto, la 9, la 15, el stop y el continue, que son las que a mí por ahora me interesa que sepáis. 448 00:36:53,699 --> 00:37:12,000 ¿De acuerdo? Entonces ya podemos ejecutar procesos, sabemos gestionarlos, sabemos ver su información y sabemos matarlos. ¿Qué nos queda ver? Pues nos queda ver cómo podemos gestionar la monitorización de dichos procesos. Pues eso es lo que vamos a ver en el siguiente vídeo. Venga, un saludo.