Crear, eliminar y escribir archivos automáticamente al iniciar en Ubuntu
Este tutorial muestra cómo crear, eliminar archivos/carpetas automáticamente y/o escribir parámetros en archivos de configuración al inicio en Ubuntu y otros Linux usando systemd.
Esto puede ser útil si alguna configuración no persiste y se restablece a los valores predeterminados en cada inicio, o si desea limpiar algo en cada inicio o después de cada período de tiempo.
Los usuarios avanzados pueden crear manualmente un script y ejecutarlo mediante una tarea programada crontab o un servicio systemd personalizado. Pero aquí te mostraré cómo hacer el truco usando tmpfile.d
, una configuración incorporada para la creación, eliminación y limpieza de archivos volátiles y temporales.
En Ubuntu, Debian, Fedora y muchas otras distribuciones de Linux, existen algunos servicios systemd diseñados para crear automáticamente archivos y directorios volátiles y realizar una limpieza diaria de directorios temporales. Incluyen:
- systemd-tmpfiles-setup.servicio
- systemd-tmpfiles-clean.timer
- systemd-tmpfiles-setup-dev.servicio
- systemd-tmpfiles-setup-dev-early.servicio
Para verificar si su sistema los tiene, ejecute systemctl status systemd-tmpfiles*
en una ventana de terminal:
- /etc/tmpfiles.d/ (recomendado)
- /run/tmpfiles.d/
- /usr/lib/tmpfiles.d/
- ~/.config/user-tmpfiles.d/ (no funciona en mi caso en Ubuntu 24.04)
- ~/.local/share/user-tmpfiles.d/ (no funciona en mi caso en Ubuntu 24.04)
Crear, eliminar archivos o carpetas automáticamente al iniciar
Para crear un archivo de configuración tmpfiles.d
personalizado, simplemente abra la terminal (Ctrl+Alt+T) y ejecute el comando:
sudo nano /etc/tmpfiles.d/test.conf
En el comando, reemplace test
con el nombre que desee. Crea y abre el archivo en el editor de texto nano de línea de comando.
Cuando se abra el archivo, agregue las siguientes líneas para las operaciones correspondientes. Después de editar, puede presionar Ctrl+S para guardar el archivo y luego Ctrl+X para salir.
Crear carpeta:
Para crear automáticamente una carpeta en cada arranque, por ejemplo, cree “myfolder
” en /etc
, agregue las siguientes líneas:
#Type Path Mode User Group Age Argument
d /etc/myfolder - - - - -
Aquí la primera línea, que comienza con “#”, es la línea de descripción que no funciona. En la segunda línea, dice:
- d: indica que se realice la operación de creación si la carpeta NO existe.
- /etc/myfolder: especifique la ruta del directorio a crear.
- “–” omite el uso predeterminado para Modo, Usuario, Grupo, Edad y Argumento.
De forma predeterminada, utiliza 0775
para el permiso de la carpeta (leer (4), escribir (2), ejecutar (1) para propietario y grupo (4+2+1=7), leer, ejecutar ( 4+1=5) para otros), root
para usuario y grupo.
Para elegir, puede especificar el permiso, la propiedad. Y establecer una "edad" hará que se limpie todo el contenido de esa carpeta después de cada período de tiempo determinado.
#Type Path Mode User Group Age Argument
d /home/ji/Documents/myfolder 0775 ji ji - -
d /home/ji/Documents/myfolder/test 0775 ji ji 10d -
El disparador del temporizador actúa cada 24 horas (excepto la primera acción, que ocurre 15 minutos después del inicio), por lo que es mejor configurar la edad en días.
Si la carpeta ya existe y desea eliminar todo su contenido al inicio (luego limpiarla en un período de tiempo determinado), utilice D en su lugar con el argumento --remove
.
#Type Path Mode User Group Age Argument
D /home/ji/Documents/myfolder/test 0775 ji ji 10d --remove
Crea un archivo:
Para crear automáticamente un archivo al inicio, utilice f o f+. Por ejemplo:
#Type Path Mode User Group Age Argument
d /etc/myfolder - - - - -
f /etc/myfolder/xxx.conf - - - - some text here\n
Agregue las líneas anteriores en un archivo .conf
en el directorio /etc/tmpfiles.d
; primero creará el directorio “/etc/myfolder
” si no existe, luego cree el archivo “xxx.conf
” en ese directorio y escriba “algo de texto aquí” si el archivo NO existe.
Aquí, \n es un salto de línea para crear una nueva línea. Por supuesto, puede omitir el argumento con '-' (sin comillas), por lo que intentará crear el archivo si no existe.
Si el archivo ya existe, entonces 'f' no hará nada. En ese caso, puede usar f+, que reemplazará el contenido del archivo original (si lo hay) con el nuevo. uno que estableces por argumento.
#Type Path Mode User Group Age Argument
d /etc/myfolder - - - - -
f+ /etc/myfolder/xxx.conf - - - - some text here\n
Escribir texto en archivo:
Para escribir texto automáticamente en un archivo, utilice w. Por ejemplo:
#Type Path Mode User Group Age Argument
w /home/ji/Documents/333 - - - - auto write line 1
Si el archivo NO existe, ¡no hace nada! Y w NO elimina el contenido del archivo original (si lo hay), sino que simplemente intenta sobrescribirlo desde el principio.
Es decir, si el contenido del archivo original es más largo que el contenido nuevo que desea escribir, se estropeará el contenido del archivo (consulte la captura de pantalla a continuación). En este caso, utilice f+ en lugar de w, lo que sobrescribirá todo el contenido anterior.
Para conservar el contenido original del archivo y escribir al final del archivo, utilice w+ en su lugar.
#Type Path Mode User Group Age Argument
w+ /home/ji/Documents/333 - - - - #This is a new line\n
w+ /home/ji/Documents/3* - - - - #write one more line\n
w+ /home/ji/Documents/33* - - - - enable=1
NOTA: w+ no comenzará una nueva línea si no hay un salto de línea al final. Entonces, puede agregar \n al comienzo del argumento para comenzar una nueva línea, y también agregarlo al final para la siguiente.
Además, puede escribir varios archivos utilizando un asterisco en el nombre del archivo. Por ejemplo, 3*
coincide con todos los archivos cuyo nombre comienza con 3. *.txt
coincide con todos los archivos .txt del directorio.
NOTA: Si utiliza “w” y “w+” para escribir el mismo archivo, ¡solo funcionará el primero! Si utiliza "f" y "f+" para crear el mismo archivo, solo funcionará el primero.
Eliminar archivos o carpetas
Para eliminar archivos automáticamente al iniciar, utilice r.
Por ejemplo, elimine todos los archivos .txt
, el archivo 123
, carpeta vacía, en la carpeta Documentos del usuario:
#Type Path Mode User Group Age Argument
r /home/ji/Documents/*.txt - - - - -
r /home/ji/Documents/123 - - - - -
r /home/ji/an-empty-folder - - - - -
Para eliminar la carpeta y todos los archivos y subcarpetas que contiene, utilice R en su lugar:
#Type Path Mode User Group Age Argument
R /home/ji/Documents/myfolder - - - - -
Además
La configuración tmpfiles.d
puede realizar aún más operaciones al inicio, como crear un enlace simbólico, copiar archivos o directorios, ¡y más! ¡Consulte la página de manual de freedesktop.org para obtener más detalles!