我正在Raspberry Pi Zero W中使用python 3.6脚本,其中包含以下几行:
import subprocess
result = subprocess.run(['which', 'node'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
nodeCmd = result.stdout.decode("utf-8").replace('\n', '')
print(nodeCmd)
result = subprocess.run([nodeCmd, './script.js'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
该脚本尝试查找节点二进制文件并调用js脚本。手动运行时,程序运行正常,但是当我通过crontab安排调用时, nodeCmd 变量显示为空白(而不是 / usr / local / bin / node ),并且我收到以下错误:
[Errno 13] Permission denied: ''
这是怎么回事?这是权限问题吗?
答案 0 :(得分:1)
因此原因似乎是crontab将$ PATH变量设置为与用户$ PATH不同的值。为了解决这个问题,我只需要在cron文件中的计划行上方设置所需的值即可:
create or replace PROCEDURE "MONITORING_ACTIVITY_LOG"
(IN_KPI_DEF_ID_VAL IN VARCHAR DEFAULT 0,IN_OBJECT IN VARCHAR)
AS
PRAGMA AUTONOMOUS_TRANSACTION;
err_code VARCHAR(100);
err_msg VARCHAR(200);
BEGIN
err_code :=SUBSTR(SQLCODE, 1, 100);
err_msg := SUBSTR(SQLERRM, 1, 200);
Insert into ACTIVITY_LOG(KPI_DEF_ID,EXCEPTION_IN,OBJECT,SQL_ERROR_CODE,SQL_ERROR_MESSAGE,TIMESTAMP)
VALUES (IN_KPI_DEF_ID_VAL,'MONITORING',IN_OBJECT,err_code,err_msg,SYSDATE);
commit;
END;