2014-04-01 48 views
0

我在/etc/init/ Ubuntu中创建了以下ProcessRunner.conf。在命令行通过crontab安排UpStart初始化脚本

# 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 

# Run before process 
pre-start script 
    [ -d /var/run/ProcessRunner ] || mkdir -p /var/run/ProcessRunner 
    java -Dlog4j.configuration=log4j_process1.xml -classpath /home/devuser/apps/ProcessExecutor:/home/devuser/apps/ProcessExecutor/ProcessExecutor-1.0.jar com.process.ApplicationStartup & 
    echo $! > /var/run/ProcessRunner/ProcessRunner.pid; 
end script 

post-stop script 
    processid=$(cat /var/run/ProcessRunner/ProcessRunner.pid); 
    if ps -p $processid > /dev/null 
     then 
     sudo kill -9 $processid; 
    fi; 
end script 

我用下面的命令来启动/停止这样的:

sudo start ProcessRunner 
sudo stop ProcessRunner 

它工作正常。现在我需要安排这些。我在做下面这样做:在命令行

我用下面的命令来启动/停止这样的:

$sudo crontab -e 

0 0 * * * * start ProcessRunner 
0 2 * * * * stop ProcessRunner 

但是,这是行不通的。请帮忙。 另外,我不希望这个过程在系统启动时开始。我该如何配置?

+0

crontab的环境并没有提供路径,所以命令('开始ProcessRunner')必须包含完整路径 –

+0

@RaulAndres如果这是一个shell脚本,我会提供一个绝对路径。但这是一个响应启动/停止命令的UpStart脚本。我能为此提供什么途径? –

回答

2

Crontab环境不提供路径,因此命令(启动ProcessRunner)必须包含完整路径。

命令“开始”和“停止”的完整路径,而不是你的新贵的配置文件!

所以,从本质上讲,你的crontab应该是这样的:

0 0 * * * * /sbin/start ProcessRunner 
0 2 * * * * /sbin/stop ProcessRunner 
+0

我会尝试。我不知道什么是启动,停止命令的绝对路径。 –