2016-01-20 1 views
1

Мне нужен идентификатор процесса процесса (здесь sleep 20), запущенный удаленно через SSH и sudo.Получить PID процесса, начатого с sudo через ssh

date прилагается для иллюстрации продолжительности соединения SSH. Разумеется, без подключения к моей удаленной машине тоже нет процесса.

$ date; ssh pc1 "sleep 20 & echo \$!"; date       # works 
Mi 20. Jan 16:18:29 CET 2016 
11540 
Mi 20. Jan 16:18:50 CET 2016 
$ date; ssh pc1 "echo password | sudo -S sleep 20"; date    # works 
Mi 20. Jan 16:20:44 CET 2016 
[sudo] password for lab: Mi 20. Jan 16:21:04 CET 2016 
$ date; ssh pc1 "echo password | sudo -S sleep 20 & echo \$!"; date # does not 
Mi 20. Jan 16:21:55 CET 2016 
11916 
Mi 20. Jan 16:21:56 CET 2016 

На второй машине последняя, ​​полная команда работает отлично:

$ date; ssh pc2 "echo password | sudo -S sleep 20 & echo \$!"; date 
Mi 20. Jan 16:23:40 CET 2016 
6035 
[sudo] password for lab: Mi 20. Jan 16:24:01 CET 2016 

Любое предположение, почему это различное поведение двух машин?

Информация: Я знаю риск четких паролей, но это общая учетная запись в изолированной тестовой сети.

+0

Что вы подразумеваете под "не работает"? –

+1

Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что он более подходит для [Unix & Linux] (http://unix.stackexchange.com/) Stack Exchange. –

+0

Это означает, что мой процесс не запущен на удаленной машине. Либо он убит из-за закрытой связи, либо наоборот. – Chickenmarkus

ответ

0

Похоже, вопрос с неполными зависимостей процесса. С некоторыми дополнительными миллисекундами связь (и процесс) поддерживается все время.

$ date; ssh pc1 "echo password | sudo -S sleep 20 & echo \$! && sleep 0.01"; date 
Do 21. Jan 14:50:39 CET 2016 
[sudo] password for lab: 6841 
Do 21. Jan 14:51:00 CET 2016 
0

Что-то вроде этого?

$ remote_pid=$(ssh [email protected] 'sleep 20 > /dev/null 2>&1 & echo $!') 
$ echo $remote_pid 
13878 

или ...

$ remote_pid=$(ssh [email protected] 'echo secret | sudo -S sleep 20 > /tmp/log 2>&1 & echo $!') 
+0

Где вводится пароль пользователя для выполнения sudo? – Chickenmarkus

+0

см. Обновленную версию здесь выше .... – mauro

+0

За исключением выходного канала в файл, он точно такой же, как у меня, и не работает. В файле журнала есть только приглашение для пароля sudo (из stderr). – Chickenmarkus