2012-04-18 98 views
0

我想從根刪除sendmail消息我的腳本將需要刪除的郵件刪除到具有尊重ID的文件中,但即使從根目錄運行它仍然不會刪除它。所有它的說權限被拒絕甚至不能從根本上刪除的文件,試圖刪除sendmail消息

#!/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

發佈顯示錯誤的腳本和確切輸出。並閱讀[常見問題]並[問]瞭解您的問題爲什麼不完整。 – 2012-04-18 05:28:22

+0

感謝您的快速響應,我編輯了我的文章。我從root運行此代碼仍然拒絕它的說法權限從mailq – 2012-04-18 05:43:28

+0

刪除這些文件您沒有包含顯示EXACT錯誤消息的輸出示例。嘗試使用'-x'選項運行腳本(啓用跟蹤)。 – 2012-04-18 05:58:45

回答

1

不准你有幾個問題:

  1. tee命令被追加到一個名爲mailq文件但後來您試圖讀取名爲mailq.mq的文件,該文件不存在
  2. rm從sendmail下刪除文件可能會嚴重混淆它。我使用postfix,它有命令來刪除排隊的消息;如果sendmail有一個類似的工具,則改爲使用它。
  3. 最後的find...rm根本沒有使用查找的結果。您不需要find命令。
+0

感謝您的回覆,抱歉,我再次編輯了該帖子,它在我的部分輸入了錯誤。 你能告訴我如何在我的情況下使用postfix。 還有一件事,當我從命令行執行rm時,它會正確刪除郵件 – 2012-04-18 05:55:50