经过一番谷歌搜索,我找到了一种将 BASH 脚本编译为二进制可执行文件的方法(使用shc
)。
我知道 shell 是一种解释性语言,但是这个编译器有什么作用呢?它会以任何方式提高我的脚本的性能吗?
我知道这个问题已经被问过并回答过,但我找到的解决方案会侦听空间并输入:
while [ "$key" != '' ]; do
read -n1 -s -r key
done
Run Code Online (Sandbox Code Playgroud)
有没有办法(在bash 中)制作一个只等待空格键的脚本?
我已经设置了一个 systemd 服务来运行我的 Minecraft 服务器。现在,我需要它在服务器崩溃时重复启动脚本。到目前为止,这是我的代码:
#!/bin/bash
while true; do
cd /home/mcserver/Spigot
echo Starting Spigot...
echo 600 > ./restart-info
java -jar spigot.jar
echo Server has stopped or crashed, starting again in 5 minutes...
sleep 300
done
Run Code Online (Sandbox Code Playgroud)
我实际上可以查看spigot.jar
using的输出systemctl status spigot
,但我也想控制服务器控制台,也许使用screen
.
当我尝试这样做时:
screen -S "Spigot" java -jar spigot.jar
Run Code Online (Sandbox Code Playgroud)
我会得到Must be connected to a terminal
错误。此命令仅适用于终端(而不适用于脚本),我可以使用screen -r
.
有没有办法“绕过”这个屏幕错误?我已经尝试script /dev/null
在屏幕命令之前放置。我不想将 screen 与 -d 和 -m 一起使用,因为它会在后台运行并且脚本会不断重新启动我的服务器。
bash ×2
compiler ×1
compiling ×1
gnu-screen ×1
performance ×1
read ×1
shell ×1
shell-script ×1
wait ×1