Даже при том, что Вы уже получили ответ на свой вопрос, другие могли бы найти это полезным.
Команды Vim могут также быть указаны в файле, который выполняется с помощью -s
опция:
vim -s commands.txt file
Пример:
echo 'gg=G' > indent.txt
echo ':wq' >> indent.txt
vim -s indent.txt file
Это будет использовать Vim, чтобы расположить содержание с отступом файла, сохранить и выход.
Команда pgrep
печатает список PIDs для всех процессов (кроме себя) то соответствие a grep
- совместимое регулярное выражение.
Это ничего не печатает, при отсутствии соответствий.
Это должно быть достаточным тестом: [ $(pgrep process | wc) -gt 0 ]
верно, если процесс работает. Ложь, если нет.
Я не знаком с psg
, но я знаю (твердый путь, так сказать), если я работаю ps ax | grep progname
видеть, работает ли какой-либо процесс, который содержит progname
, Я буду всегда получать a с тех пор grep progname
самостоятельно команда, которая содержит "progname".
Я не знаю жемчуг, но в ударе, я обхожу это как это, например, если я хочу проверить, работает ли какой-либо экземпляр progname, я работаю ps ax | grep -c "[p]rogname"
, который решает проблему всегда получения да.
Ваш regexp m/dtllst $myNode | $myNode/
будет соответствовать (в особенности) любому возникновению $myNode
. Конструкцией, psg dtllst | grep $myNode
возвратит что-то, что соответствует $myNode
, так Вы regexp всегда соответствует.
Если Вы не можете последовать совету и использованию других людей pgrep
или ps ... | grep
или варианты этого, Вы могли также:
набор "$checkProc = psg dtllst | grep 'dtllst $myNode'
;" и затем просто тест, если $checkProc
непусто, или
набор "$checkProc = psg dtllst
;" и затем соответствуйте ему против m/dtllst $myNode/
Используйте Proc:: модуль ProcessTable CPAN и просто ищет запись $p
таким образом, что $p->cmdline =~ m/dtllst $myNode/
Я не знаю, является ли это тем, что Вы ищете, но это - то, как можно получить PID программы:
ps -e -o pid= -o args= | sed 's/^\s*//' | grep 'dtllst pe99' | cut -d' ' -f1
Это произведет все, если любой PIDs для данной команды с аргументами.
Можно использовать это для передачи по каналу его в другую программу, если Вам нравится, и если Вам нужны все PIDs сразу, можно перенести все это в $()
:
MyPIDs=$(ps -e -o pid= -o args= | sed 's/^\s*//' | grep 'dtllst pe99' | cut -d' ' -f1)
echo $MyPIDs
pgrep
. Это позволяет искать полное имя командной строки. Например, если программа запущена сjava -jar bla.jar
,pgrep bla
перестал бы работать, в то время какpgrep -f bla
успешно выполнился бы. – bbaja42 04.01.2012, 07:34[
. Просто используйтеpgrep process > /dev/null 2>&1
. – Chris Down 25.02.2012, 16:25