无法 运行 在 cgi 脚本中查找和 xargs
Unable to run find and xargs in a cgi script
我有一个 cgi 脚本,它从 html javascript 获取请求并运行一些系统命令,然后响应返回给 javascript。
现在在我的 cgi 脚本和设置函数之一中,我有以下代码行。
$shred1 = `/usr/bin/find /usr/demo/logs -type f | xargs shred -uvz -n 5`;
$shred2 = `/usr/bin/find /var/lib/pgsql/data -type f | xargs shred -uvz -n 5`;
第一行,即“shred1”成功执行,但第二行“shred2”只是挂起,甚至不会 return 任何错误。有没有我在这里遗漏的东西,或者有没有其他方法可以达到同样的目的。
谢谢。
供日后参考:
这里的问题是 shred
的输出在 cgi 执行中阻塞或填满了一些缓冲区或管道。由于 shred
没有“安静”标志(根据手册页),解决方案是 运行 这样,将输出重定向到 /dev/null
:
$shred1 = `/usr/bin/find /usr/demo/logs -type f | xargs -I{} bash -c "shred -uvz -n 5 {} &> /dev/null"`;
$shred2 = `/usr/bin/find /var/lib/pgsql/data -type f | xargs -I{} bash -c "shred -uvz -n 5 {} &> /dev/null"`;
如果问题可能来自被粉碎的文件太多,请使用 -n
和 -P
标志来限制一次被粉碎的文件数量。
如果 shred
的输出很重要,则可以通过将 /dev/null
替换为 log-file, 应该存放在.
在这种情况下,log-file 会在每个 运行 上被覆盖。如果不应该发生这种情况,请使用 &>>
而不是 &>
附加到 log-file (在这种情况下不要忘记不时旋转 log-file )。
我有一个 cgi 脚本,它从 html javascript 获取请求并运行一些系统命令,然后响应返回给 javascript。 现在在我的 cgi 脚本和设置函数之一中,我有以下代码行。
$shred1 = `/usr/bin/find /usr/demo/logs -type f | xargs shred -uvz -n 5`;
$shred2 = `/usr/bin/find /var/lib/pgsql/data -type f | xargs shred -uvz -n 5`;
第一行,即“shred1”成功执行,但第二行“shred2”只是挂起,甚至不会 return 任何错误。有没有我在这里遗漏的东西,或者有没有其他方法可以达到同样的目的。 谢谢。
供日后参考:
这里的问题是 shred
的输出在 cgi 执行中阻塞或填满了一些缓冲区或管道。由于 shred
没有“安静”标志(根据手册页),解决方案是 运行 这样,将输出重定向到 /dev/null
:
$shred1 = `/usr/bin/find /usr/demo/logs -type f | xargs -I{} bash -c "shred -uvz -n 5 {} &> /dev/null"`;
$shred2 = `/usr/bin/find /var/lib/pgsql/data -type f | xargs -I{} bash -c "shred -uvz -n 5 {} &> /dev/null"`;
如果问题可能来自被粉碎的文件太多,请使用 -n
和 -P
标志来限制一次被粉碎的文件数量。
如果 shred
的输出很重要,则可以通过将 /dev/null
替换为 log-file, 应该存放在.
在这种情况下,log-file 会在每个 运行 上被覆盖。如果不应该发生这种情况,请使用 &>>
而不是 &>
附加到 log-file (在这种情况下不要忘记不时旋转 log-file )。