我的脚本启动一个进程并将该进程的 PID 写入文件。当我从 shell 执行它时,它的工作原理如下:
process & echo $! > /home/xxx/PIDs/process.pid
但是当我让 cron 这样做时,进程被执行,但 PID 文件丢失了。这对我来说很奇怪。可能出什么问题了?
cronjob 是一个简单的@reboot
触发器。正如杰夫·夏勒所说,我尝试过,
*/10 * * * * /home/xxx/bin/process & echo $! > /home/xxx/PIDs/process.pid
但这不起作用。
答案1
对我来说,听起来你的 cron 作业运行的用户没有权限将 PID 文件写入/home/xxx/PIDs/
.
/home
例如,如果例如通过 NFS 安装,或者可能是由于 SELinux 之类的原因,则可能会出现这种情况。
尝试检查本地电子邮件。在大多数设置中,cron 会通过电子邮件向本地 root 用户发送错误。
还可能值得尝试xxx
通过在 crontab 中指定它来以用户帐户运行命令,或者以用户身份登录xxx
并运行crontab -e
以编辑 user 的“个人”crontab xxx
。
答案2
抱歉,我说脚本位于 exHDD 上的子文件夹中,这是不正确的,它们存储在 /home/subfolder 中,但不再重要了。重新安装 cron 就可以了。不明白为什么...