Crontab在重启时没有启动命令

时间:2014-08-19 22:43:38

标签: linux python-2.7 cron raspberry-pi crontab

我需要一个命令才能在重启时运行。此命令称为script.sh

#!/bin/bash
ibeacon scan | /home/pi/test.py

此命令将输入​​管道输入到我编写的名为test.py的python程序。

#!/usr/bin/python
import fileinput
import socket
import requests

for line in fileinput.input():
   if line.startswith('UUID:'):
      line = line.strip()
      a = line.split(' ')[1]
      b = line.split(' ')[3]
      c = line.split(' ')[5]
      d = line.split(' ')[7]
      e = line.split(' ')[9]
      f = socket.gethostname()
      payload = {'uuid': a, 'major': b, 'minor': c, 'power': d, 'rssi': e, 'hubname': f}
      r = requests.get('http://httpbin.org/get', params=payload)
     # print(r.url)     ##Print the URL
   elif line.startswith('iBeacon'):
      print "Starting script..."
      continue
   else:
      print "Error: invalid input, closing..."
      break

问题是当我检查进程时程序没有运行.syslog文件指出它在重启时启动了命令,但它没有运行。

Aug 19 22:23:35 raspberrypibeacon /USR/SBIN/CRON[2089]: (root) CMD (/home/pi/script.sh > /dev/null 2>&1)

我的crontab条目看起来像这样

@reboot /home/pi/script.sh > /dev/null 2>&1

cron或我的程序有问题吗?从命令行运行时,我的程序运行正常,但在由cron执行时则不行。

1 个答案:

答案 0 :(得分:0)

通常情况下,如果某些东西从命令行运行良好但不能作为cron作业运行,那么因为对cron作业设置了不同的PATH。 PATH设置得相当保守,以确保错误的东西不会运行,这会导致安全问题。

您可以首先在shell脚本中放入ibeacon程序的完整路径(即,将其作为

运行)
/path/to/ibeacon scan | ...

而不仅仅是

ibeacon scan | ...

该脚本也以root身份运行,因此如果ibeacon位于您自己的bin目录中,则在没有完整路径的情况下找不到它。