quiero empezar untmuxal arrancar en una raspberry pi - 2. Escribí un session.sh
archivo y lo coloqué en ~/bin/
un archivo que está en el directorio de inicio. Esto ~/bin/
también está incluido en el $PATH
y, 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.local
o sudo ~/bin/session.sh
comienza 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.txt
no 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.local
y se reinició el Pi. Finalmente, al reiniciar, cuando adjunta la sesión usando sudo tmux a
Once, obtiene una sesión tmux con2 ventanas
La inicial es solo una sesión vacía activada debido a
tmux new-session -d -s sess1
y el otro del
tmux new-window
comando que se puede abrir usando CTRL++ ya que fue mencionado como B(1sess1:1
nota: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 on
cuando se ejecutan scripts con tmux en caso de que haya fallas en el script en modo separado.
Respuesta2
Creo que rc.local
el entorno durante el inicio no es rico. Si conoce alguna $PATH
y $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.local
o sudo ~/bin/session.sh
el comando heredasuentorno y todas las obras.
Para solucionarlo, utilice la ruta completa en lugar de ~/
. Utilice la ruta completa para tmux
también.