meta data de esta página
Diferencias
Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
linux:procesos [2010/03/11 13:24] – creado lc | linux:procesos [2023/01/18 14:10] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
- | En linux podemos parar un proceso mediante CTRL+z o bien pasarlo | + | {{tag> |
+ | ===== Procesos en Background ===== | ||
+ | Una de las grandes ventajas de linux es la ejecución de procesos en background. Por ejemplo si sabemos que la copia de un fichero puede llevar mucho tiempo y no queremos estar esperando | ||
- | con jobs podemos ver los proceso. | + | Si hemos lanzado un comando y lo queremos pasar a background presionamos CTRL+z, para parar el proceso |
- | poniendo al final el simbolo | + | Con el comando |
- | Por ejemplo | + | Supongamos que acabo de ejecutar el comando visudo para editar el fichero de permisos de sudo, pero en un momento dado quiero pasarlo a background pulsando CTRL+Z con lo cual vuelvo a la consola. Para volverlo a llamar me basta con poner fg y el número de proceso |
- | Supongamos que acabo de ejecutar el comando visudo para editar el fichero de permisos de sudo, pero en un momento dado quiero pasarlo a background pulsando CTRL+Z con lo cual vuelvo a la consola. Para volverlo a llamar me basta con poner fg | + | |
+ | ==== Lanzar procesos con nohup ==== | ||
+ | Esto es útil si queremos lanzar procesos que no se terminen al matar el shell padre. Un claro ejemplo del uso de nohup es cuando hacemos una conexión remota por ssh para lanzar un proceso y no queremos que el proceso se pare al desconectarnos. | ||
+ | < | ||
+ | |||
+ | Una buena practica sería redireccionar stdin, stdout y stderr, para: | ||
+ | - rastrear la salida de nuestro script en caso de producirse algún error | ||
+ | - evitar problemas al terminar nuestra sesión ssh | ||
+ | |||
+ | Por ejemplo: | ||
+ | < | ||
+ | ==== screen ==== | ||
+ | Si hemos lanzado algún proceso con nohup y & y en algún momento queremos volver a ver que está pasando, no podríamos . La única forma sería haber utilizado el comando **screen** | ||
+ | |||
+ | El proceso sería el siguiente: | ||
+ | * lanzamos el script que necesitamos como parámetro del comando screen. | ||
+ | < | ||
+ | * Presionamos | ||
+ | * Cuando queramos volver a conectarnos a nuestro proceso, lo primero es saber el identificador del screen | ||
+ | < | ||
+ | < | ||
+ | root@bananapi: | ||
+ | There are screens on: | ||
+ | 24274.pts-0.bananapi | ||
+ | 2 Sockets in / | ||
+ | </ | ||
+ | * Para reconectarnos al proceso usamos el parámetro -r y el identificador de la sesión. | ||
+ | < | ||
+ | |||
+ | === Opciones de screen === | ||
+ | | ctrl + a y después d|Para salir| | ||
+ | | Ctrl.+a | ||
+ | | Ctrl.+a n o [espacio]| se mueve hacia delante| | ||
+ | | Ctrl.+a p |se mueve hacia atrás| | ||
+ | |Ctrl.+a c |crea una nueva sesión| | ||
+ | |Ctrl.+a ? |ayuda| | ||
+ | |Ctrl.+a a |manda a un screen a lo que se está ejecutando| | ||
+ | |screen –ls |lista todos los screen abiertos| | ||
+ | |screen –x |si sólo hay uno abre ese. Si hay más de uno muetra una lista y entonces habría que hacer screen –x –r < |