Как я могу запустить отдельную команду с sudo через ssh?

Я хочу запустить какой-нибудь скрипт через ssh и отсоединить его, чтобы он запускался даже после закрытия ssh. Мне нужно сделать это с sudo.

Я могу запустить какой-нибудь скрипт, но я не могу его отключить. Я попробовал следующие команды:

ssh 10.0.139.120 -t "sudo -b nohup some_script"

а также

ssh 10.0.139.120 -t "sudo nohup some_script &"

Ничего из вышеперечисленного не сработало. Каждый раз, когда я получаю сообщение "Соединение с 10.0.139.171 закрыто". и ни один процесс не работает на сервере.

Я также попытался сделать это с экрана:

ssh 10.0.139.120 -t "sudo screen -S script -md some_script"

Это тоже не сработало, хотя команда работает, когда я вхожу на сервер локально. Как я могу это сделать тогда?

2 ответа

Решение

Я провел небольшой опрос и нашел такой же вопрос по переполнению стека. В любом случае вы должны добавить путь к сценарию или зайти в каталог, где расположен сценарий:

ssh remote-host -t "sudo -b sh -c 'nohup /path/some_script > /dev/null 2>&1 &'"
ssh remote-host -t "sudo -b sh -c 'cd /path; nohup ./some_script > /dev/null 2>&1 &'"

Без sh -c или же bash -c амперсанд & в конце нарушает команду каким-то образом.


Я не мог использовать disown для этого, но setsid работает хорошо:

 ssh remote-host -t 'sudo -b setsid /path/some_script'

Вы можете попробовать использовать disown чтобы избежать остановки процесса после того, как вы закроете вас ssh сессия.

Другие вопросы по тегам