-
-
Save jterrace/2911875 to your computer and use it in GitHub Desktop.
XVFB=/usr/bin/Xvfb | |
XVFBARGS=":1 -screen 0 1024x768x24 -ac +extension GLX +render -noreset" | |
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 |
@julianvargasalvarez you're probably past this after 2 months, but just incase & for others:
install xvfb (e.g. Through apt-get if you're using a Debian system)
put the contents of the gist as a file residing at /etc/init.d/xvfb
you'll probably need to make it executable chmod +x /etc/init.d/xvfb
and then you can start it with /etc/init.d/xvfb start
The script will start the virtual display at :1
so make sure to set your environment variable appropriately (export DISPLAY=:1
) before running whatever you want to run inside the virtual x frame buffer.
Hi, just wanted to say thanks, it helped. :)
Thanks for the script. I forked and added LSB init info to this script (would do a pull request but not possible with gists) if you want to add as well go for it
Thanks for this!
After stopping, however, I always receive the error:
Stopping virtual X frame buffer: Xvfbstart-stop-daemon: warning: failed to kill 7865: No such process.
7865 being the process number in the pidfile.
The script doesn't actually stop Xvfb
# /etc/init.d/xvfb start
Starting virtual X frame buffer: Xvfb.
# pgrep Xvfb
2699
# /etc/init.d/xvfb stop
Stopping virtual X frame buffer: Xvfbstart-stop-daemon: warning: failed to kill 7547: No such process
7547 is value from pidfile. Something goes wrong and process doesn't stop :(
Nice! Totally stealing this.
This did not automatically start Xvfb on boot. Instead, I used https://gist.github.com/dloman/8303932 and that works.
Very helpfull. Thanks!
rm $PIDFILE
missing
thx too!
is there a way to also include the
export DISPLAY=":1"
in this script?
This was very helpful, thank you! :)
Thanks this is helpful.
I am using this rather small but efficient like above
!/bin/bash
if [ -z "$1" ]; then
echo "basename $0
{start|stop}"
exit
fi
case "$1" in
start)
/usr/bin/Xvfb :0 -ac -screen 0 1960x2000x24 &;;
stop)
killall Xvfb;;
@AmrinderTweddle nice, but missing esac
Hi, i started Xvfb and after start tests i received:
org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
XPCOMGlueLoad error for file /home/jenkins/firefox/libmozgtk.so:
libgtk-3.so.0: cannot open shared object file: No such file or directory
Couldn't load XPCOM.
Firefox 46.01, Selenium 2.53.1
i haven't any problems with the same versions Firefox and Selenium on local machine
any ideas ?
I'm suddenly getting following error. Script worked before:
/etc/init.d/xvfb: line 4: syntax error near unexpected token `$'in\r''
'etc/init.d/xvfb: line 4: `case "$1" in
any ideas what could be wrong?
Edit:
It was windows line endings. Fixed it with sed -i 's/\r//' /etc/init.d/xvfb
Just for the interested.
I created the following little script that works like a charm...
#!/bin/bash
(
trap 'kill $ids' EXIT
Xvfb :8 -screen 8 1920x1080x24 -ac +extension GLX +render -noreset > /dev/null 2>&! &
ids="$ids $!"
DISPLAY=:8 java -Dwebdriver.gecko.driver=/<path to>/geckodriver -Dchrome.binary=/opt/google/chrome/chrome -Dwebdriver.chrome.bin=/usr/bin/google-chrome -Dwebdriver.chrome.driver=/<path to>/chromedriver -jar /<path to selenium>.jar -host 127.0.0.1 -port 4444 > /dev/null 2>&1 &
ids="$ids $!"
echo -e "\e[35m\e[1mSpinning up Selenium Server\e[0m"
while ! nc -z localhost 4444; do echo -en ".\e[0m" && sleep 1; done
#Your code here!#
)
What this does is that it launches Xvfb in the background and set the PID as a var.
The same happens with selenium..
Then it waits for selenium to be fully up and running by pinging the port until a valid response is received and only when that happens, then the rest of the code start..
As soon as all your code has been executed, regardless of the exit code, Xvfb is then shut down as well as Selenium forcing a clean session every time...
Thank you, very much!!!
How to render the environment in Google Colab?
xfvb-run with reset option fails with out of memory error. Did anyone fix this?
Cool man, thanks, could you pleas include some instructions on how to get this thing working, I am new to this topic. Thanks again.