【发布时间】:2014-10-13 04:31:05
【问题描述】:
我需要一个在重启时运行的命令。这个命令叫做 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
问题是当我检查进程时程序没有运行。系统日志文件指出它在重新启动时启动了命令,但它没有运行。
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 执行时运行良好。
【问题讨论】:
-
尝试将输出重定向到文件而不是
/dev/null/以确保它正在运行。它还可能为您提供有价值的调试信息 -
使用 root 权限运行东西是个很糟糕的主意
标签: linux python-2.7 cron raspberry-pi crontab