En aquest tema, aprendrem com interactuar amb el sistema operatiu utilitzant scripts de Bash. Això inclou la gestió de processos, la manipulació de variables d'entorn, l'ús de comandes del sistema i la interacció amb serveis del sistema.
Conceptes Clau
- Variables d'Entorn: Variables que afecten el comportament dels processos en el sistema.
- Gestió de Processos: Comandes per iniciar, parar i gestionar processos.
- Comandes del Sistema: Comandes que permeten interactuar amb el sistema operatiu.
- Serveis del Sistema: Com interactuar amb serveis i dimonis del sistema.
Variables d'Entorn
Les variables d'entorn són variables que afecten el comportament dels processos en el sistema. Poden ser utilitzades per emmagatzemar informació com el directori de treball actual, el camí de cerca de comandes, i altres configuracions del sistema.
Exemples de Variables d'Entorn
# Mostra totes les variables d'entorn printenv # Mostra el valor d'una variable d'entorn específica echo $HOME # Estableix una nova variable d'entorn export MY_VAR="Hola, món!" # Utilitza la variable d'entorn echo $MY_VAR
Exercici Pràctic
- Crea un script que estableixi una variable d'entorn i la mostri per pantalla.
- Modifica el script per utilitzar la variable d'entorn en una comanda del sistema.
Solució:
#!/bin/bash # Estableix una variable d'entorn export MY_VAR="Hola, món!" # Mostra la variable d'entorn echo "El valor de MY_VAR és: $MY_VAR" # Utilitza la variable d'entorn en una comanda del sistema echo "El directori de treball actual és: $PWD"
Gestió de Processos
La gestió de processos és una part important de la interacció amb el sistema. Bash proporciona diverses comandes per gestionar processos.
Comandes de Gestió de Processos
ps
: Mostra una llista dels processos actuals.top
: Mostra una vista en temps real dels processos del sistema.kill
: Mata un procés específic.bg
ifg
: Gestiona processos en segon pla i en primer pla.
Exemples de Gestió de Processos
# Mostra una llista dels processos actuals ps aux # Mata un procés específic (substitueix PID pel PID del procés) kill PID # Envia un procés al segon pla sleep 100 & bg # Porta un procés del segon pla al primer pla fg %1
Exercici Pràctic
- Crea un script que iniciï un procés en segon pla i després el mati.
Solució:
#!/bin/bash # Inicia un procés en segon pla sleep 100 & PROCESS_ID=$! # Mostra el PID del procés echo "El PID del procés és: $PROCESS_ID" # Mata el procés kill $PROCESS_ID echo "El procés amb PID $PROCESS_ID ha estat matat."
Comandes del Sistema
Les comandes del sistema permeten interactuar directament amb el sistema operatiu. Això inclou comandes per gestionar fitxers, directoris, usuaris, i més.
Exemples de Comandes del Sistema
# Mostra l'espai lliure en disc df -h # Mostra l'ús de memòria free -m # Mostra informació del sistema uname -a # Mostra l'historial de comandes history
Exercici Pràctic
- Crea un script que mostri informació del sistema, incloent l'espai lliure en disc i l'ús de memòria.
Solució:
#!/bin/bash # Mostra informació del sistema echo "Informació del sistema:" uname -a # Mostra l'espai lliure en disc echo "Espai lliure en disc:" df -h # Mostra l'ús de memòria echo "Ús de memòria:" free -m
Serveis del Sistema
Els serveis del sistema són programes que s'executen en segon pla i proporcionen funcionalitats específiques. Bash permet interactuar amb aquests serveis utilitzant comandes com systemctl
i service
.
Exemples d'Interacció amb Serveis
# Mostra l'estat d'un servei systemctl status ssh # Inicia un servei sudo systemctl start ssh # Para un servei sudo systemctl stop ssh # Reinicia un servei sudo systemctl restart ssh
Exercici Pràctic
- Crea un script que mostri l'estat d'un servei específic i permeti a l'usuari iniciar, parar o reiniciar el servei.
Solució:
#!/bin/bash # Mostra l'estat del servei ssh echo "Estat del servei ssh:" systemctl status ssh # Pregunta a l'usuari què vol fer echo "Què vols fer amb el servei ssh? (start/stop/restart)" read ACTION # Executa l'acció seleccionada case $ACTION in start) sudo systemctl start ssh echo "El servei ssh ha estat iniciat." ;; stop) sudo systemctl stop ssh echo "El servei ssh ha estat parat." ;; restart) sudo systemctl restart ssh echo "El servei ssh ha estat reiniciat." ;; *) echo "Acció no vàlida." ;; esac
Resum
En aquesta secció, hem après com interactuar amb el sistema operatiu utilitzant scripts de Bash. Hem cobert les variables d'entorn, la gestió de processos, les comandes del sistema i la interacció amb serveis del sistema. Aquests conceptes són fonamentals per a la creació de scripts eficients i efectius en Bash. En el proper tema, explorarem com treballar amb xarxes utilitzant Bash.
Curs de Programació en Bash
Mòdul 1: Introducció a Bash
- Què és Bash?
- Configuració del teu Entorn
- Navegació Bàsica per la Línia de Comandes
- Entenent la Shell
Mòdul 2: Comandes Bàsiques de Bash
- Operacions amb Fitxers i Directoris
- Comandes de Processament de Text
- Permisos i Propietat de Fitxers
- Redirecció i Piping
Mòdul 3: Conceptes Bàsics de Scripting
Mòdul 4: Scripting Intermedi
Mòdul 5: Tècniques Avançades de Scripting
- Operacions Avançades amb Fitxers
- Gestió de Processos
- Gestió d'Errors i Depuració
- Expressions Regulars
Mòdul 6: Treballant amb Eines Externes
Mòdul 7: Automatització i Programació
- Treballs Cron
- Automatització de Tasques
- Scripts de Còpia de Seguretat i Restauració
- Monitorització i Registre
Mòdul 8: Millors Pràctiques i Optimització
- Escriure Codi Llegible
- Optimització de Scripts en Bash
- Consideracions de Seguretat
- Control de Versions amb Git