微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 bash 脚本作为 cron 作业运行并没有做任何事情

如何解决将 bash 脚本作为 cron 作业运行并没有做任何事情

我在 /home/pi/dev/app/script.sh一个 Bash 脚本

启动一个节点应用程序将“hello world”写入文件。 使用手动启动脚本工作正常。 节点应用程序:

const fs = require('fs');

let test = 'cron working';
fs.writeFile('temp.txt',test,(err) => {

    if (err) throw err;


    console.log('saved!');
});

Bash 脚本:

#!/bin/bash
node /home/pi/dev/app/index.js

但是:

运行crontab -e

添加行: 1 * * * * /bin/bash /home/pi/dev/app/script.sh

什么都不做。观察 tail -f /var/log/syslog 表明 cron 本身正在执行,但没有写入文件

我尝试添加 sudo nano /etc/crontab 1 * * * * root /bin/bash /home/pi/dev/app/script.sh 但这也不起作用。

我使用的是运行 debian 的 RPI4。

解决方法

如果启动 node 的 bash 脚本行只是“node index.js”,则可能是 crond 用户环境缺少 PATH 条目。如果 crond 以 root 身份运行,请检查 root 超级用户的默认环境,其 PATH 条目必须包含 node.js 路径。您可能还需要重新启动正在运行的 crond 或 kill -SIGHUP <crond pid> 以刷新其环境设置。

为了安全起见,请注意 node.js 路径仅对 root 超级用户可写。如果无法完成,那么在 bash 脚本中使用完整的 node.js 路径会更安全,而无需将 node.js 路径条目添加到 root 的 PATH 中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。