在登录Ubuntu 16.04.2 LTS之前启动Synergy(或任何应用程序)
在Intel x64上使用Ubuntu 16.04.2(Xenial) :{Both Processor和Ubuntu install}
这个问题已被回答了一百万次,但没有一个解决方案有效。 所以我不想复制一个问题,但它没有得到回答。
当我启动终端和sudo -i
,以下命令可以正常工作。
`root@user-pc:~# /usr/bin/synergyc -f --no-tray --debug INFO --name user-pc 192.168.xxx.xxx:24800 [2017-05-23T09:20:44] NOTE: started client [2017-05-23T09:21:01] NOTE: connecting to '192.168.5.100': 192.168.5.100:24800 [2017-05-23T09:21:01] NOTE: connected to server`
然后我能够利用该程序达到目的。 但是,我希望在登录前自动完成此操作,以便我可以从登录屏幕中使用它的目的。 (Synergy允许您在多台计算机上使用一个键盘和鼠标,几乎就像一个虚拟KVM,但不是点击开关,只需将鼠标滚动到下一个屏幕上就好像它们都连接到一个显卡一样)
我尝试的第一件事是rc.local :
#!/bin/sh -e # # 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. exec /usr/bin/synergyc -f --no-tray --debug INFO --name user-pc 192.168.5.100:24800 exit 0
~~~ ls /etc/rc.local -l
:
-rwxr-xr-x 1 root root 390 May 22 20:56 /etc/rc.local
所以它肯定是可执行的,但在重新启动PC时:
~~~ ps aux | grep syner
ps aux | grep syner
:
`root 990 0.0 0.0 63656 5372 ? Ssl 09:33 0:00 /usr/bin/synergyc -f --no-tray --debug INFO --name user-pc 192.168.5.100:24800`
然而它并没有按照它应该做的那样,甚至统一对话被称为说出错了,这只会在执行时发生,所以我可以安全地假设它就是这样。
我最安全的假设是程序正常运行,问题是rc.local在x会话启动之前运行,因此任何键盘和鼠标的挂钩都不会建立,这也可能只在开始时完成执行synergyc
而不是再次尝试。
我尝试的第二件事是“启动应用程序”,它可以工作,但直到登录后,这不是我们想要的东西。
如果我的假设是正确的:
什么是在x服务器启动后但在任何用户必须登录之前调用进程执行的方法。
如果我的假设不正确:
对于16.04.2,创建以下文件(它不存在)
/etc/lightdm/lightdm.conf
内容如下:
[Seat:*] autologin-user= [SeatDefaults] greeter-setup-script=/usr/bin/synergyc --name 192.168.xx
请关注此ubuntu wiki指南以获取更多信息。
编辑:
来自man synergyc
:
自动启动……
options不得包含
-f
或--no-daemon
。 重要的是确保没有旧的协同作用副本正在运行,因此它们不会干扰新的协同作用。
如果您正在使用GDM :,使用编辑器作为root用户,例如gksudo gedit
或sudo nano
– 这些步骤直接从https://help.ubuntu.com/community/SynergyHowto复制
在服务器上
在文件/ etc / gdm3 / Init / Default的末尾,就在显示exit 0的行之前添加以下内容:
/usr/bin/killall synergys while [ $(pgrep -x synergys) ]; do sleep 0.1; done /usr/bin/synergys
将以下内容添加到/ etc / gdm3 / PostLogin / Default的末尾(如果该文件尚不存在,则创建该文件):
/usr/bin/killall synergys while [ $(pgrep -x synergys) ]; do sleep 0.1; done
如果您创建了该文件,请确保使用以下命令执行该文件:
sudo chmod + x / etc / gdm3 / PostLogin / Default
现在,使用以下内容创建一个会话文件/etc/X11/Xsession.d/85synergys
/usr/bin/killall synergys while [ $(pgrep -x synergys) ]; do sleep 0.1; done /usr/bin/synergys
最后,我们必须使用以下命令使文件可执行:
sudo chmod +x /etc/X11/Xsession.d/85synergys
在客户端上
在/ etc / gdm3 / Init / Default的末尾,就在显示exit 0的行之前添加以下内容:
/usr/bin/killall synergyc while [ $(pgrep -x synergyc) ]; do sleep 0.1; done /usr/bin/synergyc
请务必使用运行协同作用的计算机的主机名或IP地址替换。
注意:如果您的系统已配置为自动登录,则此步骤可能会导致ubuntu在转到桌面之前挂起。 如果是这种情况,请从/ etc / gdm / Init / Default中删除这些行,一切都应该正常。 如果您的系统在此阶段挂起,您可以按CTRL-ALT-F1以通过命令行登录并编辑此文件。(在10.04LTS Lucid Lynx上测试)
将以下内容添加到/ etc / gdm3 / PostLogin / Default的末尾(如果该文件尚不存在,则创建该文件):
/usr/bin/killall synergyc while [ $(pgrep -x synergyc) ]; do sleep 0.1; done
如果您创建了该文件,请确保使用以下命令执行该文件:
sudo chmod +x /etc/gdm3/PostLogin/Default
现在,使用以下内容创建会话文件/etc/X11/Xsession.d/85synergyc
/usr/bin/killall synergyc while [ $(pgrep -x synergyc) ]; do sleep 0.1; done /usr/bin/synergyc
当任何用户登录时,这将运行synergyc。确保替换为运行协同作用的计算机的主机名或IP地址。 最后,我们必须使用以下命令使文件可执行:
sudo chmod +x /etc/X11/Xsession.d/85synergyc
进入你的创业……对于像我这样的新手这样做:
- “搜索您的计算机”键入start,单击“启动应用程序”
-
单击添加
- 名称:Synergy
- 命令:如果你愿意,可以浏览它的/ usr / bin / synergy
就是这样,不要添加任何“c”,没有任何结束协同作用。
现在我也有脚本运行,因为我太懒了删除它..所以两者都在那里。
[Seat:*] autologin-user= [SeatDefaults] greeter-setup-script=/usr/bin/synergyc --MediaServer 192.168.2.253:port
现在找到端口很有意思,它不是默认端口,所以在终端中这样做
netstat -atn
现在我怎么发现它是寻找你的服务器IP …我知道我的SYNERGY服务器IP所以对面就是我的客户端IP和端口号。