【问题标题】:cpanel shell script on cloud server centos no such file or dir云服务器centos上的cpanel shell脚本没有这样的文件或目录
【发布时间】:2017-07-25 05:22:06
【问题描述】:

我有一个 shell 脚本 copy_files.sh,我每天使用 cron 作业调用一次。

但是它从来没有用过,我一直没有得到这样的文件或目录。

!#/bin/sh
for f in /home/site1/public_html/admin/data/*.csv
do 
  cp -v "$f" /home/site2/app/cron_jobs/data/"${f%.csv}".csv
done

我已通过 ssh 检查所有路径是否正确我已使用 ls -l /bin/sh 更改 /bin/sh 的路径我已将 perms 和用户和组设置为 root 以用于 copy_files.sh 我已禁用 php open_basedir 保护。

shell 脚本位于 /home/site2/

任何想法为什么我仍然没有得到这样的文件或目录? 无论如何要检查 open_basedir 保护是否关闭,说考虑到脚本由 root 拥有我不认为这是问题,除非它以 site2 用户而不是 root 用户身份执行?

【问题讨论】:

  • 脚本的第一行错误,shebang 以 '#!' 开头不是'!#'
  • opps 错字!你是对的我得到 cp: cannot stat and no such file or directory
  • 您能否在此处粘贴确切的输出/错误消息(或其中的一部分)
  • cp:无法统计'/home/site1/public_html/admin/data/*.csv':没有这样的文件或目录

标签: linux bash shell centos


【解决方案1】:

由于您使用 shell 扩展的方式,for 循环中的变量包含文件的绝对路径。拥有绝对路径,意味着不需要使用字符串操作 (%),也不需要将“.csv”添加到文件名中,只需将其全部删除并提供要复制到的目录cp 的第二个参数,请参见下面的示例。

#!/bin/sh for f in /home/site1/public_html/admin/data/*.csv; do cp -v "$f" /home/site2/app/cron_jobs/data done

【讨论】:

  • 仍然出现同样的错误cp: cannot stat ‘/home/site1/public_html/admin/data/*.csv’: No such file or directory 我只是在复制了 6 个文件后才能明确命名它们,但为了将来使用,最好从目录中提取所有 csv
  • 该目录下是否有 csv 文件?您能否提供 ls /home/site1/public_html/admin/data/*.csv 的输出
  • 其中一些有负载:8mobile.csv Nokia-Lumia-620.csv Apple-iPhone-4-8GB.csv Nokia-Lumia-625.csv
  • 最后一件事,尝试手动运行脚本,使用“sh -x yourScript.sh”并告诉我输出是什么
  • 如果这对其他人有帮助,问题是我在 site2 用户下的 cpanel 中设置了 cron 作业,即使我禁用了 php open_basedir 保护,cron 仍然没有权限离开它自己主目录,所以我使用 crontab-e 在终端中手动设置 cron 现在它可以正常工作了
猜你喜欢
  • 2018-08-24
  • 1970-01-01
  • 2016-05-13
  • 2017-06-16
  • 2016-01-11
  • 2016-02-15
  • 2019-07-19
  • 1970-01-01
  • 2020-05-09
相关资源
最近更新 更多