代码之家  ›  专栏  ›  技术社区  ›  Codemonkey

php shell命令中的rm-f安全吗?

  •  1
  • Codemonkey  · 技术社区  · 6 年前

    <?php system('rm /tmp/my-cache/3600/* -f');
    

    是否存在可能导致从其他目录删除文件的情况?例如,如果由于某种原因该目录不存在会发生什么?

    我认为这是安全的,但我以前在一个每分钟都在运行的cron作业中被类似(但完全不同)的代码咬过:

    cd /tmp/my-cache/3600
    find . -maxdepth 1 -mmin +61 -type f -delete
    

    在某些情况下,该文件夹不存在,这意味着 find 删除了主目录中的所有文件!

    (解决办法是把它包在一个盒子里 if [ -d "/tmp/my-cache/3600" ]; then / fi

    就像我说的,我认为 system 电话是安全的,我只想检查一下是否有我不知道的可能导致问题的情有可原的情况?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Ronan Boiteau    6 年前

    rm -f /tmp/my-cache/3600/* /tmp/my-cache/3600/ 如果为空,则不会删除任何内容。

    rm /tmp/my-cache/3600/* (否) -f )你不会得到这个警告:

    没有这样的文件或目录

    ……但这并不意味着什么东西被移除了。根据 rm 's man page ,这发生在

    如果文件不存在,请不要显示诊断消息或修改退出状态以反映错误。

    …所以呢 林吉特 行为就像它删除了某些东西,即使它没有。


    find

    cd 进去,然后跑 ,您应该使用以下命令 找到 命令:

    find /tmp/my-cache/3600 -maxdepth 1 -mmin +61 -type f -delete
    

    find:/tmp/my cache/3600:没有这样的文件或目录