Utilizo Ubuntu 16.04 y necesito la siguiente tmux
solución porque quiero ejecutar un proceso de tiempo de espera, sleep
ya que en mi caso particular no estaba satisfecho at
y encontré un error con nohup
(al combinar nohup-sleep
). Ahora, tmux
parece la mejor alternativa, ya que tiene su propio mecanismo de no colgar y en realidad funciona bien en el uso manual (hago la pregunta solo con respecto a la automatización del proceso que ya puedo hacer manualmente con él).
Lo que necesito:
Necesito una forma de hacer las siguientes 3 acciones, todo en una operación:
- Adjuntando una nueva
tmux
sesión. - Inyectando un conjunto de comandos listo para esa sesión, como
(sleep 30m ; rm -rf dir_name ; exit)
. Preferiría especialmente un conjunto de varias líneas, y no una fila larga. - La ejecución del comando anterior establece el momento en que se terminó de escribir como stdin en la nueva
tmux
sesión.
En otras palabras, quiero ejecutar un conjunto de códigos en otra tmux
sesión que se creó especialmente para esa causa, pero hacer todo en una operación.
Notas:
Mi objetivo es hacer todo desde mi sesión de trabajo original (la que trabajo la mayor parte del tiempo). En general, no tengo intención de visitar la sesión recién creada, solo quiero crearla con su código ejecutado automáticamente y listo.
Si es posible, preferiría una solución heredoc. Creo que es más eficiente.
fuente
1.
hay dos formas de hacerlo, una implica crear primero un script temporal (que contiene el código) y ejecutarlo con la creación y el segundo es un heredoc camino.2.
Si la segunda forma funciona (cuando cada fila de eco contiene cada fila de código del heredoc), ¿por qué deberíamos ver esto como un hack si es un código válido de Bash? ¿Tal vez porque las filas del heredoc se repiten y no se ejecutan regularmente en heredocs?/dev/shm
. También es un truco, ya que es más complicado, difícil de leer, entender y mantener que simplemente escribir el script en un archivo ordinario y comenzar con esotmux
.1.
pregunta) .tmux new-session -d -s "myTempSession" /opt/my_script.sh
, no abre un archivo temporal para que pueda pegar el código ... Lo que necesito es abrir el script directamente desde la sesión actual, o al menos algo para pasar a la nueva sesión y luego volver directamente al sesión actual. Por cierto, planeo dar recompensas por toda su ayuda, ya que es lo menos que puedo hacer para agradecerles y podría dar recompensas en 11 horas.Consulte también /server/339390/run-command-in-detached-tmux-session para ver ejemplos sobre el uso del comando send-keys en un panel separado.
fuente