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 <me@I.com.au>"

# 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
never_odd_or_even
  • 325
  • 1
  • 4
  • 12
  • Your test script is not fork()ing so your [expect](http://upstart.ubuntu.com/cookbook/#expect) line is probably wrong. Are you really sure you want to respawn? – Zoredache Nov 22 '12 at 00: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. – never_odd_or_even Nov 22 '12 at 03:35

2 Answers2

1
jamesodhunt
  • 849
  • 5
  • 4
  • /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. – never_odd_or_even Nov 27 '12 at 03: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` – never_odd_or_even Nov 27 '12 at 06:51
  • Upstart scripts go in /etc/init not /etc/init.d :( – never_odd_or_even Dec 11 '12 at 03:29
0

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

never_odd_or_even
  • 325
  • 1
  • 4
  • 12