Contenidos
Licencia del sistema operativo
Monotarea vs Multitarea
Hoy en día es complicado encontrar un sistema operativo comercial monotarea. No obstante, podemos simular lo que sería la ejecución de tareas en un sistema operativo monotarea con un interprete de comandos, tanto en Windows como en GNU/Linux.
Por ejemplo, en Windows si lanzamos un símbolo del sistema y queremos ejecutar los siguientes comandos: DIR /S C:\ y DIR tendremos que ejecutar uno y después el otro, esperando a que termine el primero para poder ejecutar el segundo.
Vamos a ejecutar DIR /S C:\
Cuando le demos a enter, en interprete de comandos se pondrá ejecutar el comando DIR que va a tardar un par de minutos. Si esto fuera un sistema operativo monotarea, no podríamos cambiar de ventana. Es más la ventana no existiría, tendríamos toda la pantalla con el interprete de comandos.
Hasta que no termine de ejecutarse el comando DIR /S C:\ no vamos a poder hacer nada, porque se está ejecutando una tarea y en interprete de comandos está actuando como si fuera un sistema operativo monotarea.
Cuando termine de ejecutar el comando, entonces podremos ejecutar otro. Esto sería similar a cómo funciona un sistema operativo monotarea.
Hasta que no ha terminado la primera tarea, en este caso el comando DIR /S C:\, no hemos podido ejecutar la segunda. Esto es un ejemplo de cómo funcionaría un sistema operativo monotarea.
Modo de explotación: Procesos por lotes
En los sistemas operativos monotarea hay que esperar a que termine una tarea o programa para ejecutar otra. Esto hace que, si queremos ejecutar varias tareas de forma secuencial tengamos que esperar a que termine la tarea anterior para poder ejecutar la siguiente. Así que el operador o usuario tendrá que esperar delante de la tearminal a que termine cada tarea para escribir y ejecutar la siguiente.
Al final esto lleva a que el operador pierda mucho tiempo esperando a que cada tarea termine para poder ejecutar la siguiente de la lista.
La solución a este problema vino de la mano de los procesos por lotes. Un proceso por lotes es una lista de tareas, comandos o programas, que se van a ejecutar en el mismo orden que en el que aparecen en el fichero que los contiene. De esta forma, en un fichero de texto plano el usuario escribe en orden las tareas que quiere ejecutar y después le pasa este fichero al interprete de comandos para que las ejecute.
Supongamos que queremos ejecutar las siguientes tareas en una terminal de Windows recién abierta (simulamos sistema operativo monotarea).
- DIR /S > listado.txt
- mkdir datos
- copy listado.txt datos\ficheros.txt
- type datos\ficheros.txt
Si tuvieramos que ejecutar cada una de estas tareas una detrás de la otra tendríamos que esperar a que terminara cada comando o tarea para poder ejecutar el siguiente, llevando un tiempo de espera entre tareas al operador o usuario.
Estos comandos han creado un fichero con el contenido del directorio actual y todos sus subdirectorios. El segundo comando ha creado un directorio llamado datos dentro del directorio actual, que es el perfíl del usuario actual (su directorio personal en WindowS).
Después, hemos copiado el fichero listado.txt dentro del directorio datos que acabamos de crear con el nombre ficheros.txt. Estamos usando rutas relativas, rutas que parten del directorio actual.
Por último, con el comando type, hemos mostrado en pantalla el contenido del fichero ficheros.txt que está dentro del directorio datos que está en el directorio actual.
Vamos a ver si eso ha funcionado en modo gráfico utilizando el explorador de Windows.
Podemos abrirlo haciendo doble clic sobre el fichero. Esto hará que Windows abra el fichero con la aplicación que tenga asociada a este tipo de ficheros con extensión txt: El bloc de notas.
Si queremos ejecutar de nuevo los cuatro comandos tendríamos que escribirlos de nuevo :O Podemos aprovechar una de las características de los Interpretes de comandos como es el histórico de comandos. Podemos pulsar los cursores arriba y abajo para movernos por los comandos que hemos ejecutado previamente.
No obstante, esto es un rollo. Porque si queremos ejecutar otra vez los mismos cuatro comandos tendríamos que movernos hacia arriba cuatro veces.
También podemos utilizar F7 en Windows para acceder a los comandos
Podriamos haber creado un proceso por lotes. De hecho, lo vamos a hacer. Para ello utilizaremos un editor de texto. En nuestro caso vamos a utilizar el editor de texto Notepad++ que tiene resaltado de sintáxis.
Lo primero que vamos a hacer es escribir la siguiente línea. Esta línea ejecuta el comando echo off, comando de Windows que desactivará el echo de los comandos que se ejecuten a continuación. La arroba que le hemos puesto delanto desactiva el echo para ese comando.
Ahora, para sacar partido del resaltado de sintaxis vamos a grabar el fichero como ejemplo.bat. De esta forma el programa notepad sabrá que el fichero es un proceso por lotes, gracias a la extensión .BAT.
Al guardarlo con esa extensión automáticamente el programa notepad++ nos mostrará con distintos colores los comandos de Windows que conozca.
Los comentarios son cadenas de texto con información útil para el administrador o usuario avanzado. Estas líneas no serán ejecutas por el interprete de comandos. El interprete de comandos las salta.
En los comentarios siempre vamos a añadir una breve descripción, el autor del script junto con una forma de contactar con él y la fecha en la que se creó.
Esto sirve para que en caso de problemas o necesidad de contactar con el creador sea posible así como conocer cuanto tiempo tiene el proceso por lotes o script.
Ahora añadimos en orden los comandos que queremos ejecutar.
Para que se guarden los cambios tenemos que guardar el fichero. Si no, lo que hay en memoria, dentro del Notepad++, no se corresponderá con lo que realmente hay en el fichero. Si nos fijamos la aplicación nos muestra como modificado y no guardado el fichero con un icono rojo en la pestaña de este fichero.
Si nos vamos a la terminal y mostramos el contenido actual del fichero ejemplo.bat no se corresponde con lo que está escrito en memoria de notepad. Esto es un error muy común: «no funciona!» «No hace lo que yo he escrito» – No está guardado en el fichero, estamos ejecutando una versión anterior. Por eso es importante guardar.
Para ejecutarlo tan solo tendremos que escribir la ruta del fichero que contiene el proceso por lotes.
En Windows los procesos por lotes deben tener extensión BAT o CMD para que se ejecuten.
Ejemplos de procesos por lotes
Otro ejemplo de proceso por lotes
Para consultar ayuda de comandos podemos utilizar el comando help.
Si queremos consultar ayuda de un comando utilizamos el comando help y le pasamos por parámetro el nombre del comando a consultar.
Dejar una respuesta