0% encontró este documento útil (0 votos)
0 vistas5 páginas

Shell Script

El documento describe el uso de shell scripts en sistemas Unix/Linux/macOS, incluyendo la creación, ejecución y manejo de variables, así como operaciones aritméticas y gestión de procesos. También se abordan comandos para controlar la ejecución de procesos, programar tareas, y realizar copias de archivos, además de cómo enviar señales para terminar procesos. Se enfatiza la importancia del PID para identificar procesos y la diferencia entre señales de terminación suaves y duras.

Cargado por

barbie.bourel30
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
0 vistas5 páginas

Shell Script

El documento describe el uso de shell scripts en sistemas Unix/Linux/macOS, incluyendo la creación, ejecución y manejo de variables, así como operaciones aritméticas y gestión de procesos. También se abordan comandos para controlar la ejecución de procesos, programar tareas, y realizar copias de archivos, además de cómo enviar señales para terminar procesos. Se enfatiza la importancia del PID para identificar procesos y la diferencia entre señales de terminación suaves y duras.

Cargado por

barbie.bourel30
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Shell script

martes, 26 de agosto de 2025 18:41

Es un archivo de texto plano (sin formato) que contiene comandos


que se ejecutan secuencialmente
Shell Script

Un shell script es un archivo de texto con comandos que se ejecutan en la terminal de


Unix/Linux/macOS.

• Para crear un script, normalmente usamos un editor de texto y guardamos el archivo con
extensión .sh.
• Debemos indicar al principio del archivo qué intérprete usar:

1. #!/bin/bash——- Esto indica que se usará Bash.

Ejemplo básico:

#!/bin/bash
echo "Hola, mundo"

• Para ejecutar el script:


chmod +x mi_script.sh # Esto le da permiso de ejecución
./mi_script.sh # Ejecuta el script

Variables y asignación

• Las variables se crean sin espacios alrededor del =.


• No hace falta declarar el tipo, Bash lo interpreta automáticamente como texto o número
según el contexto.

#!/bin/bash
nombre="Barbara" # Variable de texto
edad=25 # Variable numérica (entero)
echo "Hola, $nombre. Tienes $edad años."

Comando echo

• echo sirve para imprimir mensajes en la terminal:

echo "Esto es un mensaje"

• También puedes combinar texto y variables:


nombre="Barbara"
echo "Hola, $nombre"

• Si quieres evitar que echo haga un salto de línea:


echo -n "Escribe tu nombre: "

Comando read

• read permite leer la entrada del usuario y guardarla en una variable:

#!/bin/bash
• echo "¿Cuál es tu nombre?"
read nombre # El usuario escribe su nombre
echo "Hola, $nombre"

• Puedes combinar echo -n y read en una línea más compacta:

• #!/bin/bash
echo -n "Escribe tu edad: "
read edad
echo "Tu edad es $edad"
echo "Hola, $nombre"

• Puedes combinar echo -n y read en una línea más compacta:

• #!/bin/bash
echo -n "Escribe tu edad: "
read edad
echo "Tu edad es $edad"

Operaciones aritméticas con enteros

Bash no hace operaciones con + - * / directamente como en otros lenguajes, necesitas usar:

a) let:
#!/bin/bash
a=5
b=3
let c=a+b
echo "La suma es $c"

b) $(( )):
#!/bin/bash
a=10
b=4
suma=$((a + b))
resta=$((a - b))
multiplicacion=$((a * b))
division=$((a / b))
echo "Suma: $suma"
echo "Resta: $resta"
echo "Multiplicación: $multiplicacion"
echo "División: $division"

c) % operador módulo:
#!/bin/bash
a=10
b=3
mod=$((a % b))
echo "El resto de $a dividido $b es $mod"

Ejemplo completo

#!/bin/bash
# Script que pide dos números y hace operaciones
• echo -n "Ingresa el primer número: "
read num1
echo -n "Ingresa el segundo número: "
read num2
• suma=$((num1 + num2))
resta=$((num1 - num2))
multiplicacion=$((num1 * num2))
division=$((num1 / num2))
modulo=$((num1 % num2))
• echo "Suma: $suma"
echo "Resta: $resta"
echo "Multiplicación: $multiplicacion"
echo "División: $division"
echo "Módulo: $modulo"

• Guardas como [Link], le das permisos con chmod +x [Link] y lo ejecutas


con ./[Link].
• Te pedirá los números y mostrará los resultados.

Gestión de procesos y comandos en la terminal Linux

1. Ejecución y control de comandos

• Comando time: Permite medir el tiempo de ejecución de un comando. Se usa anteponiendo


time al comando deseado, y al final muestra estadísticas de consumo de tiempo. Es útil para
Gestión de procesos y comandos en la terminal Linux

1. Ejecución y control de comandos

• Comando time: Permite medir el tiempo de ejecución de un comando. Se usa anteponiendo


time al comando deseado, y al final muestra estadísticas de consumo de tiempo. Es útil para
cronometrar procesos.
○ Ejemplo de uso: time <comando>
• Ctrl + Z (Pausa): En la terminal, a diferencia de un entorno gráfico donde Ctrl + Z suele
deshacer, este comando pausa el proceso que se está ejecutando en primer plano.
○ Recuperación tras pausa: Al pausar un proceso con Ctrl + Z, el sistema nos devuelve el
prompt y un número que identifica el proceso (usualmente "1"). Este número es el
número de proceso (PID).
• Ctrl + C (Cancelar): Cancela el programa que está corriendo en primer plano. Si se ejecuta en
el prompt sin un programa en ejecución, no hace nada, aunque podría tener un efecto
colateral de guardar el historial de comandos en algunos servidores.
• Ejecución en segundo plano (&):
○ Al ejecutar un comando seguido de & (Ampersand), el proceso se ejecuta en segundo
plano. Esto permite seguir usando la terminal para otras tareas.
○ Relevancia: Es útil para programas "tranquilos" que demoran mucho y no requieren
interacción constante o mostrar información por pantalla. Por ejemplo, copiar muchos
archivos para un respaldo.
○ Limitación: No es posible pausar un programa que ya se está ejecutando en segundo
plano utilizando Ctrl + Z directamente, ya que la terminal no está en primer plano con
ese programa.
○ Ventaja: Evita la necesidad de abrir múltiples terminales para ejecutar tareas largas.
• FG (Foreground): Trae un proceso que está en segundo plano al primer plano para su
interacción.
○ Uso: fg <número_de_proceso> o fg %<número_de_proceso>. El % se puede omitir en
Linux, pero es parte del estándar POSIX.
• BG (Background): Reanuda un proceso pausado y lo envía a segundo plano.
○ Uso: bg <número_de_proceso> o bg %<número_de_proceso>.

2. Monitoreo de procesos
• jobs: Muestra los procesos que se están ejecutando en segundo plano o que están pausados
en la sesión actual.
○ Funcionalidad: Informa el estado de los procesos (por ejemplo, si uno acaba de terminar).
○ Persistencia: El sistema mantiene un proceso "terminado" visible por unos segundos en
jobs, lo que permite consultarlo antes de que desaparezca completamente.
• PS (Process Status): Muestra información sobre los procesos.
○ ps (básico): Muestra los procesos de la sesión actual del usuario actual. Usualmente
muestra el propio comando ps y bash (la shell).
○ ps -eF o ps -eA: Muestra información más detallada de los procesos, incluyendo
columnas como PID (identificador de proceso), PPID (identificador de proceso padre),
STAT (estado), USER (usuario), etc. El orden de las letras (e, F, A) puede variar, pero las
tres juntas (-eF o -eA) suelen mostrar una vista completa.
§ PID: Identificador único de un proceso. Es crucial porque los nombres de los
programas pueden repetirse, pero el PID no.
§ PPID: Identificador del proceso padre.
§ STAT: Muestra el estado del proceso (ver sección 3).
○ ps -u <usuario>: Filtra los procesos por un usuario específico.

3. Estados de los procesos (STAT)


La columna STAT en el comando ps puede mostrar diferentes letras que indican el estado de un
proceso:
• I (Idle): Hilo del kernel libre, no está haciendo nada.
• R (Running): El proceso está corriendo o está listo para correr (en la cola de ejecución).
• S (Sleeping): El proceso está durmiendo, esperando un evento para completarse.
• T: Detenido por una señal (por ejemplo, Ctrl + Z).
• Z (Zombie): Un proceso que terminó, pero su padre ya no existe o no ha recogido su estado.
Se queda ahí un ratito antes de desaparecer completamente.
• X (Dead): Un proceso muerto, no debería ser visto.
• Modificadores de prioridad:
○ < (Menor que): Alta prioridad.
○ N: Baja prioridad.

4. Programación de tareas y notificaciones


• crontab: Es un programa y un archivo que permite programar tareas para que se ejecuten
automáticamente en momentos específicos.
• X (Dead): Un proceso muerto, no debería ser visto.
• Modificadores de prioridad:
○ < (Menor que): Alta prioridad.
○ N: Baja prioridad.

4. Programación de tareas y notificaciones


• crontab: Es un programa y un archivo que permite programar tareas para que se ejecuten
automáticamente en momentos específicos.
• mail: Un comando que permite enviar correos electrónicos. Puede ser usado en scripts para
enviar notificaciones sobre el resultado de tareas programadas (por ejemplo, si un respaldo
falló).

5. Copia de archivos (CP) y control de salida


• cp -i o cp -v:
○ cp -i: Pregunta antes de sobrescribir archivos.
○ cp -v: Muestra lo que va haciendo (verboso).
○ Redirección a archivo: La salida de estos comandos, en lugar de mostrarse por pantalla,
puede redirigirse a un archivo (cp -v <origen> <destino> > log_copia.txt). Esto permite
monitorear el progreso del comando en segundo plano sin saturar la terminal.

6. Comandos de detención (kill)


• kill <PID>: Envía una señal a un proceso para que termine.
○ kill -15 <PID> (SIGTERM): Es la señal por defecto (si no se especifica un número). Pide
amablemente al proceso que termine.
○ kill -9 <PID> (SIGKILL): Mata el proceso violentamente. No permite que el proceso realice
una "limpieza" o cierre ordenado, lo que puede dejar archivos corruptos o segmentos de
memoria ocupados.
○ Recomendación: Siempre intentar kill -15 primero. Si el proceso no responde, entonces
usar kill -9.
○ Equivalencia con Ctrl + Z: kill -2 <PID> (SIGINT) es equivalente a presionar Ctrl + C
cuando el proceso está en primer plano.
• Identificación única de procesos: El PID (Process ID) es fundamental para identificar un proceso
de forma única, especialmente cuando se ejecutan múltiples instancias del mismo programa.
Matar un proceso por su nombre podría afectar a otras instancias no deseadas.

También podría gustarte