shell-script – Ejecutar script en una pantalla

Pregunta:

Quiero ejecutar un script bash en una pantalla separada. El script llama a un programa varias veces, cada una de las cuales tarda demasiado en esperar. Mi primer pensamiento fue simplemente abrir una pantalla y luego llamar a la secuencia de comandos, pero parece que no puedo separar (con ctrl-a d ) mientras la secuencia de comandos se está ejecutando. Así que investigué un poco y encontré esta instrucción para reemplazar el shebang con lo siguiente:

#!/usr/bin/screen -d -m -S screenName /bin/bash

Pero eso tampoco funciona (las opciones no se reconocen). ¿Alguna sugerencia?

PD: Se me acaba de ocurrir que screen -dmS name ./script.sh probablemente funcionaría para mis propósitos, pero todavía tengo curiosidad sobre cómo incorporar esto en el script. Gracias.

Respuesta:

La línea shebang que ha visto puede funcionar en algunas variantes de Unix, pero no en Linux. Las líneas shebang de Linux son limitadas: solo puede tener una opción. La cadena completa -d -m -S screenName /bin/bash se pasa como una sola opción a screen , en lugar de pasar como palabras diferentes.

Si desea ejecutar una secuencia de comandos dentro de la pantalla y no perder el tiempo con varios archivos o citas, puede hacer que la secuencia de comandos sea una secuencia de comandos de shell que invoca la pantalla si no está ya dentro de la pantalla.

#!/bin/sh
if [ -z "$STY" ]; then exec screen -dm -S screenName /bin/bash "$0"; fi
do_stuff
more_stuff

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım