Как предположил @Gilles , он более подходит для запуска по запросу, особенно когда вы используете его для тестирования Selenium. Вот пример команд оболочки:
export DISPLAY=:99
xdpyinfo -display $DISPLAY > /dev/null || Xvfb $DISPLAY -screen 0 1024x768x16 &
Проверка отображения с помощью xdpyinfo
перед тем, как убедиться, что вы не запускаете виртуальный буфер кадра дважды.
Если вам действительно нужно запускать его при запуске, вы можете попробовать следующий сценарий init.d :
#!/bin/sh
XVFB=/usr/bin/Xvfb
XVFBARGS=":1 -screen 0 1024x768x24 -ac +extension GLX +render -noreset -nolisten tcp"
PIDFILE=/var/run/xvfb.pid
case "$1" in
start)
echo -n "Starting virtual X frame buffer: Xvfb"
start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile --background --exec $XVFB -- $XVFBARGS
echo "."
;;
stop)
echo -n "Stopping virtual X frame buffer: Xvfb"
start-stop-daemon --stop --quiet --pidfile $PIDFILE
echo "."
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/xvfb {start|stop|restart}"
exit 1
esac
exit 0
Источник: dloman / xvfb на GitHub (разветвлено от: jterrace / xvfb )
Сохраните его как /etc/init.d/xvfb
и сделайте его исполняемым, затем запустите его как:
/etc/init.d/xvfb start
Для автоматического запуска при запуске запустите:
sudo update-rc.d xvfb defaults
Чтобы удалить его из автозапуска, запустите:
sudo update-rc.d -f xvfb remove
Также добавьте в файл среды
, который будет распознаваться программами X, например:
echo DISPLAY=":1" | sudo tee -a /etc/environment
Вот версия для версии systemd: dloman / xvfb .service .
Я бы использовал диалект регулярных выражений perl. Если вы работаете в системе с sed
, то, скорее всего, у вас есть perl.
<KeyValue key="EMPTY_SEARCH_CRITERIA" type="String" value="CS_CODE" comment="Configured empty search criteria."/>
perl -i -pe 's/(value=)".*?"/\1"some_replacement_string"/g' <filename>
Возможно, вы захотите проверить это, сначала напечатав в терминале.
perl -pe 's/(value=)".*?"/\1"some_replacement_string"/g' <filename>
Или создайте резервную копию с расширением .bak
perl -i.bak -pe 's/(value=)".*?"/\1"some_replacement_string"/g' <filename>
Объяснение регулярных выражений:
sed
не поддерживает не жадные операторы, но вы можете использовать трюк из другого ответа [^"]*"
, который означает "заглатывание" всех символов, которые не являются " до ". Это эффективно делает то же самое в данном случае.