我继承了最近需要修改的长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