ฉันจะเริ่ม VNC Server ในการบู๊ตได้อย่างไร


29

ฉันจะสร้างไฟล์ autostart ทั่วทั้งระบบได้อย่างไร นี่จะเป็นบนเซิร์ฟเวอร์คลาวด์ที่ใช้งานเวอร์ชัน Maverick ของเดสก์ท็อป

ฉันเข้าสู่ระบบในฐานะ root และสร้างไฟล์ autostart โดยใช้System/Preferences/StartupApplicationsแต่มันสิ้นสุด/root/.config/autostartและไม่ได้ดำเนินการ (เท่าที่ฉันสามารถบอกได้) เมื่อรีบูตเครื่อง ไฟล์ autostart คือการเรียกใช้สคริปต์ bash ที่เรียกใช้เซิร์ฟเวอร์ VNC

ฉันคัดลอกไฟล์ autosart .desktop จาก/root/.config/autostartไปยัง/etc/xdg/autostartและรี สิ่งนี้ดูเหมือนจะไม่สร้างความแตกต่าง

แก้ไขดังที่กล่าวไว้ในความคิดเห็นมีวัตถุประสงค์เพื่อเรียกใช้สคริปต์ทุบตีของฉันซึ่งเริ่มต้นเซิร์ฟเวอร์ VNC เมื่อบูต; ไม่ได้เข้าสู่ระบบ


คุณหมายถึงการเริ่มอัตโนมัติเมื่อบูตหรือเริ่มอัตโนมัติเมื่อมีคน (ทุกคน) เข้าสู่ระบบ
fossfreedom

ฉันต้องการให้เซิร์ฟเวอร์ VNC ทำการบูตโดยอัตโนมัติ
H2ONaCl

1
ฉันได้พบคำตอบที่ SU SE superuser.com/questions/147109/…ลองดูสิ
wisemonkey

VNC ไม่ต้องการให้จอแสดงผลทำงานหรือไม่
desgua

คำตอบ:


19
  1. sudo apt-get install tightvncserverก่อนติดตั้งเซิร์ฟเวอร์ TightVNC

  2. ตั้งค่าเซิร์ฟเวอร์ VNC สำหรับผู้ใช้ที่คุณต้องการเข้าสู่ระบบ เมื่อคุณเรียกใช้ "vncserver" เป็นครั้งแรกระบบจะขอให้คุณตั้งรหัสผ่าน อนุญาตการเชื่อมต่อ SSH แบบช่องสัญญาณหรือ VPN เท่านั้น เพื่อเปิดโปรแกรมหรือเซสชั่นเมื่อช่วง VNC ~/.vnc/xstartupของคุณเริ่มต้นปรับเปลี่ยน นี่คือตัวอย่าง

    #!/bin/sh
    
    xrdb $HOME/.Xresources
    xsetroot -solid black
    /opt/azureus/azureus &
    k3b &
    icewm-session &
    
  3. /etc/init.d/vncserverคัดลอกต่อไปนี้ลง วิธีที่ง่ายที่สุดคือการคัดลอกไปยังคลิปบอร์ดของคุณเรียกใช้sudo -i && cat > /etc/init.d/vncserver && exitในเทอร์มินัลวางลงในและพิมพ์ CTRL-D อย่าลืมเปลี่ยนตัวแปร USER เป็นผู้ใช้ที่คุณต้องการให้เซิร์ฟเวอร์ VNC ทำงาน

    #!/bin/sh -e
    ### BEGIN INIT INFO
    # Provides:          vncserver
    # Required-Start:    networking
    # Default-Start:     3 4 5
    # Default-Stop:      0 6
    ### END INIT INFO
    
    PATH="$PATH:/usr/X11R6/bin/"
    
    # The Username:Group that will run VNC
    export USER="mythtv"
    #${RUNAS}
    
    # The display that VNC will use
    DISPLAY="1"
    
    # Color depth (between 8 and 32)
    DEPTH="16"
    
    # The Desktop geometry to use.
    #GEOMETRY="<WIDTH>x<HEIGHT>"
    #GEOMETRY="800x600"
    GEOMETRY="1024x768"
    #GEOMETRY="1280x1024"
    
    # The name that the VNC Desktop will have.
    NAME="my-vnc-server"
    
    OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
    
    . /lib/lsb/init-functions
    
    case "$1" in
    start)
    log_action_begin_msg "Starting vncserver for user '${USER}' on   localhost:${DISPLAY}"
    su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
    ;;
    
    stop)
    log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
    su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
    ;;
    
    restart)
    $0 stop
    $0 start
    ;;
    esac
    
    exit 0
    
  4. sudo chmod +x /etc/init.d/vncserverทำให้ปฏิบัติการสคริปต์ด้วย

  5. สุดท้ายเชื่อมต่อกับเซิร์ฟเวอร์ของคุณด้วยไคลเอนต์ VNC บนพอร์ต 590X โดยที่ X คือค่าของ "DISPLAY" ในสคริปต์ vncserver ใน OS X ฉันชอบใช้ Chicken of the VNC บน Windows และ Linux ไคลเอนต์ TightVNC ทำงานได้ดี

แหล่ง


superuser.com/questions/147109/นี้จาก wisemonkey เป็นคำตอบที่เทียบเท่ากับ stackexchange มันได้ผล. สังเกตว่าเส้นทางไป X11 อาจจำเป็นต้องปรับเปลี่ยน
H2ONaCl

TigerVNC ติดตั้ง/etc/init.d/vncserverซึ่งจะเริ่ม vncservers ทั้งหมดที่กำหนดค่าใน/etc/sysconfig/vncservers
Kashyap

5
นี่คือการคัดลอกวางจากabdevelopment.ca/blog/start-vnc-server-ubuntu-bootแต่มันออกจากขั้นตอนที่สำคัญที่สุดsudo update-rc.d vncserver defaults
ไห่ฟาน

3

ความเป็นไปได้หนึ่งอย่าง: / etc / rc.local

เนื้อหาบอกว่า:

# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits. 
#
# By default this script does nothing

บิตการดำเนินการถูกตั้งค่าเป็น 755 ในระบบของฉันแล้ว (chmod 755 /etc/rc.local)

คุณสามารถใส่คำสั่งใด ๆ ในนั้นซึ่งจะถูกดำเนินการเป็นราก

มันก็โอเคสำหรับวัตถุประสงค์ของคุณตราบใดที่คุณไม่เปลี่ยน runlevels ฉันเดา (ถ้าคุณไม่ทราบว่า runlevels คืออะไรไม่เป็นไร)


2
คำแนะนำนี้ไม่ได้ผลสำหรับฉัน
H2ONaCl


@CeesTimmerman ขอบคุณ แต่ tweaks ทั้งสองนั้นไม่ทำงาน
H2ONaCl

2

หากคุณกำลังใช้ TigerVNC แล้วมันจะติดตั้ง/etc/init.d/vncserverซึ่งจะเริ่ม vncservers ทั้งหมดที่กำหนดค่าใน/etc/sysconfig/vncservers เช่นต่อไปนี้จะเริ่มต้น 2 อินสแตนซ์ที่แสดง 1 & 2 เมื่อเริ่มต้นขึ้น

# <display>:<user>
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1920x1080"

VNCSERVERS="2:guest"
VNCSERVERARGS[2]="-geometry 800x600 -SecurityTypes None"

2

ดูเหมือนว่าจะเป็นการโพสต์เก่า แต่หัวข้ออาจยังน่าสนใจสำหรับผู้ใช้บางคน หากต้องการให้ vnc เริ่มทำงานเมื่อบู๊ตเครื่องคุณจะต้อง

  1. ติดตั้งซอฟต์แวร์เซิร์ฟเวอร์ vnc (ที่นี่เราจะใช้ x11vnc)
  2. กำหนดค่าสคริปต์เริ่มต้น (ใช้เพื่อเริ่มบริการ vnc)

ขั้นตอนที่ 1 - ติดตั้งเซิร์ฟเวอร์ x11vnc

จากบรรทัดคำสั่งพิมพ์

 sudo apt-get install x11vnc

เพื่อเพิ่มความปลอดภัยคุณควรตั้งค่า pwd

sudo x11vnc -storepasswd

ขั้นตอนที่ 2 - กำหนดค่าสคริปต์เริ่มต้นของคุณ

  • ถ้ารุ่น ubuntu ของคุณต่ำกว่า 15.04

คุณสร้างไฟล์กำหนดค่าภายใต้/etc/init.d/x11vnc.confและเติมด้วยคำสั่งที่ถูกต้องที่จะดำเนินการ

start on login-session-start  
script  
/usr/bin/x11vnc -xkb -auth
/var/run/lightdm/root/:0
-noxrecord -noxfixes -noxdamage 
-rfbauth /etc/x11vnc.pass 
-forever -bg -rfbport 5900 -o /var/log/x11vnc.log  
end script
  • ถ้ารุ่น Ubuntu ของคุณคือ 15.04 หรือใหม่กว่า

ระบบเหล่านี้ใช้ systemd และคุณจะต้องสร้างไฟล์หน่วยบริการใต้/lib/systemd/system/x11vnc.service และเติมด้วยคำสั่งที่ถูกต้องที่จะดำเนินการ

[Unit] Description=Start x11vnc at startup. After=multi-user.target

[Service] Type=simple ExecStart=/usr/bin/x11vnc -auth guess -forever
-loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5900 -shared

[Install] WantedBy=multi-user.target

โหลดบริการซ้ำ

sudo systemctl daemon-reload

sudo systemctl enable x11vnc.service

คุณสามารถค้นหาข้อมูลโดยละเอียดเกี่ยวกับวิธีใช้หน้าวิกิชุมชนช่วยเหลือของ Ubuntu (ดูที่นี่ ) หรือคุณสามารถลองใช้ผู้รับด่วน

  • สำหรับ Ubuntu เวอร์ชันต่ำกว่า 15.04ให้ตรวจสอบโพสต์นี้
  • สำหรับ Ubuntu เวอร์ชัน15.04 หรือใหม่กว่าให้ตรวจสอบโพสต์นี้

หวังว่านี่จะเป็นประโยชน์


1

เพิ่มบรรทัดด้านล่างลงในไฟล์ crontab ซึ่งหมายความว่าคำสั่งหลังจากคำหลัก@rebootถูกเรียกใช้งานในระหว่างการรีบูต

@reboot /usr/bin/vncserver :1

ในการเปิดไฟล์ crontab จำเป็นต้องใช้คำสั่ง crontab -e


เช่นเดียวกับคำตอบนี้ 6 ปี: askubuntu.com/a/124079/158442
muru

0

คุณสามารถให้ cron สตาร์ทสิ่งต่าง ๆ ให้คุณในเวลาบูต เพียงแค่ใช้สตริง "@reboot" แทนตัวเลขที่คุณปกติจะใช้เพื่อระบุเวลาที่สิ่งที่ควรจะทำงาน

ตัวอย่างเช่นต่อไปนี้เป็นวิธีที่ฉันเริ่ม Dropbox บนเครื่องที่ไม่เริ่มโดยอัตโนมัติ:

# m h  dom mon dow   command
@reboot         /usr/bin/dropbox start

หน้านี้บอกว่าใช้งานได้หากระบบรีบูทจริง ๆ (ไม่มีการบู๊ตแบบเย็น)
Cees Timmerman

0

'sudo update-rc.d vncserver ค่าเริ่มต้น' รายงานว่ามีการขาดหายไป; "Required-Stop:" (เว้นว่างไว้) ดังนั้นฉันจึงเพิ่มมันเหมือนด้านล่าง และไม่มีการเตือนอีกแล้ว

    #!/bin/sh -e
    ### BEGIN INIT INFO
    # Provides:          vncserver
    # Required-Start:    networking
    # Required-Stop:     
    # Default-Start:     3 4 5
    # Default-Stop:      0 6
    ### END INIT INFO
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.