ii/ok/repto/eQdRFTn4fwxYAtBKfn1H plan.9 1612475339 hugeping ping,1 hugeping Запуск нового экземпляра acme в plan9port Если запустить acme из plan9port, а затем попробовать запустить его снова, то получим ошибку, вроде такой: > 9pserve: announce unix!/tmp/ns.peter.:0/acme: Address already in use acme: can't post service: 9pserve failed Поэтому, у меня есть простой скрипт, который запускает acme если он ещё не был запущен. А в последующие разы открывает файл через plumber в уже существующем экземпляре acme. Выглядит скрипт так: ==== #!/bin/sh 9 PAGER=nobs MANPAGER=nobs # Default font for Plan 9 programs. font=/mnt/font/GoMono/14a/font # Equivalent variables for rc(1). home=$HOME prompt="$ " # if you want to use rc instead of your shell within acme, uncomment the following line shell=rc user=$USER export \ font\ home\ shell\ prompt\ user\ PAGER\ MANPAGER if ! pidof plumber >/dev/null; then plumber fi if pidof acme >/dev/null; then plumb -d edit "$@" else acme -f /mnt/font/Iosevka/14a/font "$@" & fi ==== Но иногда хочется все-таки запустить ещё один (или не один) acme! Оказывается, это возможно! ==== #!/bin/sh export NAMESPACE=`mktemp -d /tmp/acmeXXXX` 9 PAGER=nobs MANPAGER=nobs # Default font for Plan 9 programs. font=/mnt/font/GoMono/14a/font # Equivalent variables for rc(1). home=$HOME prompt="$ " # if you want to use rc instead of your shell within acme, uncomment the following line shell=rc user=$USER export \ font\ home\ shell\ prompt\ user\ PAGER\ MANPAGER plumber "$NAMESPACE" acme -f /mnt/font/Iosevka/14a/font "$@" for p in `pidof plumber`; do if cat /proc/$p/cmdline | grep -q "$NAMESPACE"; then kill $p break fi done rmdir $NAMESPACE ==== Скрипт запустит столько acme, сколько понадобится.