在无头debian的前台自动启动脚本



有人知道怎么做吗?帮助将是非常感激的,我已经在这个问题上挣扎了一段时间了,我似乎找不到任何方法让脚本自动启动并显示在前景中,如果我手动启动它们的话。

我想做的基本上只是打开vm,让它启动,然后观察脚本运行并将结果回显到控制台或脚本通常显示的内容,如果手动运行

我已经能够使用Cron和systemd来运行我想在启动时运行的脚本,但是我无法找到任何方法来让这些脚本在屏幕上运行,因为如果我输入。/startup_script.sh

我目前正在一个无头Debian 11虚拟机中测试一切。自动以root身份登录已经启用。我只需要完成最后一步,但我不知道该怎么做。

您可以启动tmux会话并向它发送密钥以启动脚本,如下所示:

tsid="session_name"
my_script="/home/script.sh"
# create new tmux session
tmux new-session -d -s ${tsid}

# launch the script in the tmux session
echo "launching script in a tmux session called ${tsid}"
tmux send-keys -t ${tsid} "${$my_script}" 'C-m'

我做了一些类似的事情来开始"quad-pane"我的树莓派设备。我可以通过ssh向每个窗格发送命令,而无需查看我发送命令的屏幕。我可以从任何ssh会话发送命令到窗格,而不需要实际连接到gui,或者在"会话"中。这样,另一台机器可以在监控显示器上显示会话,我可以暂时通过ssh向主机发送命令,它将显示在那里,而无需实际连接到窗口。窗格可以运行脚本,并在每个各自的屏幕/窗格上输出,等待我稍后连接并查看它。我时不时地打开我的四轴摄像头看看发生了什么……然后断开连接,让它全部运行。

# function to send an arbitrary command to a tmux pane
# arg1: full id of pane, e.g. "pi4-host01:quad-feed.0"
# arg2+ command(s) to send to pane
tmux_send_command_to_pane_id() {
local tpid cmd
tpid="${1:-0}"
cmd="${@}"
echo "cmd to send to pane: ${tpid}: ${cmd}"
tmux send-keys -t "${tpid}" "${cmd}" 'C-m'
}

如果您将这样的东西与cron或systemd配对,我可以想象您可以相对较快地达到您的目标。它确实依赖于安装tmux。我知道别人也用screen,但不知什么原因,我已经成为tmux的粉丝了。

关于系统脚本的一个很好的答案在这里->https://unix.stackexchange.com/a/47715/376937

这里还有一个问题可能会有所帮助:Tmux命令在活动窗格上运行shell命令?

最新更新