tmux no se activa cuando se coloca en rc.local

tmux no se activa cuando se coloca en rc.local

quiero empezar untmuxal arrancar en una raspberry pi - 2. Escribí un session.sharchivo y lo coloqué en ~/bin/un archivo que está en el directorio de inicio. Esto ~/bin/también está incluido en el $PATHy, por lo tanto, puede activarse.

El archivo Bash se ve así:

#!/bin/sh

mySession(){
     tmux new-session -d -s SessionName
     tmux new-window -d -n 'windowName' "~/bin/myPythonScript.py"
}
mySession

exit 0

He dadoejecuciónderechos sobre todos los scripts, incluido el script bash mencionado anteriormente, también utilizandochmod +x session.sh

En elrc.localMe refiero a activar este archivo de la siguiente manera:

#!/bin/sh
scriptSession(){
        echo "starting the tmux session"
        ~/bin/session.sh &
}

scriptSession
exit 0

Intenté reiniciar mi Pi muchas veces pero la sesión nunca se activa.

cuando lo ejecuto sudo tmux ls, simplemente muestraerror Connecting to Server

sin embargo cuando lo hago sudo /etc/rc.localo sudo ~/bin/session.shcomienza la sesión! No quiero que esto suceda porque quiero un inicio automático al arrancar, no una sesión activada por el usuario.

¿Alguna idea de cuál podría ser el problema?

Editar

También intenté recopilar un registro de fallas en un subshell bash usando lo siguiente en elrc.localarchivo:

(scriptSession)&>>/var/log/myLog.txt

pero cat /var/log/myLog.txtno aparece nada y el script sigue fallando

Respuesta1

La solución más optimizada para solucionar problemas de cualquier script separado usandotmuxrequerirá que utilice la siguiente opción dentro de su script de activación:

#!/bin/bash
# this script is called "sess"

tmux new-session -d -s sess1

# this statement is a life-saver for tmux detached sessions
tmux set-option -t sess1 remain-on-exit on

# In my case running the script in a new window worked
tmux new-window -d -n 'nameofWindow' -t sess1:1 'sudo /home/pi/bin/script.py'

exit 0

Ahora se llamó al siguiente script desde rc.localy se reinició el Pi. Finalmente, al reiniciar, cuando adjunta la sesión usando sudo tmux aOnce, obtiene una sesión tmux con2 ventanas

  1. La inicial es solo una sesión vacía activada debido atmux new-session -d -s sess1

  2. y el otro del tmux new-windowcomando que se puede abrir usando CTRL++ ya que fue mencionado como B(1sess1:1nota:Las teclas de acceso rápido pueden variar según el usuario, las teclas de acceso rápido tmux predeterminadas (teclas de enlace) son CTRL+ B)

Inferencia

Si el script termina con un error, la ventana le mostrará dónde estaba el error en mi caso, errores en mi script Python y en la parte inferior mostraráEl panel está muerto. Por lo tanto, debido a errores en el script, eltmuxSe salió de la sesión sin proporcionar ningún registro relevante (comentarios), por lo que no se registró ningún resultado en lo mencionado anteriormente./tmp/tmux.log

Por lo tanto, siempre se recomienda usar set-remain-on-exit oncuando se ejecutan scripts con tmux en caso de que haya fallas en el script en modo separado.

Respuesta2

Creo que rc.localel entorno durante el inicio no es rico. Si conoce alguna $PATHy $HOME(shell se expande ~a $HOME), no son sus variables (de usuario habitual); Creo que pueden estar desarmados. Además, el script heredará este entorno limitado.

Sin embargo, cuando lo hace sudo /etc/rc.localo sudo ~/bin/session.shel comando heredasuentorno y todas las obras.

Para solucionarlo, utilice la ruta completa en lugar de ~/. Utilice la ruta completa para tmuxtambién.

información relacionada