![一个用于更改文件权限的 cron 作业](https://linux22.com/image/1459819/%E4%B8%80%E4%B8%AA%E7%94%A8%E4%BA%8E%E6%9B%B4%E6%94%B9%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90%E7%9A%84%20cron%20%E4%BD%9C%E4%B8%9A.png)
当我运行 chmod 777 来手动更改文件的权限时,它会运行。但当我将它放入 cron 作业中时,它永远不会改变权限。
#!/bin/bash
YESTERDAY=`TZ=aaa24 date +%Y-%m-%d`
chmod 777 Overscratchcard_Detail_Report_*.csv
然后我将上述内容放在 crontab 上以更改文件的权限,当我手动运行时,文件权限会发生变化,但在 cron 作业上...文件仍然保留相同的权限。
答案1
Cron 有自己的 shell。因此,当您运行 cron 作业时,它可能与用户执行它时的环境不同。提供您要修改的文件的完整路径也是不错的选择。您可以尝试两种方法:获取用户的 .bashrc 以获取用户环境。或者提供 chmod 的完整路径,我不记得完整路径了,但命令看起来像这样:
/usr/bin/chmod 777 /path-to-file/your.csv
要找到 chmod 的路径,您可以运行:
which chmod
祝你好运!
答案2
另一种方法是编写一个执行 chmod 的 shell 脚本,并在你喜欢的时间使用 cron 调用它
如果您有一个名为 /opt/foo/changeperms.sh 的脚本,那么您可以从 cron 调用它
* 1 * * * /opt/foo/changeperms.sh &
& 在后台运行脚本