Я использую Ubuntu 16.04, и мне нужно следующее tmux
решение, потому что я хочу запустить процесс тайм-аута, sleep
поскольку в моем конкретном случае я не был удовлетворен at
и столкнулся с ошибкой nohup
(при объединении nohup-sleep
). Теперь, tmux
кажется, лучшая альтернатива, так как он имеет свой собственный механизм отсутствия зависания и фактически работает нормально при ручном использовании (я задаю вопрос только в отношении автоматизации процесса, который я уже могу сделать вручную).
Что мне нужно:
Мне нужен способ сделать следующие 3 действия, все в одной операции:
- Присоединение нового
tmux
сеанса. - Внедрение готового набора команд в этот сеанс, например
(sleep 30m ; rm -rf dir_name ; exit)
. Я бы особенно предпочел многострочный набор, а не один длинный ряд. - Выполнение вышеупомянутой команды устанавливает момент, когда она была закончена, чтобы быть записанной как stdin в новом
tmux
сеансе.
Другими словами, я хочу выполнить кодовый набор в другом tmux
сеансе, который был специально создан для этой цели, но сделать все за одну операцию.
Примечания:
Я стремлюсь сделать все из моей первоначальной рабочей сессии (той, в которой я работаю большую часть времени). Как правило, я не собираюсь посещать только что созданный сеанс, я просто хочу создать его с автоматически выполняемым кодом, и все.
Если возможно, я бы предпочел решение heredoc. Я думаю, что это наиболее эффективно.
источник
1.
есть два способа сделать это, один из них включает в себя сначала создание временного скрипта (который содержит код) и выполнение его с созданием, а второй - наследственность путь.2.
Если работает второй способ (когда каждая строка эха содержит каждую строку кода heredoc), почему мы должны рассматривать это как хак, если это допустимый код Bash? Может быть, потому что строки heredoc отражаются и не выполняются регулярно в heredocs?/dev/shm
. Это также хак, поскольку он более сложен, труден для чтения, понимания и обслуживания, чем просто запись сценария в обычный файл и начало с негоtmux
.1.
ваш вопрос) способ ,tmux new-session -d -s "myTempSession" /opt/my_script.sh
его, он не открывает временный файл для вставки кода ... Мне нужно открыть скрипт непосредственно из текущего сеанса или, по крайней мере, кое-что переместить в новый сеанс, а затем сразу вернуться к текущая сессия. Кстати, я планирую выплатить вознаграждение за всю вашу помощь, так как это меньшее, что я могу сделать, чтобы поблагодарить вас, и я мог бы дать вознаграждение за 11 часов.Также см. Https://serverfault.com/questions/339390/run-command-in-detached-tmux-session для примеров использования команды send-keys на отдельной панели.
источник