Tôi có một tập lệnh hoạt động trên máy tính xách tay của tôi hoạt động tốt miễn là tôi được khởi động vào phiên X, nhưng nếu tôi đang chạy trên máy chủ không cài đặt, tôi nhận được vô số lỗi nghiêm trọng từ Gtk. Tôi chắc chắn rằng giải pháp là sử dụng xvfb, nhưng tôi không thể tìm thấy một ví dụ làm việc.
Hỗ trợ đánh giá cao.
Tôi đã theo dõi bài viết này để chạy một khung thử nghiệm dựa trên Firefox trên máy chủ vào đầu năm nay. Các công cụ Xvfb khá đơn giản, chúng tôi chỉ cần đảm bảo tắt các điều khiển truy cập để X không nhận được tất cả sự uể oải. Một cái gì đó như thế này sẽ giúp bạn đi:
sudo apt-get install xvfb
sudo Xvfb :10 -ac
export DISPLAY=:10
# run your gubbins
Mặc dù bạn nên lưu ý rằng điều này sẽ không cung cấp mọi thứ mà một phiên máy tính để bàn thực sự có. Nếu bạn đã từng gặp phải tình huống đó (nơi bạn cần một máy tính để bàn thực sự), nó có thể là giá trị tách nó ra thành một máy ảo trên máy chủ. Một chút ít hiệu quả nhưng dặm hơn xách tay.
Chỉnh sửa từ Abraham:
Tôi vết thương bằng cách sử dụng phương pháp, nhưng tôi muốn nó trong một nhiệm vụ quản lý python. Việc triển khai của tôi cũng giống như vậy, nhưng nó trông giống như thế này:
from django.core.management.base import BaseCommand, CommandError
import subprocess, os
from multiprocessing import Process
def run():
sub = Process(target=subprocess.call, args=(('Xvfb', ':10', '-ac',), ))
sub.start()
env = os.environ.copy()
env['DISPLAY'] = ":10"
tasks = ('random','management','commands','thatneedDISPLAY:X')
for task in tasks:
p = subprocess.call(['python','manage.py',task],env=env)
sub.terminate()
class Command(BaseCommand):
def __init__(self):
BaseCommand.__init__(self)
args = 'none'
help = '''Run all daily tasks.'''
def handle(self, *args, **options):
run()