我繼承了最近需要修改的長bash腳本。 bash腳本每天都作爲cronjob運行。我用bash腳本很體面,但我對Perl不太瞭解。在bash腳本中執行perl腳本
我不得不將所有「rm」命令替換爲執行類似操作的perl腳本(出於安全目的)。這個腳本不是我寫的,所以沒有-f標誌可以跳過確認提示。因此,爲了自動執行這個腳本,我在腳本中輸入「yes」。
這裏就是我依次刪除兩個目錄的例子:
echo REMOVING FILES TO SAVE DISK SPACE
echo "yes | sudo nice -n -10 perl <path_to_delete_script.pl> -dir <del_dir1>"
yes | sudo nice -n -10 perl <path_to_delete_script.pl> -dir <del_dir1>
echo "yes | sudo nice -n -10 perl <path_to_delete_script.pl> -dir <del_dir2>"
yes | sudo nice -n -10 perl <path_to_delete_script.pl> -dir <del_dir2>
echo DONE.
在我的輸出文件,我看到以下內容:
REMOVING FILES TO SAVE DISK SPACE
yes | sudo nice -n -10 perl <path_to_delete_script.pl> -dir <del_dir1>
yes | sudo nice -n -10 perl <path_to_delete_script.pl> -dir <del_dir2>
DONE.
它不會出現的perl腳本運行。然而,當我將這兩個命令複製並粘貼到終端中時,它們都運行良好。
任何幫助表示讚賞。先謝謝你。
爲什麼你認爲Perl腳本沒有運行? –
我做了一個ps/top,我沒有看到它運行。另外,由於我需要刪除的數據量很大,我已經對刪除腳本進行了計時,平均需要5個小時才能完成。該腳本僅在一小時前開始運行,而這些是腳本的最後一行。 – LeoPardus
在腳本內部做什麼「sudo」?切勿將'sudo'放在腳本中;這是一個安全漏洞。你的cronjob應該在根目錄下,如果你需要這些權限,你不需要。使所有文件和目錄都有自己的組,並使用組名創建用戶。在該用戶下運行cronjob:他們有權刪除這些文件。另外,絕對不要提高優先級。它會擾亂你的系統。 – shawnhcorey