3ENGINE

Programación y otros cachivaches

Categoría: Tecnologia

Página 1/42

Tecnologia

Cómo instalar y gestionar servicios en Ubuntu


Ubuntu, como la mayoria de sistema operativos, tiene servicios (tambien llamados daemons) que se ejecuta en segundo plano y que el sistema operativo se encarga de iniciar automaticamente al arrancar. Te muestro cómo puedes crear, iniciar, detener y reiniciar un servicio de Ubuntu.

Listado de servicios en Ubuntu

El comando service te muestra la lista completa de servicios

Administrar un servicio Ubuntu

systemd es un conjunto de servicios de administración de sistema, y herramientas que permiten interactuar con el núcleo de sistema operativo. La orden mas usada para conocer y controlar es systemctl. A continuación muestro los comandos mas comunes.

Arrancar un servicio

sudo systemctl start <nombre_del_servicio>

Parar un servicio

sudo systemctl stop <nombre_del_servicio>

Reiniciar un servicio

sudo systemctl restart <nombre_del_servicio> 

Averiguar estado de un servicio

sudo systemctl status <nombre_del_servicio>

Crear un servicio en Ubuntu

Vamos a crear un servicio llamado helloworld. El primer paso es crear un fichero en /etc/systemd/system con extensión .service

cd /etc/systemd/system/
touch helloworld.service

Editamos el fichero

[Unit]
Description=Ejemplo
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=dmiro
ExecStart=/usr/bin/env python3 /path/to/sample.py

[Install]
WantedBy=multi-user.target

Si necesitas mas información, consulta la documentacion oficial de systemd

Y por último, registramos e iniciamos el servicio

systemctl enable helloworld.service
systemctl start helloworld.service



Tecnologia

Como habilitar SSH en Ubuntu 20.04


Definición de SSH

Secure Shell (SSH), es un protocolo de administración remota que permite a los usuarios controlar sus equipos remotamente a través de un mecanismo de autenticación.

Habilitar el servicio SSH en Ubuntu 20.04

Para habilitar SSH necesitamos ejecutar el siguiente comando:

sudo apt-get install ssh

Para verificar que se instalo y habilitó correctamente el servicio ejecuta el siguiente comando

systemctl status ssh.service

Ahora que tienes habilitado SSH en tu equipo, para conectarte remotamente usaremos el comando ssh. Te dejo alguna de las combinaciones mas comunes:

ssh hostname
ssh 192.168.1.10
ssh username@hostname
ssh username@192.168.1.10
ssh hostname -p 24

Otra opción es instalar un cliente SSH como por ejemplo mobaxterm

Extra: cambiar el puerto SSH que viene por defecto

Por defecto el puerto SSH es el puerto 22. Si necesitas cambiarlo, edita el fichero /etc/ssh/sshd_config




Tecnologia

Configurar acentos con teclado en Inglés en Ubuntu 20.02


Mi viejo portátil

Tengo un antiguo Lenovo Thinkpad X220 que adquirí de segunda mano hace unos años. Ahora he decido cambiarle el sistema operativo original a un Ubuntu 20.04 (Focal Fossa). Es un ordenador que tiene mas de 10 años, pero sigue siendo una maravilla y el cambio a Ubuntu le ha sentado fenomenal.

Lenovo ThinkPad X220

La única pega es que el teclado esta en inglés y es bastante molesto no poder insertar los acentos ni las letras como la ñ.

Como activar los acentos en un teclado inglés

Nos vamos a Configuracion > Region e idioma > Anadir fuente de entrada, seleccionamos Inglés (Estados Unidos) y añadimos la opción Inglés (EE.UU. internacional con teclas muertas)

Si tienes mas de una fuente de entrada, no olvides activar la nueva fuente de entrada Inglés (EE.UU. internacional con teclas muertas)

Ahora podrás colocar acentos y ñ en Ubuntu con las siguientes combinaciones de teclas

á  ==> AltGr + a
é  ==> AltGr + e
í  ==> AltGr + i
ó  ==> AltGr + o
ú  ==> AltGr + u
ü  ==> Mayusculas + ' + u
ñ  ==> AltGr + n



Tecnologia

Cómo imprimir una lista de forma más agradable en Python por línea de comandos


A menudo en Python necesitamos imprimir una lista por la línea de comandos. La manera mas habitual y sencilla es imprimir los elementos de la lista separados por comas. Por ejemplo:

Código

fruit_list = ['Albaricoque', 'Cereza', 'Ciruela', 'Higo', 'Kaki', 'Manzana', 'Melocoton', 'Nectarina',
              'Nispero', 'Pera', 'Uva', 'Aguacate', 'Carambola', 'Chirimoya', 'Coco', 'Datil', 'Fresa',
              'Fruta de la pasion', 'Kiwi', 'Litchi', 'Mango', 'Papaya', 'Platano', 'Grosella negra']

print ','.join(fruit_list)

Resultado

Aguacate, Albaricoque, Carambola, Cereza, Chirimoya, Ciruela,.....

Pero yo encuentro que no es muy legible para el usuario. Voy a dejar aquí una pequeña función que imprime por línea de comandos la lista formateada en columnas, ordenando los elementos alfabéticamente. A la función se le pasa por parámetro la lista (obvio) y el número de columnas que deseas. Como parámetro opcional (con un valor por defecto de 2) se puede indicar el espacio entre columnas. Para un ajuste óptimo, la función calcula el espacio que necesita para cada una de las columnas.

Código

def print_sorted_list(data, columns, gap=2):
    if data:
        gap = 2
        ljusts = {}
        for count, item in enumerate(sorted(data), 1):
            column = count % columns
            ljusts[column] = len(item) if (column not in ljusts) else max(ljusts[column], len(item))

        for count, item in enumerate(sorted(data), 1):
            print item.ljust(ljusts[count % columns] + gap),
            if (count % columns == 0) or (count == len(data)):
                print

Demo

fruit_list = ['Albaricoque', 'Cereza', 'Ciruela', 'Higo', 'Kaki', 'Manzana', 'Melocoton', 'Nectarina',
              'Nispero', 'Pera', 'Uva', 'Aguacate', 'Carambola', 'Chirimoya', 'Coco', 'Datil', 'Fresa',
              'Fruta de la pasion', 'Kiwi', 'Litchi', 'Mango', 'Papaya', 'Platano', 'Grosella negra']

print_sorted_list(fruit_list, columns=3)

Resultado

Aguacate             Albaricoque      Carambola
Cereza               Chirimoya        Ciruela
Coco                 Datil            Fresa
Fruta de la pasion   Grosella negra   Higo
Kaki                 Kiwi             Litchi
Mango                Manzana          Melocoton
Nectarina            Nispero          Papaya
Pera                 Platano          Uva

Saludos.