3

I'm trying to create an upstart script to run a python script on startup. In theory it looks simple enough but I just can't seem to get it to work. I'm using a skeleton script I found here and altered.

description "Used to start python script as a service"
author "Me <[email protected]>"

# Stanzas
#
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn

# When to start the service
start on runlevel [2345]

# When to stop the service
stop on runlevel [016]

# Automatically restart process if crashed
respawn

# Essentially lets upstart know the process will detach itself to the background
expect fork

# Start the process
script
  exec python /usr/local/scripts/script.py
end script

The test script I want it to run is currently a simple python script that runs without any issue when run from a terminal.

#!/usr/bin/python2

import os, sys, time 
if __name__ == "__main__":  
    for i in range (10000):
        message = "UpstartTest " , i , time.asctime() , " - Username: " , os.getenv("USERNAME")
        #print message
    time.sleep(60)
        out = open("/var/log/scripts/scriptlogfile", "a")
        print >> out, message
        out.close()
  • The location/var/log/scripts has permissions 777
  • The file /usr/local/scripts/script.py has permissions 775
  • The upstart script /etc/init.d/pythonupstart.conf has permissions 755
2
  • Your test script is not fork()ing so your expect line is probably wrong. Are you really sure you want to respawn?
    – Zoredache
    Nov 22, 2012 at 0:46
  • This is just a test script I will want the script I plan to run in production to respawn. I'll take out the fork() and see how I go. Nov 22, 2012 at 3:35

2 Answers 2

1
3
  • /var/log/upstart isn't there but upstart is installed. /sbin/initctl --version returns "initctl (upstart 0.6.5) Copyright (C) 2010 Canonical Ltd." Does Upstart need to be configured to start at startup or is it automatic, I didn't install it. It was there when I installed the OS. Nov 27, 2012 at 3:21
  • sudo /etc/init.d/script.conf gives the following output line 3: description: command not found line 4: author: command not found start: Unknown job: on stop: Unknown job: on line 18: respawn: command not found Script started, file is typescript Nov 27, 2012 at 6:51
  • Upstart scripts go in /etc/init not /etc/init.d :( Dec 11, 2012 at 3:29
0

Upstart scripts go in /etc/init not /etc/init.d, It was a long week that week. :(

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .