Como solucionar error: The root filesystem requires a manual fsck

Es posible que tras un reinicio en nuestro linux nos encontramos el error “The root filesystem requires a manual fsck” y no podemos arrancar nuestro sistema operativo, pues que no cunda el pánico que todo tiene solución.

Error fatídico

Solo necesitamos o desde la propia consola del initramfs o desde un livecd ejecutar el comando fsck (check and repair a Linux file system) sobre la partición fatídica.

fsck /dev/sdaParticionFallida

Contestaremos que si (yes) a todas las preguntas planteadas y ya tendremos recuperado nuestro sistema operativo linux.

fsck /dev/ubuntu–vg-ubuntu–lv

¿Como matar varios procesos a la vez en linux?

Posiblemente os ha sucedido en multitud de ocasiones, que intentáis matar un proceso en linux y os encontráis que aparece varias veces.

Y es bastante molesto ir uno a uno con kill -9 matandolos.

Pues con esta entrada os voy a explicar de matarlos todos con un simple comando.

En el ejemplo que voy a utilizar el escritorio se ha quedado tostado y quiero matar todos los procesos del navegador chromiun y para ello haré una búsqueda del proceso con ps + grep .

root@ubuntu:/# ps -aux | grep chrom |

root      2203 17.4  2.5 2633452 207796 ?      Sl   10:34   0:02 /snap/chromium/1967/usr/lib/chromium-browser/chrome --password-store=basic
root      2383  0.2  0.7 260184 58056 ?        S    10:34   0:00 /snap/chromium/1967/usr/lib/chromium-browser/chrome --type=zygote --no-zygote-sandbox --change-stack-guard-on-fork=enable
root            2384  0.1  0.7 260176 58252 ?        S    10:34   0:00 /snap/chromium/1967/usr/lib/chromium-browser/chrome --type=zygote --change-stack-guard-on-fork=enable
root      2386  0.0  0.1 260200 15344 ?        S    10:34   0:00 /snap/chromium/1967/usr/lib/chromium-browser/chrome --type=zygote --change-stack-guard-on-fork=enable
root      2559  0.0  0.3 483756 25968 ?        S    10:34   0:00 /snap/chromium/1967/usr/lib/chromium-browser/chrome --type=broker

A continuación con awk ‘{print $2}’ obtenemos el id de cada proceso.

root@ubuntu:/# ps -aux | grep chrom | awk '{print $2}'
864
2203
2383
2384
2386
2416
2420
2437
2458
2459
2559
2574
2651

Teniendo el listado de procesos solo nos queda matarlos todos a la vez y lo haremos con xargs kill -9

ps -aux | grep chrom | awk '{print $2}' | xargs kill -9

Y con este sencillo comando, podemos matar varios procesos a la vez en linux.

Guardar una cadena de varias lineas en un archivo en bash con EOF

Seguramente nos ha pasado en alguna ocasión que tenemos que copiar y pegar texto en linux y no sabemos como guardarlo en un fichero nuevo del tiron.

Para este cometido podemos utilizar EOF, que nos permite guardar todo el contenido que vayamos pegando por pantalla encosertado entre las cadenas EOF.
A continuación pongo un ejemplo de como pegando por pantalla las siguientes lineas creamos un scrips que una vez ejecutado nos indica la fecha (date) y el espacio libre en disco (df -h).
cat <<EOF > fecha-espacio.sh
#!/bin/bash
date
df -h
EOF
/bin/bash/ print.sh
Wed Nov 10 10:23:55 CET 2021
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             2.0G 1002M  887M  54% /


Como limpiar memoria cache, inodes y dentries

Habitualmente en linux, nos encontramos que alguna aplicación denamica no funciona correctamente y es debido que no libera memoria cacheada.

Voy a explicar como liberar memoria cache, inodes y dentries y asi poder resolver este angustioso problema.

Si queremos eliminar cache ejecutaremos:

sync; echo 1 > /proc/sys/vm/drop_caches

Si queremos eliminar inodes y dentries ejecutaremos:

sync; echo 2 > /proc/sys/vm/drop_caches

Si queremos elimiar cache, inodes y dentries ejecutaremos:

sync; echo 3 > /proc/sys/vm/drop_caches

Todo esto podemos incluirlo como tarea nocturna programada en el crontab y olvidarnos de este problema:

crontab -e

0 2 * * * sync; echo 3 > /proc/sys/vm/drop_caches

Cómo ajustar el uso de la memoria virtual (swap) en centos con Swappiness

Los sistemas somo muy de instalar todo por defecto y nunca miramos para estos problemas, pero se puede dar el caso de un mal ajuste de la memoria virtual (swap) y vernos en la necesidad de tener que ajustarla.

Voy a explicar como cambiar en un s.o centos.

Lo primero de todo vemos cual es el porcentaje actual utilizado:

cat /proc/sys/vm/swappiness
30

En el ejemplo vemos que esta configurado en el 30%, pongamos el caso de que nos parezca demasiado alto y lo queremos pasar al 10%.

La haremos con el siguiente comando.

sysctl vm.swappiness=10

Que nos gusta el compartimento y quremos dejar el cambio persistente, para que se utlice tras un reinicio, etc.

Pues editamos el fihero /etc/sysctl.conf y añadimos vm.swappiness=10 .

vi /etc/sysctl.conf

vm.swappiness=10

Y asi poco a poco podemos ir ajustando la memoria swap a nuestras necesidades.

Corregir error yum en centos 6: YumRepo Error: All mirror URLs are not using ftp, http[s] or file

El otro dia me propuse a instalar software con yum en mi viejo centos 6 y me di cuenta que no era posible, ya que me salia este error: YumRepo Error: All mirror URLs are not using ftp, http[s] or file

Investigando di con la noticia de que el ciclo de vida de centos 6 termino el 30 de noviembre de 2020, total que me vi con la necesidad de actualizar los repositorios de yum, para poder seguir instalando software.

Para corregir el erorr basta con seguir estos pasos:

Editamos el fichero /etc/yum.repos.d/CentOS-Base.repo y sustituimos los bloques:

vi /etc/yum.repos.d/CentOS-Base.repo

[base]
[updates]
[extras]

Por los bloques:

vi /etc/yum.repos.d/CentOS-Base.repo

[base]
name=CentOS-$releasever - Base
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=https://vault.centos.org/6.10/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

# released updates
[updates]
name=CentOS-$releasever - Updates
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=https://vault.centos.org/6.10/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

# additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=https://vault.centos.org/6.10/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

Realizamos un yum clean all y ya tendemos disponible el yum para instalar todo lo que necesitemos.

Editar y reinicar crontab vmware esxi

El otro dia estube cambiando el crontab en un esxi y me volvi loco porque no se ejecutaban las tareas, al final descubri que era debido a que despues de editar el crontab hay que reiniciar el servicio y no lo estaba haciendo.

Siendo tan sencillo como realizar los siguientes pasos:

Editamos el crontab:

vi /var/spool/cron/crontabs/root

Comprobamos el id del demonio / servicio crontab:

cat /var/run/crond.pid

Matamos el proceso:

/bin/kill $(cat /var/run/crond.pid)

Reiniciamos el servicio crontab (esxi 5.0 o menor)

/bin/busybox crond

Reiniciamos el servicio crontab (esxi 5.1en adelante)

/usr/lib/vmware/busybox/bin/busybox crond 

Comprobamos que el id del servicio crontab ha cambiado:

cat /var/run/crond.pid

Con estos sencillo pasos , podemos editar el crontab y actualizar el servicio asociado.

Configuración de un proxy inverso en Apache

Últimamente esas apareciendo numerosos servicios web que se ejecutan en puertos diferentes de los standar 80/443, grafana por el 3000, rpimonitor 8888, o el conocido del tomcat 8080.

Pues con esta entrada voy a explicar cómo hacer una redirección de puertos de una manera muy sencilla con el apache y los módulos proxy_module y proxy_http_module.

Editamos el fichero de configuración del apache y habilitamos los módulos, para sistemas centos / red-hat.

vi /etc/apache/conf/httpd.conf

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Para sistemas debian / ubuntu habilitamos con los comandos.

a2enmod proxy
a2enmod proxy_http

Y a continuación editamos el fichero del apache donde tengamos los host y configuramos el proxy para que apunta al puerto donde publiquemos la web (ej, grafana).

vi /etc/apache/conf/httpd.conf (centos / red-hat)
vi /etc/apache2/sites-enabled/000-default.conf (debian / ubuntu)

    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/

Reiniciamos el servidor apache y el grafana como en el ejemplo ya se publicara por el puerto 80.

Raspberry PI no arranca después de editar el fstab

Es sabido por todos que editar el fichero fstab conlleva su peligro ya que podemos dejar el sistema operativo inconsistente y no poder arrancarlo debidamente.

Y eso es lo que me paso intentando montar un recurso compartido en la raspberry PI obteniendo el siguiente error al arrancar el sistema operativo.

Cannot open access to console, the root account is locked.

Por suerte la raspberry PI ya viene preparada para estas posibles muñonadas y os voy a explicar cómo solucionarlo.

Montamos la tarjeta SD en otro equipo.

En el directorio boot editamos el fichero cmdline.txt añadiendo al final el arranque por línea de comandos.

init = /bin/bash

Volvemos a poner la SD en la raspberry PI y arrancamos obteniendo el control por línea de comandos.

Si Intentamos editar directamente el fichero /etc/fstab obtendremos el siguiente error:

mount: can't find PARTUUID=f2d3cb4f-02.

Y si intentamos montar la partición raíz “mount -o remount,rw /” no dará error de partición de solo lectura.

Lo que tendremos que hacer es montar parcialmente la partición que contiene el fichero /etc/fstab.

mount -o remount,rw /dev/mmcblk0p2 /

Ahora ya podremos editar el fichero /etc/fstab y devolverlo al estado anterior.

Ya solo nos faltara volver montar la SD para editar el fichero cmdline.txt y quitar el arranque por terminal.

Con estos sencillos pasos hemos recuperado la raspberry PI después de dejar un fstab inconsistente.

Deshabilitar el visual mode en vim

Los que llevéis tiempo usando linux, estamos familiarizados con el editor vim y sus magníficos atajos de teclado.

Seguramente habréis notado que en nuevas versiones de centos/debian cuando quieres pegar con el botón derecho del ratón no os lo permite y sale un horrendo mensaje que pone “visual mode”

El visual mode es una de las “mejoras” que se le puso al vim, pero para que los que seáis de la vieja escuela y no os gusten las moderneces, os voy a explicar cómo deshabilitarlo.

Creamos el fichero ~/.vimrc para el usuario en uso (si no existe) y añadimos set mouse-=a

Con el siguiente comando:

echo "set mouse-=a" >> ~/.vimrc

Con este sencillo comando desactivaremos el horrendo “visual mode” del vim, pudiendo realizarlo en cada uno de los usuarios que así lo deseemos.