无法从cronjob写入文件
我有一个小的Raspberry PI集群,每个独立的PI从母舰上获得程序更新。一切都在本地局域网上,不接触互联网 更新可执行文件的代码为:无法从cronjob写入文件,c,cron,raspberry-pi,raspbian,C,Cron,Raspberry Pi,Raspbian,我有一个小的Raspberry PI集群,每个独立的PI从母舰上获得程序更新。一切都在本地局域网上,不接触互联网 更新可执行文件的代码为: strcpy(tmp,"/home/sw/update"); f = fopen(tmp, "w"); if (f == NULL) { printf("Could not open program %s to update\n",tmp); return 1; } fwrite(cmd,sizeof(char),tot
strcpy(tmp,"/home/sw/update");
f = fopen(tmp, "w");
if (f == NULL) {
printf("Could not open program %s to update\n",tmp);
return 1;
}
fwrite(cmd,sizeof(char),totalRead-2,f);
fclose(f);
如果我从shell(作为root)运行它,它工作得很好。将其作为cron作业运行总是失败,并显示上述消息“无法打开程序…”
我已将权限设置为777,并将要更新的文件的所有者设置为root(以消除这些问题)。更新程序每小时在集群中的每个PI上运行一次(有另一种方法确定是否需要更新)。cron表条目是:
0 * * * * /home/sw/updatepi >> /var/log/updatepi.log
有什么想法吗?检查错误号并告诉我们其原因value@robin.kocherrno=26文本文件正忙。我检查过了,可执行文件不在内存中。还有什么事情会导致它被标记为正在使用?对不起。你的最后一句话比我的早。我想我明白了。存在竞争条件,更新程序正在丢失。请检查错误号并告诉我们其错误value@robin.kocherrno=26文本文件正忙。我检查过了,可执行文件不在内存中。还有什么事情会导致它被标记为正在使用?对不起。你的最后一句话比我的早。我想我明白了。存在竞争条件,更新程序正在丢失。