Debian: How to resolve Xserver failure

6,201

Solution 1

Your script doesn't check if X is already running.
Workaround:

if [ -e /tmp/.X0-lock ]; then
   XPID=$(cat /tmp/.X0-lock)
   if ps -p $XPID >/dev/null; then
      echo "X already running"
   else
      rm /tmp/.X0-lock
      startx
   fi
fi

cd /home/user1/Documents/ProgramFile
./myProgram.sh

However I'd do something like this:

# /etc/inittab
3:2345:respawn:/bin/login -f username tty3 < /dev/tty3 > /dev/tty3 2>&1

and

# /home/username/.bashrc
if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty3 ]; then
  startx -- :0  -quiet -logverbose 11
  cd /mydir
  ./myprog
fi

So you spawn automatically a shell on tty3. Assuming bash is your current shell, bash checks if it runs on tty3, then it executes your stuff.

Solution 2

It looks like you haven't changed your default runlevel and X Server is already running. You should have set it to 3, i.e.:

id:3:initdefault:

Although I don't think your script is going to work anyway. This part:

cd /home/user1/Documents/ProgramFile
./ myProgram.sh

is going to be executed only after X Server stopped.

Share:
6,201

Related videos on Youtube

fifamaniac04
Author by

fifamaniac04

Updated on September 18, 2022

Comments

  • fifamaniac04
    fifamaniac04 over 1 year

    I keep finding similar posts online but I can't really use the solutions in my case. in my /etc/bash.bashrc file, I have the following code placed at the very bottom:

    if [ -e /tmp/.X0-lock ]; then
        rm /tmp/.X0-lock
    fi
    
    startx
    cd /home/user1/Documents/ProgramFile
    ./ myProgram.sh
    

    This is to run my program automatically upon startup.

    I'm running Debian 6.0.7 squeeze. I want to run my program as root on startup. I executed the following command to disable the GUI:

     update-rc.d -f gdm3 remove
    

    I modified /etc/inittab to allow the root user to automatically login:

    1:2345:respawn:/bin/login -f root tty1 </dev/tty1 > /dev/tty1 2>&1
    

    when I boot up my box, I get the following error:

    _XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
    _XSERVTransMakeAllCOTSServerListeners: server already running
    
    Fatal server error:
    Cannot establish any listening sockets - Make sure an X server isn't already running
    
    Please consult the The X.Org Foundation support 
    at http://wiki.x.org
    for help. 
    Please also check the log file at "/var/log/Xorg.0.log" for additional information.
    
    (WW) xf86CloseConsole: KDSETMODE failed: Bad file descriptor   
    (WW) xf86CloseConsole: VT_GETMODE failed: Bad file descriptor
    

    Weird thing is this appears in a white box at the top left corner of my screen, it stays there fore a little while (~15 secs) and then I see my code execute and the screen changes to my application.

    Q: Can anyone explain to me what is going on here and what I can do to not get the error messages.

  • fifamaniac04
    fifamaniac04 over 10 years
    I changed the default run level in /etc/inittab and now my box boots to the GUI for root. If I open a terminal then I get the same error message as above and my program still executes. Do you know how I could go about the part i changed in the bash.bashrc?