Як я можу використовувати ssh для запуску команди на віддаленій машині Unix та виходу до завершення команди?


17

Як я можу використовувати ssh для запуску команди на машині Unix та виходу до завершення команди?

Наприклад, якщо я набираю

ssh localhost 'sleep 60 &'

ssh висить на моєму терміналі, поки сон не завершиться, навіть якщо сон працює у фоновому режимі.


Ви, мабуть, хочете &поза цитатами.
Бред Гілберт

1
Ні, це просто ставить весь комплект і кабудле на задній план, і я не можу ввести свій пароль.
Річард Хоскінс

Відповіді:


19

SSH має перемикач -f, який робить точно так само, як використання nohup для вашого клієнта, але дає можливість ssh запитати пароль. Використовуйте його так:

ssh localhost -f 'command'

Але : SSH все ще буде працювати у фоновому режимі, тому якщо ви вимкнете клієнт до того, як команда на сервері закінчиться, вона буде перервана. Якщо ви хочете, щоб ssh-з'єднання було закрито після виконання команди, ви можете використовувати екран на стороні сервера:

ssh localhost -f 'screen -d -m sleep 60'

Якщо я виконаю команду 'ssh remotemachine -n', що триває,> withremoteredirects 2> & 1 </ dev / null & ', і клієнт закриє, чи буде команда завершена?
Річард Хоскінс

Афаїк ні. I ssh-з'єднання втрачено, демон ssh повинен припинити всі термінали "всередині" ssh. Відповідь, оскільки термінал запустив команду, до якої вони будуть припинені, оскільки їх батьківський процес припинено. Але варто спробувати;)
Мартін

А як щодо "nohup" замість "екрана" на стороні сервера?
Річард Хоскінс

@Brad Gilbert Нічого? Я можу придумати декілька речей, але одне, що не має спільного, це те, що "екран" доступний не на всіх POSIX-машинах.
Річард Хоскінс


6

Використовуйте перенаправлення nohup, stdout / stderr та виконайте команду у фоновому режимі:

 nohup ssh localhost 'sleep 60' >/dev/null 2>/dev/null &

EDIT: Або ще краще, просто використовуйте параметр ssh's -f:

ssh -f localhost 'sleep 60'

Можливо, ви могли б поєднати два переадресації &>/dev/null.
Бред Гілберт

@BradGilbert Цей синтаксис не сумісний з POSIX; важко сперечатися за жертву сумісності, щоб зберегти кілька символів.
трійка

2

Або після входу в систему ssh, почніть, screenякщо ви хочете повернутися пізніше, щоб подивитися на хід чи результат.


Ви також можете використовувати "tmux", який мені особисто простіше налаштувати. Обидва програми в значній мірі еквівалентні, кожен з яких має свої плюси і мінуси.
mzuther
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.