Как я могу запустить отдельную команду с 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
сессия.