2013-07-15 231 views
0

我繼承了最近需要修改的長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腳本運行。然而,當我將這兩個命令複製並粘貼到終端中時,它們都運行良好。

任何幫助表示讚賞。先謝謝你。

+0

爲什麼你認爲Perl腳本沒有運行? –

+0

我做了一個ps/top,我沒有看到它運行。另外,由於我需要刪除的數據量很大,我已經對刪除腳本進行了計時,平均需要5個小時才能完成。該腳本僅在一小時前開始運行,而這些是腳本的最後一行。 – LeoPardus

+5

在腳本內部做什麼「sudo」?切勿將'sudo'放在腳本中;這是一個安全漏洞。你的cronjob應該在根目錄下,如果你需要這些權限,你不需要。使所有文件和目錄都有自己的組,並使用組名創建用戶。在該用戶下運行cronjob:他們有權刪除這些文件。另外,絕對不要提高優先級。它會擾亂你的系統。 – shawnhcorey

回答

0

感謝所有的意見。我最終改變了工具和所有輸出文件的組和權限。這使我可以在不使用「sudo」的情況下運行perl腳本,其他人指出這是不好的做法。

1

你乾脆把做

yes | ./myscript.pl