Veo que $ display está configurado como localhost: 0,0 si estoy ejecutando un servidor vnc esto puede no ser correcto, ¿hay alguna manera de establecer automáticamente en mi script de inicio de sesión?
Respuesta
usas Bash? Vaya al archivo .bashrc en su directorio de inicio y establezca la variable, luego expórtela.
DISPLAY = localhost: 0.0; export DISPLAY
puede usar/etc/bashrc si desea hacerlo para todos los usuarios.
También puede que desee ver en ~/.bash_profile y/etc/profile
EDIT:
function get_xserver()
{
case $TERM in
xterm)
XSERVER=$(who am i | awk '{print $NF}' | tr -d ')''(')
XSERVER=${XSERVER%%:*}
;;
aterm | rxvt)
;;
esac
}
if [ -z ${DISPLAY:=""} ]; then
get_xserver
if [[ -z ${XSERVER} || ${XSERVER} == $(hostname) || \
${XSERVER} == "unix" ]]; then
DISPLAY=":0.0" # Display on local host.
else
DISPLAY=${XSERVER}:0.0 # Display on remote host.
fi
fi
export DISPLAY
si pongo esto en mi bashrc no funcionará con vncserver porque crea otras pantallas como localhost: 1.0, etc. entonces necesito una solución un poco más genérica. –
Usted tendrá que indicar a su cliente VNC para exportar el $ correcta visualización una vez que haya iniciado sesión. Cómo lo hará probablemente dependerá de su cliente de vnc.
que supongo que aquí, sobre la base de los problemas que he tenido en el pasado, que me ha solucionado:
- se conecta a un servidor VNC en la máquina B, que muestran que el uso de un cliente VNC en máquina A
- está iniciando una consola (xterm o equivalente) en la máquina B y usando eso para conectar a la máquina C
- desea iniciar una aplicación basada en X en la máquina C, mostrándola al servidor VNC en la máquina B, para que pueda verlo en la máquina A.
Terminé con dos soluciones. Mi solución original se basaba en el uso de rsh. Desde entonces, la mayoría de nuestros servidores han tenido instalado ssh, lo que ha hecho esto más fácil.
Utilizando rsh, armé una tabla de máquinas vs SO frente a opciones personalizadas que guiarían este proceso en perl. Bourne shell no era suficiente, y no tenemos bash en máquinas Sun o HP (y no tenía bash en AIX en ese momento - AIX 5L aún no había salido). El shell Korn tampoco era una gran opción, ya que la mayoría de nuestros cuadros de Linux no tienen instalado pdksh. Pero, si no enfrenta estas limitaciones, puede implementar la idea en ksh o bash, creo.
De todos modos, básicamente ejecutaría 'rsh $ machine -l $ user "$ cmd"' donde $ machine, por supuesto, era la máquina en la que estaba iniciando sesión, $ user, similarmente obvio (aunque cuando iba como "raíz" esto tenía alguna variación ya que tenemos raíces múltiples en algunas máquinas por razones que no entiendo completamente), y $ cmd era básicamente "DISPLAY = $ DISPLAY xterm", aunque si estuviera ejecutando konsole, por ejemplo, $ cmd sería "konsole --display = $ DISPLAY". Como $ DISPLAY se estaba evaluando localmente (donde está configurado correctamente) y no se pasa literalmente a través de rsh, la pantalla siempre se configuraría correctamente.
También tuve que asegurarme de que nadie hiciera nada tonto como reiniciar la pantalla si ya estaba configurada.
Ahora, solo uso ssh, me aseguro de que X11Forwarding esté configurado como yes en el servidor (sshd_config), y luego puedo enviar sshd a la máquina, dejar que los comandos X atraviesen el cable cifrado, y siempre vuelve al lugar correcto.
Su vncserver tiene un archivo de configuración que establece el número de pantalla. Para hacerlo automáticamente, una solución es analizar este archivo, extraer el número y configurarlo correctamente.Un simple (mejor) es tener este número de visualización establecido en un script de configuración y usarlo tanto en su configuración de servidor VNC como en sus scripts de inicio.
Aquí hay algo que acabo de hacer. Inspecciona el entorno del último proceso "sesión-gnome" lanzado (DISPLAY se configura correctamente cuando VNC inicia un administrador de sesión/ventana). Reemplace "gnome-session" con el nombre de cualquier proceso que su servidor VNC inicie al inicio.
PID=`pgrep -n -u $USER gnome-session`
if [ -n "$PID" ]; then
export DISPLAY=`awk 'BEGIN{FS="="; RS="\0"} $1=="DISPLAY" {print $2; exit}' /proc/$PID/environ`
echo "DISPLAY set to $DISPLAY"
else
echo "Could not set DISPLAY"
fi
unset PID
Debería solo poder colocar eso en su archivo .bashrc.
iniciar sesión, cambiar de usuario e iniciar sesión en otra cuenta, volver a la primera cuenta y "última sesión gnome iniciada" ya no es la más activa. – Dima
@Dima Buen punto. Modifiqué mi respuesta para, al menos, restringir los procesos al usuario actual. – Nick
Tuve que cambiar tu línea awk a: 'export DISPLAY = $ (cat/proc/$ PID/environ | cadenas | awk 'BEGIN {FS =" = ";} $ 1 ==" DISPLAY "{print $ 2; exit} ') ' Luego funcionó. – isaaclw
- 1. ¿Cómo configuro modprobe para encontrar mi módulo?
- 2. Javascript: cómo configuro la variable 'this' para una función
- 3. ¿cómo configuro la configuración regional predeterminada para mi JVM?
- 4. ¿Cómo configuro Eclipse para ejecutar sus pruebas automáticamente?
- 5. ¿Cómo configuro la página predeterminada de mi aplicación en IIS7?
- 6. ¿Cómo configuro la fecha actual en un DatePicker?
- 7. Uso de la variable de sesión en mi vista
- 8. ¿Cómo configuro un attr_accessor para una variable de instancia dinámica?
- 9. "Sin variable X11 DISPLAY" - ¿qué significa?
- 10. ¿Cómo configuro mi terminal Linux X para que Emacs tenga acceso a 256 colores?
- 11. ¿Cómo configuro una variable "ENV" en EmberJS?
- 12. ¿Cómo configuro la caducidad de cookies en "sesión" en C#?
- 13. ¿Cómo configuro una variable de compilación condicional?
- 14. ¿Cómo configuro mi entorno para depurar en un dispositivo Blackberry?
- 15. ¿Cómo configuro capistrano para usar mi versión rvm de Ruby
- 16. ¿Cómo configuro mi VPS de Ubuntu para enviar correos salientes?
- 17. ¿Cómo configuro cron para ejecutar mi script cada 40mins/25mins?
- 18. Apache HttpClient 4.0.3 - ¿Cómo configuro la cookie con el ID de sesión para la solicitud POST
- 19. Prueba con un guid ... ¿cómo configuro la variable como Guid?
- 20. ¿Cómo configuro request.referrer dentro de mi RSpec?
- 21. ¿Cómo comienzo tmux con mi entorno actual?
- 22. Cómo almacenar en caché una variable utilizada dentro de un script de finalización de bash para la sesión actual
- 23. Obtener la variable de sesión magento en otra página
- 24. ¿Cómo agregar automáticamente un objeto SQLAlchemy a la sesión?
- 25. enlace para abrir automáticamente mi aplicación?
- 26. VaryByCustom no funciona para la variable de sesión
- 27. Inicie sesión automáticamente en el sitio web actual si el usuario ha iniciado sesión en otro sitio web
- 28. Variable de sesión en la aplicación WCF
- 29. ¿Cómo configuro programáticamente la docstring?
- 30. ¿Cómo configuro la fecha para un selector de fecha?
preguntas como esta son más acerca de los sistemas operativos que la programación y serverfault.com es donde van. – SpliFF
Parece que cuando se inició vncserver, la variable DISPLAY se establece automáticamente en la nueva sesión de vnc, al menos esto funciona para mí. –
Debe describir a qué máquina está ingresando y dónde se están ejecutando los servidores vnc. Cualquier shells creado en un entorno vncserver ya tendría la variable DISPLAY correcta. Parece que está iniciando sesión remotamente en un host remoto y tratando de iniciar aplicaciones en un servidor X ya en ejecución. Su secuencia de comandos de inicio de sesión no sabe a qué servidor vnc se debe conectar más que nosotros. – codeDr