Назад | Перейти на главную страницу

Как я могу получить su screen PID в Debian 8?


Я хочу запустить эту команду другим пользователем (как и su): screen -ALmdS server_mta ./mta-server -n

Все нормально: su - server_2 -c 'screen -ALmdS server_mta ./mta-server -n

Но мне нужен PID экрана, но когда я пытаюсь получить, я получаю другие PID.

Я пробовал этот метод:

su - server_2 -c "screen -ALmdS server_mta ./mta-server -n >>~/outlog 2>&1 & echo \$! "

Но он дал 5996 PID, но когда я проверял его с помощью ps ax |grep server_mta результат был:

5997 ?        Ss     0:00 SCREEN -ALmdS server_mta ./mta-server -n
6023 pts/45   S+     0:00 grep server_mta


Я пробовал эту команду:

su - server_2 -c 'screen -ALmdS server_mta ./mta-server -n > /dev/null & ps ax |grep  $! '

И вот результат:

6829 ?        R      0:00 screen -ALmdS server_mta ./mta-server -n
6831 ?        S      0:00 grep 6829

Я думал, что получил PID, и когда я снова проверил ps ax |grep server_mta, У меня есть другой PID. И разница здесь в том, что на экране строчные буквы, и когда я проверяю ps ax |grep server_mta, это прописные буквы.



Как я могу получить PID моего экранного процесса, который запускается другим пользователем с su?

Я нашел решение:

su - server_2 -c "screen -ALmdS server_mta ./mta-server -n  >>/home/out 2>&1"; pgrep -u server_2 |  xargs ps -p | grep SCREEN | cut -f1 -d' ' | head -n 1

Это возвращает PID экрана.