Как мне отправить Ctrl-C
для нескольких процессов ssh -t
в объектах Popen ()
?
У меня есть код Python, который запускает скрипт на удаленном хосте:
# kickoff.py
# i call 'ssh' w/ the '-t' flag so that when i press 'ctrl-c', it get's
# sent to the script on the remote host. otherwise 'ctrol-c' would just
# kill things on this end, and the script would still be running on the
# remote server
a = subprocess.Popen(['ssh', '-t', 'remote-host', './script.sh', 'a'])
a.communicate()
Это отлично работает, но мне нужно запустить несколько скриптов на удаленном хосте:
# kickoff.py
a = subprocess.Popen(['ssh', '-t', 'remote-host', './script.sh', 'a'])
b = subprocess.Popen(['ssh', '-t', 'remote-host', './script.sh', 'b'])
a.communicate()
b.communicate()
В результате Ctrl-C
не убивает все надежно, и мой терминал всегда искажается потом (я должен запустить "сброс"). Итак, как я могу убить оба удаленных сценария, когда главный из них убит?
Примечание: я пытаюсь избежать входа на удаленный хост, ища 'script.sh' в списке процессов и отправляя SIGINT на оба процесса. Я просто хочу иметь возможность нажать Ctrl-C
в стартовом скрипте и убить оба удаленных процесса. Менее оптимальное решение может включать детерминированный поиск PID удаленных сценариев, но я не знаю, как это сделать в моей текущей настройке.
Обновление: сценарий, который запускается на удаленном сервере, фактически запускается несколько дочерних процессов, и хотя уничтожение ssh
действительно уничтожает исходный удаленный скрипт (возможно, b / c SIGHUP), дочерние задачи не уничтожаются.mostafa @ ubuntu : ~ / oooark $ cmake.
Ошибка CMake в CMakeLists.txt: 19 (сообщение): сборки в исходном коде не допускаются. Для ...
Я попытался скомпилировать проект с помощью cmake, но получил следующую ошибку:
mostafa@ubuntu:~/oooark$ cmake .
CMake Error at CMakeLists.txt:19 (message):
In-source builds are not allowed.
Например, запустите:
rm CMakeCache.txt
mkdir build
cd build
cmake ..
make
-- Configuring incomplete, errors occurred!
Кто-нибудь может мне помочь?