Если ваше разрешение было в минутах/часах/днях, а не в секундах, вы можете использовать 'at':
ssh root@IP 'echo /tmp/script | at now + 5 minutes'
(Требуется работающий демон at 'atd')
РЕДАКТИРОВАТЬ :Если вам нужно разрешение в секундах, вы можете использовать 'sleep', но вам нужно перенаправить stdout и stderr, чтобы ssh разорвал соединение:
ssh root@IP "(sleep 5; /tmp/script) >/dev/null 2>/dev/null &"
Я нашел решение здесь:https://serverfault.com/a/36436
Когда какая-то другая программа печатает foo
в /dev/pts/9
, связь между ttys, оболочка не участвует в обмене, она не может знать, сколько символов было напечатано или даже если был напечатан какой-либо символ. Оболочка по-прежнему считает, что нет символов для стирания. На самом деле, если вы напечатаете foo
на терминале и попытаетесь стереть его клавишей Backspace, это не сработает. Оболочка не пытается стереть то, чего, по ее мнению, нет.
Попробуйте в терминале, где вы использовали команду --norc --noprofile:
bash-4.3$ printf 'some text'
чтобы получить:
some textbash-4.3$
В этот момент возврат ничего не удалит. Также ctrl-u
ничего не сотрет. Если вы наберете несколько символов (, до 11 из них)ctrl-u
удалит только то, что было введено (, как и возврат ). Но когда символов больше 11,команда ctrl-u
вернется к тому, что она считает началом строки (более быстрый способ стереть много символов ), который оставит это приглашение:
some textb
Это можно считать ошибкой IMO (, все еще присутствующей в bash 5.0 ). Но меняется на 20 (18 для OP )символов в bash -5 если опции--norc
--noprofile
не используются (Я не пытался найти причину, не такой уж и важный вопрос ИМНшО ).