Skip to main content

Multiplexed Exec Tool

Project description

muXec

PyPI version

A command line tool for running multiple commands simultaneously while observing their output

        ________________________________________
       /                 /                     /
      /   _ __ ___  _   /__  _____  ___       /
     /---| '_ ` _ \| | | \ \/ / _ \/ __|-----/
    /    | | | | | | |_| |>  <  __/ (__     /
   /     |_| |_| |_|\__,_/_/\_\___|\___|   /
  /                /                      /
 /________________/______________________/

          muXec - Multiplexed Exec

To date, the tool has only been tested on MacOS and xterm with python3.9, and may behave differently in untested setups.

Install

pip install --upgrade muxec

Visit on PyPi

Usage

positional arguments:
  commands              commands to run. if using args, escape entire command with quotes

optional arguments:
  -h, --help            show this help message and exit
  -p PARALLELISM, --parallelism PARALLELISM
                        number of commands to run in parallel (default: 4)
  -x, --xargs           pipe in standard input as input to the command
  -I REPLACE_STR, --replace-str REPLACE_STR
                        when using xargs mode, replace occurrences of replace-str in the command with input, default: {}
  --break-on-fail       immediately break whole execution if any command fails
  -m MODE, --mode MODE  output print mode, either 'plain' or 'tty' (or 'auto' to pick the right one automatically)
  --ts                  prefix each line with timestamp. only applies when running in plain mode

To use from python script:

from muxec.run import run
from muxec.consts import MODE_PLAIN

run(parallelism=4, commands=["cmd", "other"], break_on_fail=True, print_mode=MODE_PLAIN)

Examples

muxec -p 2 'ls -la' 'for i in 1 2 3 4 5 ; do date; sleep 1; done'

gif1

muxec -p 6 'ls -la' 'for i in 1 2 3 4 5 ; do date; sleep 1; done' 'echo echo' 'sleep 3 ; echo exiting ; exit 1' 'python --version' 'df -h'

gif2

cat images.txt | muxec --xargs -p 4 --break-on-fail 'docker pull'

gif3

Open Issues

  • Terminal resize is not handled

  • There is still no full support for all control sequences or for colors (see spellr/culour)

Development

To enable logging: export LOG_HINT_ENVVAR=1. Logs will be written to /tmp/muxec.log (file is overwritten on each run).

PyCharm IDE does not provide the required terminal to run pty, but you can run the program from regular terminal and attach debugger.

Set up Python Debug Server configuration in PyCharm:

debug

Then set export DEBUG_HINT_ENVVAR=1 and run the script: python main.py ...

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

muxec-0.1.14-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file muxec-0.1.14-py3-none-any.whl.

File metadata

  • Download URL: muxec-0.1.14-py3-none-any.whl
  • Upload date:
  • Size: 15.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1

File hashes

Hashes for muxec-0.1.14-py3-none-any.whl
Algorithm Hash digest
SHA256 55803690813c07d513fca3fc8a90fba4bc790640fe3a2216fb3dab3ec298857f
MD5 4f636ef42af189e4de07eb22f21332eb
BLAKE2b-256 89ba39c92126805681047b42512eea5f3a72b170fcdb7f22b94a6d9414c93635

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page