Фоновый процесс, который не имеет ввода-вывода, может быть затронут вводом клавиатуры?

55
8

когда я набираю эту команду в оболочке

ssh 127.0.0.1 "sleep 10" &

Я постоянно нажимаю "Enter" на клавиатуре, и этот процесс будет остановлен следующим образом:

[4] + Остановлен ssh 127.0.0.1 "sleep 10"

если я не нажму "enter", это будет сделано

Зачем?

спросил(а) 2014-01-08T15:40:00+04:00 6 лет, 4 месяца назад
1
Решение
54

См. Страницу руководства:

 -n      Redirects stdin from /dev/null (actually, prevents reading from stdin).  This must be used when ssh is run in the background.  A common trick is
to use this to run X11 programs on a remote machine. For example, ssh -n shadows.cs.hut.fi emacs & will start an emacs on shadows.cs.hut.fi, and
the X11 connection will be automatically forwarded over an encrypted channel. The ssh program will be put in the background. (This does not
work if ssh needs to ask for a password or passphrase; see also the -f option.)

ответил(а) 2014-01-09T07:02:00+04:00 6 лет, 4 месяца назад
38

В моей системе даже без ввода клавиатуры она останавливается:

$ ssh 127.0.0.1 "sleep 10" &
[1] 14986
$ jobs
[1]+ Stopped ssh 127.0.0.1 "sleep 10"

Однако продолжает работать следующее:

$ ssh 127.0.0.1 "sleep 10" </dev/null &
[1] 15580
$ jobs
[1]+ Running ssh 127.0.0.1 "sleep 10" < /dev/null &

Очевидно, что ssh ищет вход и, как фоновый процесс, не может его получить. Перенаправление stdin из /dev/null говорит, что он не беспокоится, и он продолжает работать даже в фоновом режиме.

Обновление: это выше соответствует тому, что @BraveNewCurrency обнаружено в документации: чтобы выполнить ssh в фоновом режиме, вход должен быть перенаправлен из /dev/null, а ssh предоставляет опцию -n которая, фактически, делает именно это.

ответил(а) 2014-01-09T00:48:00+04:00 6 лет, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема