ruby bash shell tmux

Cómo escribir un script de shell que inicie la sesión tmux y luego ejecute un script ruby



bash (4)

El código actualizado de KM Rakibul Islam contiene un comando de desconexión innecesario al final que causa un mensaje de error "no se encontró ningún cliente" ( my_session ya se ha desconectado y, por lo tanto, no está dentro del alcance, por lo que tmux no puede entender qué sesión desea separar). El código correcto debe ser:

#!/bin/bash tmux new-session -d -s my_session ''ruby run.rb''

Quiero escribir un script de shell que hace esto:

  • Primero, crea una sesión tmux.
  • Segundo, ejecute un script de ruby ​​llamado "run.rb" DENTRO de la sesión tmux

En pseudo-código, lo que quiero hacer:

tmux new -s my_session ruby run.rb # NOTE: I want this to run inside the my_session tmux session. tmux detach

¿Cómo hago esto? (Más publicaciones que leo, más confuso se pone.)


Podrías usar teamocil para hacer esto fácilmente. Usted podría simplemente crear un archivo YAML:

windows: - name: rubysession root: ~ layout: tiled panes: - ruby run.rb; tmux detach

Si lo llamaste ''rubysession.yml'' entonces ejecuta:

teamocil rubysession

Y eso funcionaría perfectamente para su propósito y no requeriría piruetas. ¡Además, teamocil es increíble para muchos otros usos!


Si desea mantener viva su sesión de tmux después de iniciar algunos comandos, una posible solución es iniciar una fiesta con un archivo de inicio:

tmux new -d -s mysession "bash --init-file foo.script"

donde foo.script contendría sus comandos. Alternativamente, puede alimentar el comando al shell directamente desde la línea de comando:

tmux new -d -s mysession2 "bash --init-file <(echo ruby run.rb)"

Tenga en cuenta que --init-file fue diseñado para leer archivos de inicialización de todo el sistema como /etc/bash.bashrc, por lo que es posible que desee ''fuente'' estos en su script.


#!/bin/bash tmux new -s my_session ruby run.rb tmux detach

  1. Crea un archivo llamado my_script.sh y dale el contenido anterior.

  2. Haga el archivo ejecutable ejecutando:

    chmod 755 my_script.sh o chmod +x my_script.sh

  3. A continuación, ejecute el script de shell:

    ./my_script.sh

Haciendo el script shell ejecutable

Cuando ejecuta el comando chmod 755 filename , permite que todos lean y ejecuten el archivo, y el propietario del archivo también puede escribir en el archivo. Puede necesitar esto para Perl y otros scripts que deben ejecutarse a través de un servidor web. Si aplica 755 a un directorio, significa que todos pueden ir a él y obtener su lista de archivos.

Estos permisos generalmente se traducen en representación textual de rwxr-xr-x .

Alternativamente, puede usar chmod +x file_name en un archivo para hacerlo ejecutable.

Actualizar:

Para ejecutar el script ruby ​​dentro de la sesión tmux:

#!/bin/bash tmux new-session -d -s my_session ''ruby run.rb''