У меня длинный список удаленных хостов, и я хочу запустить команду оболочки на всех из них. Команда занимает очень много времени, поэтому я хочу запустить команду внутри screen
на удаленном компьютере , немедленно отключившись от каждого, и я хочу, чтобы вывод терминала на пульте дистанционного управления сохранялся после команды выходы. Существует «тег», который должен быть указан для каждой команды в качестве аргумента. Я пытался сделать это с помощью parallel
, примерно так:
$ cat servers.txt
user1@server1.example.com/tag1
user2@server2.example.com/tag2
# ...
$ cat run.sh
grep -v '^#' servers.txt |
parallel ssh -tt '{//}' \
'tag={/}; exec screen slow_command --option1 --option2 $tag other args'
Это не работает: все удаленные процессы запущены, но они не отсоединены (поэтому сеансы s sh оставаться в рабочем состоянии, и моя локальная оболочка не возвращается), и как только каждая команда завершается, ее экран немедленно закрывается, и вывод теряется.
Как мне исправить этот сценарий? Примечание: если это проще сделать с помощью tmux
и / или какой-либо другой программы маршаллинга помимо parallel
, я буду рад услышать ответы, объясняющие, как это сделать таким образом.