我正在尝试从root我的脚本中删除sendmail消息,该消息将要删除的邮件消息删除到具有受尊重ID的文件中,但即使从root运行它仍然没有删除它。所有它表示权限被拒绝不能删除文件,甚至从根
#!/usr/bin/ksh
WORKFILE="/tmp/check.mq"
MAILLIST="emailadress"
mailq|grep -B1 -i temporarily |grep -iv deferred |egrep -i 'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec' |awk -F" " '{print $1}' |awk '{print substr($0,10,14)}' |tee -a $WORKFILE |awk '{print "*" $1}' |tee -a mail.mq
mailq|grep -B1 -i unknown|egrep -i 'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec' |awk -F" " '{print $1}' |awk '{print substr($0,10,14)}' |tee -a $WORKFILE |awk '{print "*" $1}' |tee -a mail.mq
mailq|grep -B1 -i lookup |grep -iv deferred |egrep -i 'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec' |awk -F" " '{print $1}' |awk '{print substr($0,10,14)}' |tee -a $WORKFILE |awk '{print "*" $1}' |tee -a mail.mq
cat mail.mq | while read file; do rm -rf /var/spool/mqueue/$file;done
find . -type f -name "mail.mq" |rm -rf mail.mq
我正在使用此代码,该代码会删除ID的最后5个数字的id和子字符串。
我得到的错误是
rm: cannot lstat '/var/spool/mqueue/*11343' :Permission denied
我在删除这些邮件时获得了许可
答案 0 :(得分:1)
你有几个问题:
tee
命令附加到名为mailq
的文件,但稍后您尝试读取名为mailq.mq
的文件,该文件将不存在rm
从sendmail下删除文件可能会严重混淆。我使用postfix,它有删除排队消息的命令;如果sendmail有类似的设施,请使用它。find...rm
根本没有使用查找结果。您不需要find
命令。