我需要运行更改所选文件的所有者和组的cron作业。
我有一个脚本:
#!/bin/bash
filez=`ls -la /tmp | grep -v zend | grep -v textfile | awk '$3 == "www-data" {print $8}'`
for ff in $filez; do
/bin/chown -R tm:tm /tmp/$ff
done
如果我手动运行它 - 它完美地运行。如果我把它添加到root的cron
* * * * * /home/scripts/do_script
它不会更改所有者/组。文件具有权限“-rwsr-xr-x”。
任何想法如何解决这个问题?
答案 0 :(得分:0)
在我的系统上,字段$8
是小时/年,而不是文件名。也许你的root用户就是这种情况。这就是为什么你永远不应该尝试parse ls。即使您解决了这个问题,未来也会有六个以上的问题破坏系统。
使用find代替:
find /tmp ! -name '*zend*' ! -name '*textfile*' -user www-data \
-exec chown -R tm:tm {} \;
答案 1 :(得分:0)
如果要添加到root的cron(/ etc / crontab),请注意语法与普通用户的crontab不同。
# m h dom mon dow user command
* * 1 * * root /usr/bin/selfdestruct --immediately
同时给出命令的完整路径:Cron并没有真正丰富的环境。 确保脚本中的命令也具有完整路径,并且不使用环境变量。