我有一个thecus nas服务器,他们似乎对他们的模板做一些棘手的事情来显示他们的文件,目前正在启动我正在运行一个shell命令将一个文件复制到另一个文件上,以便它用我的自定义启动模板,但是经过一段时间后(我不确定这个时间是什么)它会再次用原始文件覆盖它,我的自定义模板就不见了。
这是我当前的启动脚本:
#!/bin/bash
cp /customTemplates/login.tpl /www/img/templates/adm/login.tpl
有没有办法,执行该复制命令,比如每60秒一次? login.tpl文件只有2kb,所以我不认为这会导致任何问题。
这样做有什么不妥吗?或者我可以使用另一种技巧吗?
答案 0 :(得分:7)
回答一般性问题,有两种方法可以做到这一点,把它放在while / sleep循环中或使用crontab
1) while / sleep
#!/bin/bash
while true; do
cp -f /customTemplates/login.tpl /www/img/templates/adm/login.tpl
sleep 60
done
2) crontab(首选)
运行crontab -e
并将以下行放在那里
* * * * * cp -f /customTemplates/login.tpl /www/img/templates/adm/login.tpl
这将在每周的每个月的每个月的每一小时的每一分钟运行命令。 (每60秒一次)
但是,作为Aaron Digulla said,最好到达它从中拉出配置并在那里编辑它的位置,而不是每隔60秒覆盖一次。
答案 1 :(得分:2)
更好的解决方案是找出NAS从中获取原始文件的位置。
执行此命令以查找可能的候选人:
find / -name "login.tpl"
您还可以使用模式:"*login*"
我建议在使用模式时使用引号,否则它可能与本地文件夹中的文件匹配,然后shell会在将参数传递给find
之前替换名称。
要找出更改文件的人,请使用auditctl
(see this question)。
答案 2 :(得分:0)
尝试以下解决方案:
chmod +x /tmp/test.sh
你的脚本test.sh:
#!/bin/bash
cp -f /customTemplates/login.tpl /www/img/templates/adm/login.tpl
然后做:
touch /tmp/cronjob
echo "* * * * * ./test.sh" > /tmp/cronjob
/etc/init.d/crond/start
crontab /tmp/cronjob
答案 3 :(得分:0)
如果你正在寻找一次性的,一次性的解决方案,你可以使用手表实用程序
watch -n 60 ./test.sh
每60秒运行一次./test.sh并将输出回显到stdout