我一直在运行带有 sysV init 脚本的 Minecraft 服务器。这是一个非常好的脚本;它在“屏幕”中运行 Minecraft;它可以确保 Minecraft 永远不会启动两次;它会等待 Minecraft 在停止时关闭。它甚至可以向 Minecraft 传递命令/etc/init.d/minecraft command <command>——这对于计划备份很有用。
现在我已经升级到 Debian Jessie,它有 systemd。但是现在,我保留我的旧式脚本,因为它很棒。尽管如此,我实际上非常支持 systemd - 它看起来确实有很多改进、简化和集中化。我记得 systemd 开发人员承诺“旧的 sysV 脚本会像以前一样工作”,但事实证明这并不容易!
我记得之前有一些启动脚本有问题;显然,仅仅将脚本放入 /etc/init.d 并将其标记为可执行已经不够了 - 我必须“启用”它们才能使它们工作。“好吧,”我想,“现在它被 systemd 识别了,现在我可以通过 systemctl 来控制它——它可能应该只使用我的旧脚本来处理命令!” 事实证明我错了。
它不能正常启动,不能正常停止,不能正常显示状态,更不用说缺少“命令”命令了。我已经开始寻找有关 systemd 如何比 sysV 更好的信息,以及我可以做些什么来简化和增强一切。显然, systemctl 只是自己制作了最简单的单元文件,希望它就足够了!现在我想知道 systemd 是否真的无法处理如此复杂的情况!
我看到一个普通的 systemd 服务基本上由一些要求和 ExecStart 组成。就像 systemd 需要监视守护进程一样。输入条件和可执行文件名称,systemd 将处理它的启动、停止以及其他事情。但是没那么容易!!你不能只是杀死 Minecraft 的 PID(更不用说它与屏幕的 PID 不同)!我想为每个动作编写更复杂的脚本,甚至可能添加像“命令”这样的新动作(好吧,我已经接受了这可能根本不可能)。对于“状态”,它必须监视 Java 进程,对于停止,它必须向 Minecraft 控制台发送命令,然后等待 Java 和屏幕都死掉!我还想确保 systemd 不会只是尝试 SIGHUP 或 SIGINT 或 SIGTERM 它!
那么,真正允许我们利用 systemd 为我们提供的所有“改进”和“简化”的巧妙、现代、“预期的 systemd 方式”是什么?当然,它应该能够处理比在一行中启动并用 SIGINT …
我有一些需要降低灵敏度的高灵敏度鼠标。对此的一般解决方案似乎是将坐标变换矩阵设置为可接受的值。所以我使用以下值:
xinput --set-prop 19 'Coordinate Transformation Matrix' 0.25 0 0 0 0.25 0 0 0 1
Run Code Online (Sandbox Code Playgroud)
这很好用,除了我终于意识到它在玩我的世界时给我带来了问题。发生的情况是,当我按下任何让我返回光标的键时,只要我移动鼠标,光标就会跳到屏幕的左上象限。确切位置与我使用的缩放数字成正比,因此 0.25 将光标移近角而不是 0.45。此外,如果我使用大于 1 的值,光标将移动到显示器的不同象限。当然,值为 1 时,光标会按预期留在屏幕中央。这仅发生在第一次鼠标输入时,之后鼠标行为正常。
我需要有关如何避免这种光标移动的建议。这很令人抓狂。我也不认为这严格来说是 minecraft 问题,我怀疑它发生在其他获取和释放鼠标光标的 Java 应用程序中。
更多信息,我的机器正在运行 Kubuntu 18.04 和 openJDK 10.0.2。
编辑:添加更多信息。在我的正常工作流程中,我开始在其他地方注意到这种行为。不清楚何时,但可能与 KDE 如何处理鼠标事件和窗口焦点有关。我使用跟随鼠标 - 鼠标优先。
我正在尝试让 Minecraft 服务器在 Fedora 上使用 systemd 在计算机启动时运行。我有一些自我强加的标准,我需要满足这些标准才能正确管理我的服务器:
\nminecraft我使用主目录创建的系统用户身份运行/opt/minecraft。我尝试通过addusering 然后添加行User=minecraft和WorkingDirectory=/opt/minecraft/WorkingDirectory为WorkingDirectory=/opt/minecraft/%i让我传入目录。/run/minecraft%I,但我无法让它工作。如果您不熟悉 Minecraft 服务器,他们有一个交互式控制台,您可以将命令传递到其中。过去,我使用过在会话tmux send中运行的服务器tmux,但问题是它不会自动启动并且感觉不优雅。/usr/local/lib/systemd/system/minecraft@.service:
[Unit]\nDescription=Minecraft server: %i\n\n# only run after networking is ready\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nType=simple\n\n# restart if the server crashes\nRestart=on-failure\nRestartSec=5s\n\n# set the input and outputs to a socket unit and the journal resp.\nSockets=minecraft@%i.socket\nStandardInput=socket \nStandardOutput=journal\nStandardError=journal\n\n# set the user and directory to …Run Code Online (Sandbox Code Playgroud)