SSH к серверу Linux, не перечисляя PID из Python с помощью команды PS - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь выполнить приведенный ниже код на сервере Linux, используя 2 метода:

  1. вход на сервер Linux вручную, запуск сценария
  2. С локального (с использованиемкоманда ssh)

Пожалуйста, найдите код:

from subprocess import Popen, PIPE
import os

print os.getpid()

def proc_func():
    proc = Popen(['ps', '-eo', 'pid,lstart', '-a', '-f'], stdout=PIPE, stderr=PIPE)
    for line in proc.stdout:
        print line.strip()

proc_func()

Итак, когда я регистрируюсь на сервере linux вручную и запускаю сценарий нормально,

29706
PID                  STARTED
28811 Wed Oct  3 06:23:51 2018
13474 Wed Oct  3 06:30:24 2018
13484 Wed Oct  3 06:30:29 2018
13485 Wed Oct  3 06:30:29 2018
29706 Wed Oct  3 07:15:19 2018
29708 Wed Oct  3 07:15:19 2018
12030 Wed Oct  3 06:42:11 2018
21910 Wed Oct  3 06:58:40 2018
3445 Fri Jul 20 02:35:07 2018
3444 Fri Jul 20 02:35:07 2018

Здесь вы можете увидеть список PID: 29706

Но когда я пытаюсь запустить приведенную ниже команду из локального

ssh -T <user_id>@<linux_server_address> "python /path/to/the/code/in/linux/server/proc.py"

Я получаю следующий вывод:

13175
PID                  STARTED
28811 Wed Oct  3 06:23:51 2018
13474 Wed Oct  3 06:30:24 2018
13484 Wed Oct  3 06:30:29 2018
13485 Wed Oct  3 06:30:29 2018
12030 Wed Oct  3 06:42:11 2018
21910 Wed Oct  3 06:58:40 2018
3445 Fri Jul 20 02:35:07 2018
3444 Fri Jul 20 02:35:07 2018

Здесь вы можете выбрать PID: 13175 нет в списке

Я не уверен, почему это происходит.

Спасибо Sourajit

1 Ответ

0 голосов
/ 03 октября 2018

Вы не вызываете ps с флагом -x.Флаг -x необходим для перечисления всех процессов, даже тех, которые не используют терминал совместно с вызовом команды ps или вообще не имеют терминала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...