Проблема здесь, как @Florian perceptively выдумал, заключается в том, что оболочка расширяет символы glob в вашей строке поиска до подходящего имени файла перед передачей строки на grep.
Запуск ps aux | grep foo проблематичен, так как команда grep foo сама будет соответствовать foo и поэтому появится на выходе. Для этого существуют два распространенных, хотя и запутанных, обходных решения. Вы либо добавляете grep -v grep в конец трубы, либо используете grep [f]oo. Поскольку grep работает с регулярными выражениями, он будет рассматривать [f] как «любой символ в списке символов внутри скобок». Поскольку единственный символ в скобках - f, [f]oo эквивалентен foo. Однако процесс grep, отображаемый в результатах ps, будет иметь строку [f]oo и, следовательно, не найден grep.
Это становится более сложным, если, как вам кажется, у вас есть файл с именем foo в вашем текущем каталоге. Поскольку вы не указали выражение, которое вы дали grep (поскольку вы использовали [s]elenium, а не '[s]elenium' или "[s]elenium"), оболочка будет рассматривать его как , вычисленный и развернуть это соответствие имени файла. Это делает трюк [s]elenium бесполезным, поскольку то, что фактически передано в grep, это selenium, а не [s]elenium, поэтому grep будет соответствовать самому себе.
Все это, однако, происходит только потому, что вы не используете нужный инструмент для задания. Как это часто бывает, есть приложение для этого! Не используйте grep + ps. Вместо этого используйте pgrep, который предназначен для того, чтобы делать именно то, что вы хотите:
NAME
pgrep, pkill - look up or signal processes based on name and other
attributes
SYNOPSIS
pgrep [options] pattern
pkill [options] pattern
DESCRIPTION
pgrep looks through the currently running processes and lists the
process IDs which match the selection criteria to stdout. All the cri‐
teria have to match. For example,
$ pgrep -u root sshd
Итак, в вашем случае вы можете просто сделать
pgrep selenium
Или, поскольку вы 'запустив его через java, используйте -f, который просматривает всю командную строку:
pgrep -f selenium
Tcpdf также хорош для создания pdf в php http://www.tcpdf.org/
Мы используем pdflib для создания PDF-файлов из наших приложений rails. Он имеет привязки для PHP и множество других языков.
Мы используем коммерческую версию, но у них также есть pdflib , который имеет некоторые ограничения.
К сожалению, это позволяет создавать PDF-файлы.
Если вы хотите открыть и «изменить» существующие файлы, pdflib действительно предоставляет продукт, который делает это, но стоит LOT
Документация расширения PDF / pdflib в PHP разрежена (что было отмечено в bugs.php.net). Я рекомендую вам использовать библиотеку Zend.
Для создания PDF-документов есть бесплатный и простой в использовании класс PDF. Это называется FPDF. В сочетании с FPDI (http://www.setasign.de/products/pdf-php-solutions/fpdi) можно даже редактировать PDF-документы. Следующий код показывает, как использовать FPDF и FPDI для заполнения существующего подарочного купона с пользовательскими данными.
require_once('fpdf.php');
require_once('fpdi.php');
$pdf = new FPDI();
$pdf->AddPage();
$pdf->setSourceFile('gift_coupon.pdf');
// import page 1
$tplIdx = $this->pdf->importPage(1);
//use the imported page and place it at point 0,0; calculate width and height
//automaticallay and ajust the page size to the size of the imported page
$this->pdf->useTemplate($tplIdx, 0, 0, 0, 0, true);
// now write some text above the imported page
$this->pdf->SetFont('Arial', '', '13');
$this->pdf->SetTextColor(0,0,0);
//set position in pdf document
$this->pdf->SetXY(20, 20);
//first parameter defines the line height
$this->pdf->Write(0, 'gift code');
//force the browser to download the output
$this->pdf->Output('gift_coupon_generated.pdf', 'D');
Не знаю, является ли это вариантом, но он будет очень похож на библиотеку PDF Zend, но вам не нужно загружать кучу дополнительного кода (рамки zend). Он просто расширяет FPDF.
http://www.setasign.de/products/pdf-php-solutions/fpdi/
Здесь вы можете в принципе сделать то же самое. Загрузите PDF-файл, напишите поверх него, а затем сохраните его в новом PDF-файле. В FPDI вы в основном вставляете PDF в качестве изображения, чтобы вы могли поместить все, что захотите.
Но опять же, это использует FPDF, поэтому, если вы не хотите использовать это, тогда это не будет работа.
Если вам нужны действительно простые PDF-файлы, то Zend или FPDF в порядке. Однако мне трудно и сложно работать.
По этой причине я использую FPDF , который автоматически преобразует HTML и CSS в документы PDF. Вы можете выложить шаблон так же, как и для HTML-страницы, и использовать стандартный синтаксис HTML. Вы даже можете включить внешний файл CSS. Библиотека не идеальна, и очень сложная разметка или css иногда становятся искалеченными, но я не нашел ничего другого, что работает.
Я действительно возлагал большие надежды на dompdf (это крутая идея), но проблема позиционирования является основным фактором в использовании fpdf. Хотя это утомительно, поскольку каждый элемент должен быть установлен; это мощно, поскольку все выходят.
Я помещаю изображение под своим рабочим пространством в документе, чтобы поместить мой макет сверху. Его всегда было достаточно даже для столбцов (требуется крошечный бит вычисления строки php, но ничего страшного нет).
Удачи.
Zend Framework может загружать и редактировать существующие файлы PDF. Я думаю, что он поддерживает ревизии тоже.
Я использую его для создания документов в проекте, и он отлично работает. Никогда не редактировался.
Проверьте документ здесь