gpt4 book ai didi

shell - 监视文件然后复制到另一个目录

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:35 26 4
gpt4 key购买 nike

我是 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 中运行它也是如此。)

如有任何帮助,我们将不胜感激。

最佳答案

更新: crontab 更正和额外信息

使用 root 权限在后台进行检查和移动过程的一种方法是通过 root 用户的 crontab 使用您的脚本完成“轮询”方法。

步骤:

  1. 修改你的/home/vpntest/FTP_file_copy.sh:
#!/bin/bash

new_file=/home/vpntest/vvpn_azure.txt

if [ -f "$new_file" ]; then
mv $new_file /etc/ppp/chap-secrets
fi
  1. 注销。以根用户身份登录。

  2. 添加一个 cron 任务来运行脚本:

    crontab -e

如果这是一台新机器,并且是您第一次运行 crontab,您可能会首先得到提示,为 crontab 选择一个编辑器,只需选择并继续进入该编辑器即可。

格式为m h dom mon dow command,因此如果每 5 分钟检查一次足够频繁,请执行以下操作:

*/5 * * * * /home/vpntest/FTP_file_copy.sh
  1. 保存并关闭申请。

现在,它会在后台每 5 分钟自动运行一次脚本,帮助您移动找到的文件。

解释

root 用户,因为你提到它只对你作为 root 有效。

所以我们在root用户的crontab中设置这个,让它有足够的权限。

man 5 crontab 告诉我们:

Steps are also permitted after an asterisk, so if you want to say 'every two hours', just use '*/2'.

因此我们在第一列,也就是分钟列写上*/5,设置为“每 5 分钟”。

FTP_file_copy.sh:

  • 使用绝对路径,可以从任何地方运行
  • 重新安排一个变量 new_file 可以重复使用
  • 在您的 [ ] 测试中包含任何被检查的值的良好做法
  • 使用 mv 覆盖目标,同时从源目录中删除自身

关于shell - 监视文件然后复制到另一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35735004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com