我有一群没有纪律的用户在我的服务器上使用邮件帐户。他们从不清空他们的垃圾或垃圾文件夹,文件数量上升到无穷大。
我正在创建一个Bash脚本,使用cron定期擦除这些文件。
我这样做了:
- 创建一个txt文件,其中包含我要删除的目录列表;
- 创建一个逐行读取的脚本,每个目录并擦除所有内容
cur
和new
。
txt文件示例:
~/mail/.Junk/cur
~/mail/.Junk/new
~/mail/.Trash/cur
~/mail/. Trash/new
~/mail/.administrative@example.com/.Junk/cur
~/mail/.administrative@example.com/.Junk/new
~/mail/.administrative@example.com/.Trash/cur
~/mail/.administrative@example.com/.Trash/new
~/mail/.finance@example.com/.Junk/cur
~/mail/. finance@example.com/.Junk/new
~/mail/. finance@example.com/.Trash/cur
~/mail/. finance@example.com/.Trash/new
我正处于脚本创建的第一阶段,我测试是否可以访问目录并列出其内容。
所以我有这个脚本:
#!/bin/bash
while read line
do
ls $line
done < ~/directories.txt
当我运行脚本时,我收到以下错误:
ls:无法访问〜/ mail / .administrative@example.com/.Junk/new/:没有 这样的文件或目录
对于所有目录,但如果我键入
ls ~/mail/.administrative@example.com/.Junk/new/
它工作正常。
为什么?
您是否使用与手动执行“ls”时相同的用户运行脚本(或cron)?尽量回应
—
Flinth
~
脚本中的路径,看你是否在正确的地方,也许你需要使用你家的绝对路径,而不是 ~
~
指向不同的主目录(可能/root
)。使用完整路径,并确保root可以访问文件夹和内容。