簡體   English   中英

運行“最后”Linux命令

[英]Running “Last” Linux Command

我正在嘗試用PHP執行linux命令,這是我的示例代碼:

$command = "last -F";
$o = shell_exec($command);
print_r($o);

大多數Linux命令給我一個輸出,但對於Last -F命令,我沒有輸出。 為什么會這樣?

試試這個解釋 您的問題可能是最后一行last -F的最后一行是換行符。 shell_exec()只返回命令的最后一行,因此,如果該行為空,則什么也得不到,nada。

作為替代方法,嘗試使用exec() ,這將允許您捕獲返回值(執行的成功或失敗)以及命令輸出的全部內容。 在這里查看

您正在以web用戶( nobodywww-data )執行該命令,該用戶是有限的特權用戶。您必須以root身份執行該命令。 不幸的是,給網絡用戶提供sudo權限或完全權限是一個壞主意。 因此,我建議創建一個執行last -F的cron或后台腳本,並將輸出寫入文件。 您可以從PHP腳本中讀取該文件。

你可以讓腳本像這樣在后台運行。

   #!/bin/bash

    while [ true ]; do
         last -F > /tmp/myfile
    done

將代碼保存為mycron.sh

chmod +x mycron.sh
mycron.sh &

從PHP程序中讀取文件/tmp/myfile 它將給出該命令的確切輸出。

暫無
暫無

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

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