Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

How do I create a system-wide autostart file? This would be on a cloud server running the desktop version of Maverick.

I logged in as root and created an autostart file using System/Preferences/StartupApplications but it ended up in /root/.config/autostart and did not execute (as far as I can tell) upon rebooting. The autostart file is to invoke a bash script that invokes the VNC server.

I copied the .desktop autostart file from /root/.config/autostart to /etc/xdg/autostart and rebooted. This did not seem to make a difference.

Edit As mentioned in a comment, the objective is to run my bash script which starts the VNC server upon boot; not upon a login.

share|improve this question
    
do you mean autostart on boot or autostart when someone (anyone) logs on? –  fossfreedom Apr 11 '12 at 10:37
    
I want the VNC server to autostart on boot. –  broiyan Apr 11 '12 at 10:38
    
I've found an answer at SU SE superuser.com/questions/147109/… give it a try –  wisemonkey Apr 17 '12 at 17:35
    
Doesn't VNC requires a display to run? –  desgua Apr 21 '12 at 1:39
    
@wisemonkey. That worked. Thank you. –  broiyan Jun 8 '12 at 13:20

4 Answers 4

up vote 7 down vote accepted

Try this step by step: Start a VNC Server on Ubuntu on Boot

  1. First, install the TightVNC server sudo apt-get install tightvncserver.

  2. Set up the VNC server for the user you wish to log in as. When you run "vncserver" for the first time, it will ask you to set a password. only allow SSH tunnelled or VPN connections. To launch programs or a session when your VNC session starts, modify ~/.vnc/xstartup. Here is an example.

    #!/bin/sh
    
    xrdb $HOME/.Xresources
    xsetroot -solid black
    /opt/azureus/azureus &
    k3b &
    icewm-session &
    
  3. Copy the following into /etc/init.d/vncserver. The easiest way to do it is to copy it to your clipboard, run sudo -i && cat > /etc/init.d/vncserver && exit in a terminal, paste it in, and type CTRL-D. Be sure to change the USER variable to whatever user you want the VNC server to run under.

    #!/bin/sh -e
    ### BEGIN INIT INFO
    # Provides:          vncserver
    # Required-Start:    networking
    # Default-Start:     3 4 5
    # Default-Stop:      0 6
    ### END INIT INFO
    
    PATH="$PATH:/usr/X11R6/bin/"
    
    # The Username:Group that will run VNC
    export USER="mythtv"
    #${RUNAS}
    
    # The display that VNC will use
    DISPLAY="1"
    
    # Color depth (between 8 and 32)
    DEPTH="16"
    
    # The Desktop geometry to use.
    #GEOMETRY="<WIDTH>x<HEIGHT>"
    #GEOMETRY="800x600"
    GEOMETRY="1024x768"
    #GEOMETRY="1280x1024"
    
    # The name that the VNC Desktop will have.
    NAME="my-vnc-server"
    
    OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
    
    . /lib/lsb/init-functions
    
    case "$1" in
    start)
    log_action_begin_msg "Starting vncserver for user '${USER}' on   localhost:${DISPLAY}"
    su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
    ;;
    
    stop)
    log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
    su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
    ;;
    
    restart)
    $0 stop
    $0 start
    ;;
    esac
    
    exit 0
    
  4. Make the script executable with sudo chmod +x /etc/init.d/vncserver.

  5. Finally, connect to your server with a VNC client on port 590X, where X is the value of "DISPLAY" in the vncserver script. On OS X, I like to use Chicken of the VNC. On Windows and Linux, the TightVNC client works nicely.
share|improve this answer
    
This superuser.com/questions/147109/… from wisemonkey is the stackexchange equivalent answer. It works. Note the path to X11 might need adjusting. –  broiyan Jun 8 '12 at 13:21
    
TigerVNC installs /etc/init.d/vncserver which starts all vncservers configured in /etc/sysconfig/vncservers –  thekashyap Jul 28 at 15:01

If you're using TigerVNC then it installs /etc/init.d/vncserver which starts all vncservers configured in /etc/sysconfig/vncservers E.g. following would start 2 instances on display 1 & 2 at start up.

# <display>:<user>
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1920x1080"

VNCSERVERS="2:guest"
VNCSERVERARGS[2]="-geometry 800x600 -SecurityTypes None"
share|improve this answer

You can have cron start stuff for you at boot time. Just use the string "@reboot" in place of the numbers that you normally use to specify when the thing should run.

For example, here's how I start Dropbox on a machine on which it doesn't otherwise start automatically:

# m h  dom mon dow   command
@reboot         /usr/bin/dropbox start
share|improve this answer
    
This page says that only works if the system actually reboots (no cold boot). –  Cees Timmerman May 11 '12 at 7:52

One possibility: /etc/rc.local

The content says it:

# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits. 
#
# By default this script does nothing

The execution bits are set to 755 on my system already. (chmod 755 /etc/rc.local)

You can put any command in there, which will be executed as root.

This is ok for your purpose as long as you do not change runlevels, I guess. (If you do not know what runlevels are, nevermind).

share|improve this answer
    
This suggestion did not work for me. –  broiyan Apr 15 '12 at 14:31
    
These 2 tweaks may help. –  Cees Timmerman May 11 '12 at 7:57
    
@CeesTimmerman, thank you but those 2 tweaks did not work. –  broiyan Jun 8 '12 at 12:51

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.