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_VARExercici 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.bgifg: 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 %1Exercici 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
historyExercici 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 -mServeis 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 sshExercici 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."
;;
esacResum
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
