运行 bash 脚本作为 cron 作业不执行任何操作
Running bash script as cron job does'nt do anything
我在 /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
什么都不做。 watching tail -f /var/log/syslog
显示 cron 本身正在执行,但它没有写入文件。
我试过 sudo nano /etc/crontab
添加
1 * * * * root /bin/bash /home/pi/dev/app/script.sh
但这也行不通。
我正在使用 RPI4 运行 debian。
如果启动节点的 bash 脚本行只是“节点 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 会更安全。
我在 /home/pi/dev/app/script.sh
启动节点应用程序将“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
什么都不做。 watching tail -f /var/log/syslog
显示 cron 本身正在执行,但它没有写入文件。
我试过 sudo nano /etc/crontab
添加
1 * * * * root /bin/bash /home/pi/dev/app/script.sh
但这也行不通。
我正在使用 RPI4 运行 debian。
如果启动节点的 bash 脚本行只是“节点 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 会更安全。