আমি কীভাবে ডবিয়ান স্টার্টআপে এক্সভিএফবি শুরু করব?


9

আমি একটি ডেবিয়ান ওয়েব সার্ভার পেয়েছি যা আমি সেলেনিয়াম এবং পাইথনের মাধ্যমে মাঝে মধ্যে স্ক্রিন-স্ক্র্যাপিংয়ের জন্য ব্যবহার করছি।

আমি সেলভিয়াম দ্বারা নিয়ন্ত্রিত হওয়ার পরে ফায়ারফক্সের জন্য ভার্চুয়াল এক্স সার্ভার হিসাবে Xvfb ব্যবহার করি। প্রদত্ত যে আমি (মনে করি) আমাকে এটি ব্যবহার করে শুরু করতে sudoহবে, আমি মনে করি না প্রতিবার পাইথন থেকে এটি শুরু করা সম্ভব হবে ( আমার স্ট্যাক ওভারফ্লো প্রশ্ন দেখুন ), তাই আমি অনুভব করেছি যে আমি এটি সর্বদা চলতে পারি ।

আমি বর্তমানে এটি কমান্ড লাইনে এটি শুরু করি:

sudo Xvfb :99 -nolisten tcp -fbdir /var/run

প্রারম্ভকালে স্বয়ংক্রিয়ভাবে এটি করতে আমার কোন পদ্ধতিটি ব্যবহার করা উচিত? আমি এখানেcron পরামর্শ হিসাবে ব্যবহার করা উচিত ?

উত্তর:


6

ডিবিয়ান-এ আপনি Xvfb কমান্ডটি যুক্ত করতে পারেন /etc/rc.local। যদি এক্সভিএফবি ব্যাকগ্রাউন্ডে নিজেকে আলাদা না করে, &কমান্ডের শেষে একটি ব্যবহার করুন।

ক্রোন ব্যবহার করাও খুব কার্যকর হবে, যদিও থ্রি স্ক্রিপ্টগুলি আপনাকে স্টার্টআপ ক্রম কখন চলবে ঠিক তার উপর আরও নিয়ন্ত্রণ দেয় এবং পরিষেবাগুলি শুরু করার প্রচলিত উপায়।


আহা, দুর্দান্ত। সম্পাদনা কি নিজস্ব স্বতন্ত্র স্ক্রিপ্টগুলির /etc/rc.localসাহায্যে পছন্দ করা যায় update-rc.d?
পল ডি ওয়েট

2
@ পল আমি বলব update-rc.dপছন্দনীয় এবং অবশ্যই আরও সক্ষম, তবে rc.localদ্রুত এবং সহজ and এছাড়াও, আমি গিলস ঠিক বলে মনে করি, এটির মূল হিসাবে চালানোর কোনও কারণ নেই।
অ্যান্ডি

4

আপনার অনুমানটি অবৈধ: Xvfb কে রুট হিসাবে চালানোর কোনও কারণ নেই। আপনার সাধারন এক্স সার্ভারটি কেবলমাত্র রুট হিসাবে চালানো দরকার (অনেকগুলি কিন্তু সকলেরই নয়) যাতে এটি ভিডিও হার্ডওয়্যার অ্যাক্সেস করতে পারে; এটি সংজ্ঞা অনুসারে Xvfb এর জন্য কোনও সমস্যা নয়।

আপনি যদি শুরুতে Xvfb চালাতে চান তবে আপনি @rebootপাঁচটি তারিখ এবং সময় ক্ষেত্র প্রতিস্থাপনের সাথে ক্রোন ব্যবহার করতে পারেন । আপনি যে কোনও ব্যবহারকারীর ক্রোনট্যাবে এটি করতে পারবেন, কেবল মূলের নয়। তবে আমি বিষয়টি দেখতে পাচ্ছি না। আপনার স্ক্রিপ্টগুলি আরও জোরদার হবে যদি আপনি যখন প্রয়োজন হয় যখন আপনি এক্সভিএফবি শুরু করেন, ঠিক যেভাবে আপনি এটির মূল পরিকল্পনা করেছিলেন বলে মনে হয়।


বৈধ বিন্দু. একটি কমান্ডের জন্য এক্সভিএফবি চালানোর জন্য আপনি কেবল xvfb-runকমান্ডটি ব্যবহার করতে পারেন যা সাধারণত এক্সভিএফবি দিয়ে জাহাজ হয়। এখানে জন্য CLI রেফারেন্স xvfb-run manpages.debian.org/stretch/xvfb/xvfb-run.1.en.html । @ পল আপনি এটি নিম্নরূপে চালাতে পারেন:xvfb-run --server-args="-nolisten tcp -fbdir /var/run" python some-selenium.py
30'19

4

হিসাবে @Gilles প্রস্তাব, এটা চাহিদা চালানোর জন্য, বিশেষ করে যখন আপনি সেলেনিয়াম পরীক্ষার জন্য এটি ব্যবহার করছেন আরো উপযুক্ত। এখানে শেল কমান্ডের উদাহরণ দেওয়া হল:

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

উত্স: GitHub এ dloman / Xvfb (থেকে forked: jterrace / Xvfb )

এটি হিসাবে সংরক্ষণ করুন /etc/init.d/xvfbএবং সম্পাদনযোগ্য করুন, তারপরে এটি শুরু করুন:

/etc/init.d/xvfb start

শুরুতে স্বয়ংক্রিয়ভাবে চালাতে, চালান:

sudo update-rc.d xvfb defaults

এটি অটোরুন থেকে অপসারণ করতে, চালান:

sudo update-rc.d -f xvfb remove

environmentএক্স প্রোগ্রামগুলির দ্বারা স্বীকৃত হওয়ার জন্য ফাইলগুলিতে যুক্ত করুন , যেমন:

echo DISPLAY=":1" | sudo tee -a /etc/environment

সিস্টেমড সংস্করণটির জন্য এখানে সংস্করণ রয়েছে: dloman / xvfb.service


আমি জানি এটি এক বছরের পুরনো তবে এটির সাথে কাজ করার জন্য জাভাস্ক্রিপ্ট সেলেনিয়াম সংস্করণ পাওয়া যাবে বলে মনে হচ্ছে না। আমি বুট করার পরে যদি এটি চালিত হয় তবে আমি যখন পরিষেবা হিসাবে এটি শুরু করি তখন এটি xvfb সনাক্ত করে না like কোনও ধারণা কীভাবে আমি উভয়কে পরিষেবাতে শুরুতে কাজ করতে পারি?
মাসিন্দে মুলিরো

@ মাশিন্দেমিলিরো আপনি তখন অন্য একটি প্রশ্ন জিজ্ঞাসা করতে পারেন, যাতে উত্তরগুলি আপনার সমস্যার সাথে সুনির্দিষ্ট হতে আরও আপডেট করা যায়।
কেনারব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.