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
Crea un archivo llamado
my_script.sh
y dale el contenido anterior.Haga el archivo ejecutable ejecutando:
chmod 755 my_script.sh
ochmod +x my_script.sh
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''