簡體   English   中英

無法在 cgi 腳本中運行 find 和 xargs

[英]Unable to run find and xargs in a cgi script

我有一個 cgi 腳本,它從 html javascript 獲取請求並運行一些系統命令,然后響應回 javascript。 現在在我的 cgi 腳本和一組 function 中,我有以下代碼行。

$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”只是掛起,甚至不會返回任何錯誤。 我在這里是否缺少任何東西,或者是否有任何其他方法可以實現相同的目標。 謝謝你。

備查:
這里的問題是shred的 output 在 cgi 執行中阻塞或填滿了一些緩沖區或 pipe。 由於shred沒有“安靜”標志(根據手冊頁),解決方案是像這樣運行它,將 output 重定向到/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的 output 很重要,則可以通過將/dev/null替換為日志文件的位置來將其通過管道傳輸到文件,而不是將其發送到 void,它應該存儲在其中。
在這種情況下,每次運行都會覆蓋日志文件。 如果這不應該發生,請使用&>>而不是&>到 append 到日志文件(在這種情況下不要忘記不時輪換日志文件)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM