Executarea comenzii give top: failed tty get (Programare, Php, Ssh, Centos)

HamzaNig a intrebat.

Am o problemă atunci când execut această linie prezentată mai jos.

sudo /usr/bin/env TERM=xterm /usr/bin/php /home/folder/folder/script.php -b val -a 2018-07-01

Îmi dă o eroare top: failed tty get. Când încerc cu php -f îmi dă o altă problemă similară cu php --help.

[0] => Array
        (
            [error] => 1
            [return] =>     top: failed tty get


        )

Rezultatul pe care îl doresc este să execut comanda cu succes, nu cu eroare Execut această comandă cu SSH într-un script PHP.

Comentarii

  • serverfault.com/questions/304470/… – –  > Por aynber.
  • Vedeți cum am reușit să ocolesc problema top -n 1 -b > top-out, , github.com/plinker-rpc/system/blob/master/src/System.php#L477 –  > Por Lawrence Cherone.
  • top -n 1 -b nu funcționează @LawrenceCherone vreau să execut linia de sus fără a primi această eroare –  > Por HamzaNig.
  • „Execut această comandă cu SSH într-un script PHP.” Vă rugăm să editați întrebarea dvs. pentru a include codul din scriptul PHP care execută această comandă. –  > Por Kenster.
1 răspunsuri
Robbie

Într-adevăr ar putea face cu o copie a scriptului dvs. PHP aici (așa cum a solicitat în comentarii) pentru a confirma, dar pe baza a ceea ce ați furnizat:

Se pare că ceea ce încercați să faceți este să rulați „top” într-o anumită configurație care necesită un terminal într-un script PHP.

/home/folder/folder/script.php
<?php

exec('top -n 1 -b', $out, $error);

print_r($out);

apelat de

/usr/bin/php /home/folder/folder/script.php

Există două soluții:

1) Folosind parametrii de mai sus (-n 1 -b) rulează în modul batch pentru o singură iterație – testat Centos7. Acest lucru nu ar trebui să aibă nevoie de terminal și adaugă ieșirea într-o matrice. Acest lucru ar putea fi ceea ce aveți nevoie. Dar dacă tot nu reușește:

2) În caz contrar, puteți specifica TERM=xterm – se pare că asta este ceea ce ați încercat să faceți, dar trebuie să o faceți în interiorul exec, și nu în shell-ul care apelează scriptul php.

/home/folder/folder/script.php
<?php

exec('TERM=xterm top -n 1 -b', $out, $error);

print_r($out);

apelat de

/usr/bin/php /home/folder/folder/script.php

Tags:, ,