Usando nohup en Linux para ejecutar comandos independientes de la cónsola

El comando nohup te permite ejecutar comandos el background y cerrar la consola, sin tener que esperar que se termine la ejecución de dicho comando.

Cuando ejecutamos un comando en la consola de Linux, la ejecución de dicho comando está atada a la vida del proceso de la consola mediante un enlace denominado hup, algo totalmente lógico pues como proceso, el terminal está lanzando otro proceso por lo que la vida de ambos está enlazada.

El problema (por llamarlo de alguna manera) viene cuando ejecutamos comandos que toman un tiempo considerable (como un backup) y no queremos (o no podemos) mantener la consola abierta. Me sucede cuando quiero ejecutar un respaldo en mi servidor VPS usando SSH e inmediatamente desconectarme para hacer otra cosa o simplemente descansar.

La solución viene con el comando nohup, que le dice al gestor de procesos de Linux que queremos que ambos procesos (la consola y el comando que vamos a ejecutar) tengan una vida útil por separado, por lo que podremos ejecutar el comando y desconectarnos (cerrar la consola) y el comando se seguirá ejecutando en el servidor. Lo suelo usar con frecuencia también cuando voy a dejar algo descargando en mi Raspberry Pi 3.

La sintaxis de nohup es sencilla

Sin embargo, podemos potenciar el comando mediante ciertos añadidos simples que veremos a continuación:

  • Si agregamos un ámpersand (&) al final del comando, le decimos que queremos que el comando se ejecute en background. Esto significa que correrá en segundo plano, con menor prioridad que un proceso en primer plano pero que aprovechará los recursos (CPU, RAM y Disco) que el sistema operativo le asigne cuando baje el consumo de recursos de los procesos en foreground (primer plano).

Podemos redireccionar la salida del comando a un archivo de la siguiente forma:

Así, cuando volvamos a conectarnos, veremos la salida de la ejecución del comando grabada en el archivo salida.txt, porque obviamente no veremos la salida en tiempo real, que es la razón por la que estamos usando nohup en primera instancia.

Y si el comando da error? Podemos redireccionarlo a otro archivo para consultarlo posteriormente

También podemos redireccionar los errores directamente a /dev/null si no nos interesa ver los errores que hubo ejecutando el comando, quedando todo así

No sabes qué es /dev/null? Wikipedia lo explica mejor que yo:

En sistemas operativos tipo Unix, */dev/null* o null device (‘periférico nulo’) es un archivo especial que descarta toda la información que se escribe o redirige en él. A su vez, no proporciona ningún dato a cualquier proceso que intente leer de él, devolviendo simplemente un EOF o fin de fichero.

Por último, podemos subir o bajar la prioridad del comando a ejecutar combinando nohup y el comando nice. Todo quedaría así

Donde 19 es la prioridad más baja que puedes asignarle al proceso. Estas prioridades van desde -20 (la prioridad más alta) a 19 (la prioridad más baja).

Referencia:
nohup
/dev/null
nice

Cómo colocar la Raspberry Pi 3 como servidor de descargas usando JDownloader

Con este tutorial podrás agregar descargas remotas a tu Raspberry Pi 3 usando el todopoderoso JDownloader.

Poco a poco he ido agregando diferentes usos a la Raspberry Pi 3 que me llegó hace algunas semanas. Algo que quería hacer desde hace tiempo era colocarlo como servidor de descargas usando JDownloader, una ultra conocida aplicación para automatizar la descarga desde diferentes servidores, incluyendo MEGA. También sirve para bajar videos o MP3 de Youtube y muchas otras funcionalidades. Esto evitará que para descargar algo tenga que dejar encendida mi PC toda la noche, con el gasto eléctrico que representa y el riesgo de que se dañe por variaciones (picos) en la energía eléctrica, algo que la mayoría de venezolanos conocemos bastante bien, por desgracia.

Con este tutorial básicamente instalaremos una versión sin capa gráfica, la cual manejaremos de forma remota vía web o usando una aplicación Android para agregar las descargas que se bajarán automáticamente en nuestra Raspberry Pi 3.

Paso 1: Actualizamos los repositorios

Paso 2 (Opcional): Actualizamos la Raspberry Pi

Paso 3: Instalamos Java 8

Por si tuviéramos varias versiones de Java, el siguiente comando nos permitirá escoger la versión por defecto. Escoje Java 8 si es el caso.

Paso 4: Instalamos JDownloader para Raspberry Pi 3

Estos son varios pasos en uno, te pedirá la clave root, excepto si usas una versión previa de Raspbian en la que el usuario por defecto (pi) es un usuario root.

Esto creará las carpetas de descarga, bajará JDownloader y reiniciará tu Raspberry Pi.

Paso 5: Nos registramos en MyJDownloader

MyJDownloader es la interfaz web remota que nos permitirá agregar descargas al Raspberry, incluso estando fuera de casa.

MyJDownloader

Paso 6 (Opcional): Descargamos la aplicación Android

Con esto podrás agregar descargas a tu servidor Raspberry desde tu celular.

Descargar MyJDownloader Remote Official

Paso 7: Agregamos el programa al inicio

Con esto, cada vez que se reinicie el Raspberry Pi, el programa arrancará automáticamente.

Ejecuta

Y agrega al final del archivo la siguiente línea

Si no conoces el editor, se llama nano y grabas con CTRL+O. Para salir, dale CTRL+X. Para aprender más de este editor, te recomiendo este Tutorial de Nano.

Paso 8: Ejecutas Jdownloader dentro de Screen

Screen es una app muy útil en Linux que te ayudará a ejecutar comandos en la consola sin necesidad de dejar la consola abierta (ejecutar programas en background no enlazados con la consola).

Y ejecutas -por fin- JDowloader con el siguiente comando:

Después de actualizar, te pedirá el usuario y la clave de MyJDownloader que creaste en el Paso 5 y permanecerá abierto. Si quieres puedes salirte de la pantalla y que el programa se siga ejecutando con CTRL+A y luego CRTL+D.

Paso 9: Listo, comienza a descargar!

Listo. Con eso ya puedes ir a MyJDownloader y con tu usuario y clave, agregar descargas remotamente.

Créditos: Este tutorial es una adaptación corregida y mejorada del tutorial de ForoRaspberry

 

Cómo saber qué distro de Linux estamos usando

Cuando me toca trabajar en un servidor Linux sin capa gráfica (como debe ser un servidor en producción), sucede que a veces no sé en qué distribución estoy trabajando (varía de un cliente a otro), lo cual es importante saberlo porque básicamente no es lo mismo un servidor con Debian o Ubuntu que uno con Red Hat o CentOS.
Si tuviera capa gráfica bastaría con echar un vistazo al escritorio para saber en qué distribución de Linux me encuentro, pero como no tiene, para saber qué distro estoy usando debo ejecutar en la consola el siguiente comando:
Lo cual nos da como salida
Este comando funciona independientemente de la distro que usemos, por lo cual lo prefiero por encima a otras alternativas para detectar la distro. Por ejemplo, al ejecutarlo sobre mi Raspberry Pi 3 obtengo lo siguiente:
Y listo, con eso ya sabemos tanto el sistema operativo que estamos usando como la versión del mismo, lo cual nos permitirá tomar decisiones en cuanto a los paquetes a instalar, configuraciones, repositorios y sobre todo, sistema de paquetes a usar (CentOS usa yum, Debian usa apt).

Probando la Raspberry Pi 3

Hace poco por fin me he decidido a pedir una Raspberry Pi 3 por lo que me he puesto a experimentar qué puedo hacer con este mini computador de $40.

Este microcomputador Raspberry Pi 3 tiene solo 1GB de RAM pero le he instalado Raspbian y va sorprendentemente rápido, más de lo que esperaba. Eso sí, no puedo abrir 300 pestañas como hago habitualmente en mi laptop pero para lo que la quiero, es suficiente.

Lo que deseo hacer es un servidor web para probar mis sitios (real, nada de emuladores) y a la vez colocarlo como servidor de descargas 24h (en Venezuela con la conexión tan pésima que tenemos, bajar contenido en la noche es vital), para desde allí poder usarlo desde otros dispositivos usando Plex. Quizás también lo coloque como servidor NAS con un disco duro externo pegado al Raspberry pero ya veremos si soporta tantas funciones.

Especificaciones Técnicas

  • SoC:Broadcom BCM2837 (CPU + GPU + DSP + SDRAM + Puerto USB)
  • CPU 1.2GHz 64-bit quad-core ARMv8
  • GPU Broadcom VideoCore IV
  • Memoria RAM 1 GB (compartidos con la GPU)
  • 4 x USB 2.0
  • 1 x Salida audio mini jack 3.5 mm
  • 1 x Salida audio/vídeo HDMI
  • 1 x Micro USB
  • Conectividad: Puerto 10/100 Ethernet (RJ-45) vía hub USB, Wifi 802.11n, Bluetooth 4.1
  • Slot para tarjeta micro SD donde se instala el sistema operativo y los programas.
  • Perifericos de bajo nivel: 17 x GPIO y un bus HAT ID
  • Alimentación: 5V/800 mA (4 W) vía micro USB
  • Dimensiones del dispositivo: 85.6 mm x 53.98 mm

Si tienes la oportunidad de hacerte con uno de estos dispositivos y eres curioso, no dudes en Comprar una Raspberry Pi 3. Nada más satisfactorio que experimentar con un dispositivo tan funcional, con un Linux completo y que cuesta tan poco dinero comparado con un computador tradicional.

Ah! casi olvido decir que he pedido también un par de controles clasicos de Super NES para jugar en la Raspberry, instalando Recalbox, de lo cual también haré el tutorial por acá.

Nos leemos!

Cómo acceder a tus pendrives desde la cónsola en Linux

Siempre es bueno aprender cómo usar tu pendrive desde el terminal de Linux.

Si estás usando un pendrive en Linux y necesitas acceder al mismo desde la cónsola, para por ejemplo, copiar o borrar archivos, primero necesitas saber cómo se denomina tu unidad USB dentro del subsistema de archivos en Linux. Para ello, basta con teclear el siguiente comando:

La salida, debe ser algo como lo siguiente:

En este caso, puedes ver que mi unidad USB se denomina sdb1 y puedes accederla entrando a la carpeta /media/jrojas/DISCOUSB

¿Fácil, no?

en Linux | 140 Palabras