<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; Запуск и управление терминалом из Python или Bash]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=38736</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=38736&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Запуск и управление терминалом из Python или Bash».]]></description>
		<lastBuildDate>Sat, 01 Apr 2017 07:58:50 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Запуск и управление терминалом из Python или Bash]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454104#p454104</link>
			<description><![CDATA[<div class="quotebox"><cite>dyasny пишет:</cite><blockquote><p>вот в этом и проблема</p></blockquote></div><p>Для меня это не проблема, а возможность учиться&nbsp; <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /><br /><strong>*** Добавлено: 01.04.2017 10:58:50 ***</strong></p><div class="quotebox"><cite>xxblx пишет:</cite><blockquote><p>Меня интересует зачем запускать 100500 терминалов или вкладок в терминале для отслеживания процесса. Какой прикладной результат, почему такое решение, а не другие популярные для таких задач</p></blockquote></div><p>Какой опыт такие и решения&nbsp; <img src="https://linuxforum.ru/img/smilies/ag.gif" alt="ag" /> </p><p>Я думал как можно реализовать такую задачу, и единственное что мне пришло в голову, это то чему посвящена эта тема)))<br />Надеюсь, я ответил на ваш вопрос: &quot;почему такое решение&quot;&nbsp; <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /><br /></p>]]></description>
			<author><![CDATA[null@example.com (i_love_linux)]]></author>
			<pubDate>Sat, 01 Apr 2017 07:58:50 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454104#p454104</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запуск и управление терминалом из Python или Bash]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454086#p454086</link>
			<description><![CDATA[<div class="quotebox"><cite>xxblx пишет:</cite><blockquote><p>Я бы для абстрактной цели с запуском кучи скриптов выбрал какое-то решение, управляющее job-ами, и скормил бы туда все эти скрипты.</p></blockquote></div><p> <img src="https://linuxforum.ru/img/smilies/az.gif" alt="az" /></p>]]></description>
			<author><![CDATA[null@example.com (dyasny)]]></author>
			<pubDate>Fri, 31 Mar 2017 07:05:05 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454086#p454086</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запуск и управление терминалом из Python или Bash]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454085#p454085</link>
			<description><![CDATA[<div class="quotebox"><cite>i_love_linux пишет:</cite><blockquote><p>Чтобы вручную не запускать каждый файл отдельно в терминале &nbsp; <br />А то их может быть и 100 штук)))))<br />Пока максимум 30 было (и это только начало)<br />Как то не доставляет мне удовольствия запускать каждый день 30 скриптов в терминале.<br />Зачем это делать вручную, если можно автоматизировать этот процесс </p></blockquote></div><p>Это очевидно итак. Меня интересует зачем запускать 100500 терминалов или вкладок в терминале для отслеживания процесса. Какой прикладной результат, почему такое решение, а не другие популярные для таких задач<br />Я бы для абстрактной цели с запуском кучи скриптов выбрал какое-то решение, управляющее job-ами, и скормил бы туда все эти скрипты. Ну или, как минимум, добавил адекватное логгирование с алертами в эти десятки скриптов как-нибудь простым путем (без необходимости описывать логгирование в каждом скрипте), чтобы избежать необходимости сидеть и смотреть в терминалы. </p><p>По этому мне интересна исходная проблема, почему нужно смотреть именно в терминал. Может быть тут какая-то нестандартная интересная задача.</p>]]></description>
			<author><![CDATA[null@example.com (xxblx)]]></author>
			<pubDate>Fri, 31 Mar 2017 06:54:03 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454085#p454085</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запуск и управление терминалом из Python или Bash]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454082#p454082</link>
			<description><![CDATA[<div class="quotebox"><cite>i_love_linux пишет:</cite><blockquote><p>Я и слов то таких не знаю </p></blockquote></div><p>вот в этом и проблема</p>]]></description>
			<author><![CDATA[null@example.com (dyasny)]]></author>
			<pubDate>Thu, 30 Mar 2017 19:50:07 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454082#p454082</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запуск и управление терминалом из Python или Bash]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454081#p454081</link>
			<description><![CDATA[<div class="quotebox"><cite>ormorph пишет:</cite><blockquote><p>А так на другом компе глянул gnome-terminal-3.18 в меню вообще нет создать новую вкладку. и создание новых вкладок не работает.</p></blockquote></div><p>Как по мне, это лишнее))<br />Мне гораздо удобнее и приятнее пользоваться горячими клавишами&nbsp; <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /><br /><strong>*** Добавлено: 30.03.2017 22:29:03 ***</strong></p><div class="quotebox"><cite>dyasny пишет:</cite><blockquote><p>зачем такие сложности? берем jenkins или rundeck</p></blockquote></div><p>Я и слов то таких не знаю&nbsp; <img src="https://linuxforum.ru/img/smilies/ag.gif" alt="ag" /></p><p><strong>*** Добавлено: 30.03.2017 22:35:30 ***</strong></p><div class="quotebox"><cite>ormorph пишет:</cite><blockquote><p>не портить зрение</p></blockquote></div><p>Хм, не думаю что раз-второй (за весь день) пробежаться по вкладкам это сильно негативно скажется на зрении.<br />Полагаю что от &quot;свитча&quot; в том же браузере к примеру, больше вреда&nbsp; <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /></p>]]></description>
			<author><![CDATA[null@example.com (i_love_linux)]]></author>
			<pubDate>Thu, 30 Mar 2017 19:35:30 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454081#p454081</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запуск и управление терминалом из Python или Bash]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454080#p454080</link>
			<description><![CDATA[<p><strong>DiabloPC</strong>, отлично&nbsp; <img src="https://linuxforum.ru/img/smilies/bp.gif" alt="bp" />&nbsp; Спасибо большое&nbsp; <img src="https://linuxforum.ru/img/smilies/bi.gif" alt="bi" /> <br />Работает как мне нужно))))))))))))<br /><strong>*** Добавлено: 30.03.2017 22:04:46 ***</strong></p><div class="quotebox"><cite>ormorph пишет:</cite><blockquote><p>Ну если каждый скрипт python сам по себе вызывает командный интерпретатор python, т.е. файлу даны права на выполнение и в начале присутствует строчка типа #/usr/bin/python либо #/usr/bin/env python, то в начале указывать командный интерпретатор не обязательно.</p></blockquote></div><p>Хм, не знал))<br />Но использую только один вариант, в самих скриптах прописана строчка <strong>#!/usr/bin/python3</strong><br />Спасибо за подсказку, на будущее&nbsp; <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /></p><p><strong>*** Добавлено: 30.03.2017 22:09:53 ***</strong></p><div class="quotebox"><cite>xxblx пишет:</cite><blockquote><p>Какой прикладной результат у этой задачи, зачем это нужно</p></blockquote></div><p>Чтобы вручную не запускать каждый файл отдельно в терминале&nbsp; <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /> <br />А то их может быть и 100 штук)))))<br />Пока максимум 30 было (и это только начало)</p><p>Как то не доставляет мне удовольствия запускать каждый день 30 скриптов в терминале.<br />Зачем это делать вручную, если можно автоматизировать этот процесс&nbsp; <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /><br /></p>]]></description>
			<author><![CDATA[null@example.com (i_love_linux)]]></author>
			<pubDate>Thu, 30 Mar 2017 19:09:53 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454080#p454080</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запуск и управление терминалом из Python или Bash]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454079#p454079</link>
			<description><![CDATA[<div class="quotebox"><cite>ormorph пишет:</cite><blockquote><p>А для тестирования большого количества скриптов, написанных разными людьми...</p></blockquote></div><p>именно так</p><div class="quotebox"><cite>ormorph пишет:</cite><blockquote><p>Не ужели jobs быстрее создать для каждого скрипта проще, чем просто поместить все это кучей в отдельный каталог?</p></blockquote></div><p>наделать jobs сейчас - займет время, но при уже готовой инфраструктуре, это занимает секунды. Плюс если разные люди пишут скрипты, можно дать им доступ и пусть сами создают jobs, запускают их, а админ/тимлид/етц может просто смотреть на дешборд и видеть сколько есть, и сколько пашут/падают</p><div class="quotebox"><cite>ormorph пишет:</cite><blockquote><p>Хотя для этого использовать вкладки рутинная вещь, проще всю статистику собирать скриптом а не портить зрение, хотя убивать на стадии тестирования, вкладками удобно.</p></blockquote></div><p>еще проще смотреть на дэшборд дженкинса, и видеть что зеленое а что нет, глаза будут здоровее чем у того кто бегает по куче табов, гарантированно.</p>]]></description>
			<author><![CDATA[null@example.com (dyasny)]]></author>
			<pubDate>Thu, 30 Mar 2017 14:20:33 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454079#p454079</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запуск и управление терминалом из Python или Bash]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454078#p454078</link>
			<description><![CDATA[<div class="quotebox"><cite>dyasny пишет:</cite><blockquote><p>зачем такие сложности? берем jenkins или rundeck, создаем в нем jobs для каждого из нужных скриптов, запускаем и смотрим на результат или на консольный выхлоп. Так все работают а не на кучке вкладок в терминале, это же абсурд...</p></blockquote></div><p>А для тестирования большого количества скриптов, написанных разными людьми...<br />Не ужели jobs быстрее создать для каждого скрипта проще, чем просто поместить все это кучей в отдельный каталог?<br />Хотя для этого использовать вкладки рутинная вещь, проще всю статистику собирать скриптом а не портить зрение, хотя убивать на стадии тестирования, вкладками удобно.<br />Лучше уж услышать что скажет <strong>ТС</strong>, для чего такие сложности.</p>]]></description>
			<author><![CDATA[null@example.com (ormorph)]]></author>
			<pubDate>Thu, 30 Mar 2017 12:34:44 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454078#p454078</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запуск и управление терминалом из Python или Bash]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454077#p454077</link>
			<description><![CDATA[<p>зачем такие сложности? берем jenkins или rundeck, создаем в нем jobs для каждого из нужных скриптов, запускаем и смотрим на результат или на консольный выхлоп. Так все работают а не на кучке вкладок в терминале, это же абсурд...</p>]]></description>
			<author><![CDATA[null@example.com (dyasny)]]></author>
			<pubDate>Thu, 30 Mar 2017 11:41:22 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454077#p454077</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запуск и управление терминалом из Python или Bash]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454075#p454075</link>
			<description><![CDATA[<div class="quotebox"><cite>xxblx пишет:</cite><blockquote><p>А можно вопрос не по теме? Какой прикладной результат у этой задачи, зачем это нужно? Не троллинга ради, действительно интересно.</p></blockquote></div><p>В рамках телепатии, на ум приходит только одна мысль, для <strong>демонстрации</strong> возможностей и т.п.<br />А так на другом компе глянул gnome-terminal-3.18 в меню вообще нет создать новую вкладку. и создание новых вкладок не работает.</p><p>Как вариант из легковесных терминалов можно использовать <strong>roxterm</strong>, например так:</p><div class="codebox"><pre><code>#/bin/bash

DIR=$(pwd)/d

test_func() {
file=$1
$file
if ! [ $? -eq 0 ] ; then
    sleep 5s
    test_func $file
fi
}

export -f test_func

roxterm -m -e &quot;bash -c &#039;echo Start!;read&#039;&quot; &amp;
sleep 0.4s

echo $DIR
for i in $DIR/*
do
roxterm --tab -e &quot;bash -c &#039;test_func $i; read&#039;&quot;
done</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (ormorph)]]></author>
			<pubDate>Thu, 30 Mar 2017 10:59:28 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454075#p454075</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запуск и управление терминалом из Python или Bash]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454071#p454071</link>
			<description><![CDATA[<p>А можно вопрос не по теме? Какой прикладной результат у этой задачи, зачем это нужно? Не троллинга ради, действительно интересно.</p>]]></description>
			<author><![CDATA[null@example.com (xxblx)]]></author>
			<pubDate>Thu, 30 Mar 2017 07:31:06 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454071#p454071</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запуск и управление терминалом из Python или Bash]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454070#p454070</link>
			<description><![CDATA[<p>Ну если каждый скрипт python сам по себе вызывает командный интерпретатор python, т.е. файлу даны права на выполнение и в начале присутствует строчка типа <strong>#/usr/bin/python</strong> либо <strong>#/usr/bin/env python</strong>, то в начале указывать командный интерпретатор не обязательно.</p><p><strong>gnome-terminal</strong> под рукой нет, но в <strong>mate-terminal </strong>проверил работает норм, по идее в <strong>gnome-terminal</strong>&nbsp; не должно отличаться так как <strong>mate-terminal</strong> его форк.<br />Пример скрипта:<br /></p><div class="codebox"><pre><code>#/bin/bash

DIR=/путь

###
#функция запускает скрипт, затем
#перезапускает скрипт в случае аварийного завершения
###
test_func() {
file=$1
$file
if ! [ $? -eq 0 ] ; then
    sleep 5s
    test_func $file
fi
}

export -f test_func

mate-terminal -e &quot;bash -c &#039;echo Start!;read&#039;&quot; &amp;
sleep 0.4s

for i in $DIR/*.py
do
mate-terminal --tab -e &quot;bash -c &#039;test_func $i; read&#039;&quot;
done</code></pre></div><p>При желании перезапуск скрипта в случае аварийного завершения можно сделать интерактивным.</p>]]></description>
			<author><![CDATA[null@example.com (ormorph)]]></author>
			<pubDate>Thu, 30 Mar 2017 04:53:22 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454070#p454070</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запуск и управление терминалом из Python или Bash]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454069#p454069</link>
			<description><![CDATA[<p><strong>i_love_linux</strong>, с помощью xdotool решить этот вопрос можно, но лучше так не делать, тем более что всё необходимое есть в самом терминале.</p>]]></description>
			<author><![CDATA[null@example.com (Ampermetr)]]></author>
			<pubDate>Thu, 30 Mar 2017 01:06:45 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454069#p454069</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запуск и управление терминалом из Python или Bash]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454068#p454068</link>
			<description><![CDATA[<p><strong>i_love_linux</strong>, А если пойти в обратном порядке??<br /></p><div class="codebox"><pre><code>#!/bin/bash
DIR=/some/folder/

CMD_LIST=$(for i in &quot;$DIR&quot;*.py
do
echo --tab --command=\&quot;python3 $i\&quot;
done)
echo $CMD_LIST
eval gnome-terminal $CMD_LIST</code></pre></div><p>А в настройках gnome-terminal сделать вотЬ так:</p><br /><p><a href="http://piccy.info/view3/11015695/e3a9dcf2323c4959d3c2b3c7894ff892/"><span class="postimg"><img src="http://i.piccy.info/i9/7f7d86a71ce7bd480ef1fce118590e95/1490827483/5488/1043479/Screenshot_20170330_011525_240.jpg" alt="http://i.piccy.info/i9/7f7d86a71ce7bd480ef1fce118590e95/1490827483/5488/1043479/Screenshot_20170330_011525_240.jpg" /></span></a><a href="http://i.piccy.info/a3c/2017-03-29-22-44/i9-11015695/240x128-r"><span class="postimg"><img src="http://i.piccy.info/a3/2017-03-29-22-44/i9-11015695/240x128-r/i.gif" alt="http://i.piccy.info/a3/2017-03-29-22-44/i9-11015695/240x128-r/i.gif" /></span></a><br /> <a href="http://piccy.info/view3/11015696/f03176bd8d9c5a1bd8a36097f1b6a443/"><span class="postimg"><img src="http://i.piccy.info/i9/24a631ade50aa66e053400a13ad1ed0d/1490827575/4896/1043479/Screenshot_20170330_011631_240.jpg" alt="http://i.piccy.info/i9/24a631ade50aa66e053400a13ad1ed0d/1490827575/4896/1043479/Screenshot_20170330_011631_240.jpg" /></span></a><a href="http://i.piccy.info/a3c/2017-03-29-22-46/i9-11015696/240x108-r"><span class="postimg"><img src="http://i.piccy.info/a3/2017-03-29-22-46/i9-11015696/240x108-r/i.gif" alt="http://i.piccy.info/a3/2017-03-29-22-46/i9-11015696/240x108-r/i.gif" /></span></a><br /> <a href="http://piccy.info/view3/11015697/ff50914a999f96e637c5728392d14068/"><span class="postimg"><img src="http://i.piccy.info/i9/c48667f04826f0b5b5ce91f7374633d9/1490827613/5784/1043479/Screenshot_20170330_012102_240.jpg" alt="http://i.piccy.info/i9/c48667f04826f0b5b5ce91f7374633d9/1490827613/5784/1043479/Screenshot_20170330_012102_240.jpg" /></span></a><a href="http://i.piccy.info/a3c/2017-03-29-22-46/i9-11015697/240x117-r"><span class="postimg"><img src="http://i.piccy.info/a3/2017-03-29-22-46/i9-11015697/240x117-r/i.gif" alt="http://i.piccy.info/a3/2017-03-29-22-46/i9-11015697/240x117-r/i.gif" /></span></a></p>]]></description>
			<author><![CDATA[null@example.com (DiabloPC)]]></author>
			<pubDate>Wed, 29 Mar 2017 22:47:01 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454068#p454068</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запуск и управление терминалом из Python или Bash]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=454067#p454067</link>
			<description><![CDATA[<div class="quotebox"><cite>DiabloPC пишет:</cite><blockquote><p>При запуске gnome-terminal с параметром -е после выполнения переданой команды окно/вкладка автоматом закрывается.</p></blockquote></div><p>Ага, не знал что закрывается) Поэтому и не понял что произошло.<br />Сейчас сделал цикл в каждом скрипте(для эмуляции долгого процесса), и вот что получилось:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p><a href="http://radikal.ru/big/d5j8hrwwh85lr"><span class="postimg"><img src="http://s010.radikal.ru/i314/1703/ef/1c4aad44a301t.jpg" alt="http://s010.radikal.ru/i314/1703/ef/1c4aad44a301t.jpg" /></span></a></p></div></div><p>Вместо открытия новой вкладки, открывается новое окно в каждой итерации цикла.<br />Но это еще не все, мне не нужно чтобы окно закрывалось при возникновении какой либо ошибки или исключения, а нужно чтобы я смог отреагировать на это и запустить например повторно скрипт в вкладке.</p><p>Я сейчас наткнулся в гугле на утилиту xdotool.<br />Почитал ее man, и походу это то что мне нужно.<br />По крайней мере насколько я понял(у меня не очень с английским)</p><p>Теперь главная задача: открыть терминал и получить идентификатор его окна, дабы можно было им манипулировать в дальнейшем.<br />Как открыть окно терминала уже известно, а вот как получить сразу его id - нет.</p><p>UPD: Или может есть способ открыть окно указав свой идентификатор или какое то уникальное имя окна?</p>]]></description>
			<author><![CDATA[null@example.com (i_love_linux)]]></author>
			<pubDate>Wed, 29 Mar 2017 21:16:16 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=454067#p454067</guid>
		</item>
	</channel>
</rss>
