如何创建系统范围的自动启动文件?这将在运行 Maverick 桌面版的云服务器上进行。
我以 root 身份登录并使用 创建了一个自动启动文件System/Preferences/StartupApplications
,但它最终/root/.config/autostart
在重新启动时没有执行(据我所知)。自动启动文件用于调用一个 bash 脚本,该脚本会调用 VNC 服务器。
我将 .desktop 自动启动文件从复制/root/.config/autostart
到/etc/xdg/autostart
并重新启动。这似乎没有什么不同。
编辑正如评论中提到的,目标是运行我的 bash 脚本,该脚本在启动时启动 VNC 服务器,而不是在登录时启动。
答案1
首先,安装 TightVNC 服务器
sudo apt-get install tightvncserver
。为您希望以该身份登录的用户设置 VNC 服务器。首次运行“vncserver”时,它会要求您设置密码。仅允许 SSH 隧道或 VPN 连接。要在 VNC 会话启动时启动程序或会话,请修改
~/.vnc/xstartup
。以下是示例。#!/bin/sh xrdb $HOME/.Xresources xsetroot -solid black /opt/azureus/azureus & k3b & icewm-session &
将以下内容复制到
/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
使用 使脚本可执行
sudo chmod +x /etc/init.d/vncserver
。- 最后,使用 VNC 客户端通过端口 590X 连接到您的服务器,其中 X 是 vncserver 脚本中“DISPLAY”的值。在 OS X 上,我喜欢使用 VNC 的 Chicken。在 Windows 和 Linux 上,TightVNC 客户端运行良好。
答案2
一种可能性: /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)
您可以在其中输入任何命令,这些命令将以 root 身份执行。
我想,只要您不改变运行级别,这就可以满足您的目的。(如果您不知道什么是运行级别,没关系)。
答案3
这似乎是一篇旧帖子,但这个话题对一些用户来说可能仍然很有趣。要让 vnc 在启动时启动,您需要
- 安装 vnc 服务器软件(这里我们将使用 x11vnc)
- 配置启动脚本(用于启动vnc服务)
步骤 1-安装 x11vnc 服务器
在命令行中输入
sudo apt-get install x11vnc
为了增加安全性,您应该设置密码
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 社区帮助维基页面(参见这里)或者你可以尝试使用这个快速使用的食谱
希望这有帮助
答案4
将下面一行添加到 crontab 文件。这意味着关键字后的命令@reboot
在每次重启时都会执行。
@reboot /usr/bin/vncserver :1
要打开 crontab 文件,需要使用命令crontab -e