我对unix脚本编程比较陌生,所以对于这个新手问题,我很抱歉。
我需要创建一个脚本,将永久运行在后台,并监测一个文件到达FTP登陆目录,然后将其复制到一个不同的目录,最后从原始目录删除该文件。
该脚本在Ubuntu机器上运行。
登录目录为/home/vpntest
需要将该文件复制为/etc/ppp/chap-secrets
#/home/vpntest/FTP_file_copy.sh
if [ -f vvpn_azure.txt ]; then
cp vvpn_azure.txt /etc/ppp/chap-secrets
rm vvpn_azure.txt
fi我可以作为root运行它,它可以工作,但只能作为一个关闭(我需要它在后台永久运行,并在每次在着陆区收到新文件时触发)。
如果我不是以root用户身份运行,就会遇到权限问题(即使我在/home/vpntest目录中运行它)。
任何帮助都将不胜感激。
发布于 2016-03-02 08:13:31
更新: crontab更正和额外信息
使用root权限在后台执行检查和移动进程的一种方法是使用脚本通过root用户的crontab执行“轮询”方法。
步骤:
#!/bin/bash
new_file=/home/vpntest/vvpn_azure.txt
if [ -f "$new_file" ]; then
mv $new_file /etc/ppp/chap-secrets
fi以超级用户身份登录。
如果这是一台新机器,并且是第一次运行crontab,您可能会得到提示,要求您首先为crontab选择一个编辑器,只需选择并继续进入编辑器即可。
格式为m h dom mon dow command,因此如果每5分钟检查一次就足够频繁,请执行以下操作:
*/5 * * * * /home/vpntest/FTP_file_copy.sh它现在会在后台每隔5分钟自动运行一次脚本,帮助您在找到文件时移动该文件。
解释
root用户,因为您提到它只适用于Root用户。
因此,我们在root用户的crontab中对其进行设置,以使其具有足够的权限。
星号后面也允许使用
步骤,所以如果你想说“每两个小时”,只要使用“*/2”即可。
因此,我们在第一列(分钟列)中编写*/5,将其设置为“每5分钟”。
FTP_file_copy.sh:
new_file [ ]测试中检查的任何值封闭起来的良好做法mv覆盖目标,同时从源目录https://stackoverflow.com/questions/35735004
复制相似问题