Помимо предложенного ответа, я использую следующую команду:
nohup ./scanner.py -flag1 flag1value -flag2 flag2value &
для создания нового экземпляра. Для просмотра всех запущенных экземпляров scanner.py
я использую:
ps aux | grep scanner.py
Для уничтожения конкретного экземпляра я использую:
kill -9 {PID}
, где {PID}
получается из команды ps aux
, например, kill -9 1234
-121--175524-
Они называются операторами оболочки. Я приведу краткий обзор наиболее распространенных среди двух основных классов, управляющих операторов и операторов перенаправления , и как они работают в отношении оболочки bash.
В командном языке оболочки маркер, который выполняет функцию управления.
Это один из следующих символов:& & ();;; | | |
И | &
в bash.
A !
является не оператором управления, а зарезервированным словом . Он становится логическим оператором NOT [отрицания] внутри Арифметических выражений и внутри тестовых конструкций (при этом требуется разделитель пространства).
;
: Будет выполняться одна команда за другой, независимо от результата первой.
command1; command2
Сначала выполняется команда command1
на переднем плане, после чего выполняется команда command2
.
Новая строка, которая не находится в последовательности литерале или после определенных ключевых слов, не эквивалентна оператору точки с запятой. Список ;
разделенных простых команд по-прежнему является списком - как и в синтаксическом анализаторе оболочки, необходимо продолжать чтение простых команд, которые следуют за ;
разделенных простых команд перед выполнением, в то время как новая строка может разделить весь список команд или список списков. Разница тонкая, но сложная: учитывая, что оболочка не имеет предыдущего императива для чтения в данных, следующих за новой линией, новая линия отмечает точку, где оболочка может начать оценивать простые команды, которые она уже читала, в то время как ;
полукольца не.
&
: Будет выполнена команда в фоновом режиме, позволяющая продолжить работу в той же оболочке.
command1 & command2
Здесь command1
запускается в фоновом режиме и command2
запускается на переднем плане немедленно, не дожидаясь выхода command1
.
Новая строка после command1
является необязательной.
& &
: используются для создания списков AND, они позволяют выполнять одну команду только в случае успешного выхода другой команды.
command1 && command2
Здесь command2
будет выполняться после завершения command1
и только , если command1
был успешным (если его код выхода был 0). Обе команды выполняются на переднем плане.
Эта команда также может быть записана
, если команда1
затем команд2
else false
fi
или просто , если command1; затем command2; fi
, если статус возврата игнорируется.
| |
: Используется для создания списков ИЛИ и позволяет выполнять одну команду только в случае неудачного выхода другой команды.
command1 || command2
Здесь command2
будет выполняться только в случае сбоя command1
(если возвращено состояние выхода, отличное от 0). Обе команды выполняются на переднем плане.
Эта команда также может быть записана
, если команда1
тогда true
команда else 2
fi
или более коротким способом , если! command1; затем command2; fi
.
Обратите внимание, что & &
и | |
являются левоассоциативными; Для получения дополнительной информации см. Приоритет логических операторов оболочки & &, | .
!
: Это зарезервированное слово, которое действует как оператор «не» (но должно иметь разделитель), используемое для отмены возвращаемого состояния команды - return 0, если команда возвращает ненулевое состояние, return 1, если возвращает состояние 0. Также логический NOT для утилиты test
.
! command1
[ ! a = a]
И истинный оператор NOT в арифметических выражениях:
$ echo $ (! 0)) $ ((! 23))
1 0
|
: оператор трубы передает выходные данные одной команды в качестве входных данных другой. Команда, созданная из оператора трубопровода, называется трубопроводом .
command1 | command2
Любой вывод, напечатанный command1
, передается в качестве ввода в command2
.
| &
: Это краткий текст для 2 > & 1 |
в bash и zsh. Он передает как стандартные выходные данные, так и стандартную ошибку одной команды в качестве входных данных другой.
command1 | & command2
;
используется исключительно для обозначения конца оператора обращения . Ksh, bash и zsh также поддерживают ; &
для перехода к следующему случаю и ; &
(не в ATT ksh), чтобы продолжить и проверить последующие случаи.
(
и )
используются для группирования команд и запуска их в субкорпусе. {
и }
также группируют команды, но не запускают их во вложенном корпусе. См. этот ответ для обсуждения различных типов скобок, скобок и фигурных скобок в синтаксисе оболочки.
В командном языке оболочки маркер, выполняющий функцию перенаправления. Это один из следующих символов:
> | > &
Они позволяют управлять вводом и выводом команд. Они могут отображаться в любом месте простой команды или следовать команде. Перенаправления обрабатываются в порядке их появления слева направо.
: ввод команды.
команда
Выше будет выполнена команда
для содержимого file.txt
.
: то же самое, что и выше, но файл открыт в режиме чтение + запись вместо команды только чтение :
file.txt
Если файл не существует, он будет создан.
Этот оператор используется редко, поскольку команды обычно только считывают из своего stdin, хотя он может пригодиться в ряде конкретных ситуаций .
>
: направляет выходные данные команды в файл.
команда > out.txt
Выходные данные команды
сохраняются как out.txt
. Если файл существует, его содержимое будет перезаписано, а если он не существует, он будет создан.
Этот оператор также часто используется для выбора способа печати: стандартная ошибка или стандартный вывод :
команда > out.txt 2 > error.txt
В приведенном выше примере >
перенаправляет стандартный вывод, а 2 >
перенаправляет стандартную ошибку. Вывод также можно перенаправить с помощью 1 >
, но, поскольку это значение по умолчанию, значение 1
обычно опускается и записывается просто как >
.
Таким образом, для выполнения команды
на file.txt
и сохранения ее выходных данных в out.txt
и любых сообщений об ошибках в error.txt
необходимо выполнить команду
out.txt 2 > error.txt
> |
: Выполняет то же самое, что и >
, но перезаписывает цель, даже если оболочка настроена на отказ от перезаписи (с помощью set -C
или set -o noclobber
).
команда > | out.txt
Если out.txt
существует, выходные данные команды
заменяют ее содержимое. Если он не существует, он будет создан.
> >
: Выполняется то же самое, что и >
, за исключением того, что при наличии целевого файла добавляются новые данные.
команда > > out.txt
Если файл out.txt
существует, к нему добавляется команда
после того, что уже находится в нем. Если он не существует, он будет создан.
& >
, > &
, > > &
и & > >
: (нестандартно). Перенаправление как стандартных ошибок, так и стандартных выходных данных, замена или добавление соответственно.
команда & > out.txt
Как стандартная ошибка, так и стандартный вывод команды
будут сохранены в файле out.txt
, перезаписав его содержимое или создав его, если он не существует.
команда & > > out.txt
Как указано выше, за исключением того, что при наличии out.txt
к нему будут добавлены выходные данные и ошибка команды
.
Вариант & >
происходит из bash
, в то время как вариант > &
происходит из csh (десятилетиями ранее).Они конфликтуют с другими операторами оболочки POSIX и не должны использоваться в портативных скриптах sh
.
: Вот документ. Часто используется для печати многострочных строк.
команда
Здесь команда
принимает все до тех пор, пока не обнаружит следующее вхождение WORD
, Text
в приведенном выше примере в качестве ввода. Хотя WORD
часто является EoF
или его вариациями, это может быть любая буквенно-цифровая (и не только) строка, которая вам нравится. При кавычке WORD
текст в данном документе обрабатывается буквально, и расширения не выполняются (например, для переменных). Если он не указан в кавычках, переменные будут развернуты. Дополнительные сведения см. в руководстве .
Если вы хотите передать выходные данные команды непосредственно в другую команду или команды, необходимо поместить канал в ту же строку, что и
, нельзя поместить его после завершения WORD или в следующую строку. Например, команда
: Здесь строки, похожие на здесь документы, но предназначенные для одной строки. Они существуют только в порту Unix или rc (где он возник), zsh, некоторых реализациях ksh, yash и bash.
команда
То, что задано как WORD
, расширяется, и его значение передается в качестве ввода в команду
. Это часто используется для передачи содержимого переменных в качестве входных данных в команду. Например:
$ foo = "bar"
$ sed 's/a/A/'
Для закрытия или дублирования дескрипторов файлов можно использовать несколько других операторов ( > & -
, x > & y
x ). Для получения более подробной информации см. соответствующий раздел руководства по оболочке ( здесь , например, для bash).
Это относится только к наиболее распространенным операторам оболочек типа Борна. Некоторые оболочки имеют несколько собственных дополнительных операторов перенаправления.
Ksh, bash и zsh также имеют конструкции ,
> (...)
и = (...)
(последняя только в zsh
). Это не перенаправления, а замена процесса .
tmux
имеет таблицу шаблонов escape-последовательностей в файле xterm-keys.c
, так что он может поддерживать модифицированные специальные ключи в стиле xterm. Он соответствует этому шаблону:
{ '\t', "\033[27;_;9~" },
вашей строке \ 033 [27; 5; 9 ~
, используя символ подчеркивания в качестве подстановочного знака. Таблица отображает escape-последовательности в вещи, о которых знает tmux
:
tmux
игнорирует эти модификаторы Обычно он переводит вашу escape-последовательность в символ табуляции , который вы можете не заметить (кроме, возможно, запуска завершения имени). Если вы удерживаете клавишу, вы заставите клавиатуру повторять достаточно быстро, чтобы tmux
потерял счет времени и позволил отдельным байтам пройти (ограничение распознавания функциональных клавиш).
Если входящая escape-последовательность не соответствует одному из этих шаблонов и не найдена в списке специальных ключей из описания терминала, tmux
, скорее всего, полностью отбросит ввод (может быть неправильно истолкован из-за для повторения клавиш и т. д.).